データベースファイルを移動するために必要な単純なシェルスクリプト

データベースファイルを移動するために必要な単純なシェルスクリプト

使っていますMySQL存在するUbuntuマシン。

以下のデータベースファイルを物理的に移動する必要があります/var/lib/mysql/(すべてのデータベースディレクトリがここにあります)。

2つのデータベースがあるとしましょう。db_1そしてdb_2だから、パスの下に両方のディレクトリ(と)が表示されますdb_1/。これら2つのデータベースディレクトリには、データベース内のすべてのテーブル情報を格納するファイルがたくさんあります。db_2//var/lib/mysql/.frm .MYD .MYI

たとえば、db_1/ディレクトリには次のファイルが含まれています。

/var/lib/mysql/db_1# ls

cars.frm 
cars.MYD 
cars.MYI

customers.frm
customers.MYD
customers.MYI

departments.frm
departments.MYD
departments.MYI

... 

含む顧客部門テーブル情報。

次の簡単なタスクを実行するには、シェルスクリプトが必要です。

  1. db_1_tempという名前の新しいディレクトリを作成します。/var/lib/mysql/

  2. 関連ファイルの移動そして顧客ディレクトリのテーブルをディレクトリdb_1db_1_temp

  3. db_2ディレクトリ内のファイルをdb_1ディレクトリに移動

ノート、ユーザーに必要アクセス権 /var/lib/mysql/

他のアプリケーションで実行できるように、これらの内容を.shファイルに入れる必要があります。

申し訳ありません。シェルスクリプトについてはわかりませんが、このようなものが必要です。誰でも助けてくれてありがとう。このシェルスクリプトは難しくないと思います。今は他のソフトウェア開発に忙しいので、時間をかけてシェルを学びようとしています。ありがとうございます!

答え1

データベースディレクトリの名前を直接変更しないでください。代わりに、データベースをダンプし、新しいデータベース名を作成し(新しいディレクトリ名が作成されます)、データベースを新しいデータベース名に再ダンプします。

mysqldump -u username -p  olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

データベースが正常に動作していることを確認したら、データを削除できます。

mysqladmin -u username -p drop oldatabase.

バラよりここ参考用。

あなたの場合は、tmpデータベースを作成し、db_1データベースをその一時データベースにダンプし、db_2データベースを削除して再作成し、db_2データベースを空の新しいdb_1データベースにダンプできます。

答え2

まあ、ファイルを移動するだけなので複雑なことはありません。 3つのmvコマンドだけが必要です。

#!/bin/bash

mkdir /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_1/cars* /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_1/customers* /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_2/* /var/lib/mysql/db_1_temp

ただし、新しいデータベースを使用する予定の場合は、空の新しいデータベースを作成し、mysqldumpを使用して必要なテーブルをインポートすることをお勧めします。

関連情報