データベースを異なるアーキテクチャー間で移動する必要がある場合、mysqldump を使用して SQL ステートメントを含むファイルを作成します。 次にそのファイルを別のマシンに転送して mysql クライアントへの入力として扱います。
利用できるオプションを表示するには mysqldump --help を使用します。
GTID がダンプ (gtid_mode=ON
) を作成するサーバーで使用されている場合、デフォルトでは、mysqldump は gtid_executed
セットの内容をダンプに含めて、これらを新しいマシンに転送します。 この結果は、関係する MySQL Server のバージョンによって異なる場合があります。 mysqldump's --set-gtid-purged
オプションの説明を確認して、使用しているバージョンで何が起こるか、およびデフォルトの動作の結果が状況に適していない場合の動作の変更方法を確認します。
データベースを 2 つのマシンで間で移動するもっとも容易な (ただし、速くはない) 方法は、データベースを搭載したマシン上で次のコマンドを実行することです。
mysqladmin -h 'other_hostname' create db_name
mysqldump db_name | mysql -h 'other_hostname' db_name
データベースをリモートマシンから速度の遅いネットワークを介してコピーするには、次のコマンドを使用できます。
mysqladmin create db_name
mysqldump -h 'other_hostname' --compress db_name | mysql db_name
ダンプをファイルに保存して、そのファイルをターゲットマシンに転送し、そのファイルをそこのデータベースにロードすることもできます。 たとえば、データベースをソースマシンの圧縮ファイルに次のようにダンプできます。
mysqldump --quick db_name | gzip > db_name.gz
データベースのコンテンツを含んだファイルをターゲットマシンに転送し、そこで次のコマンドを実行します。
mysqladmin create db_name
gunzip < db_name.gz | mysql db_name
データベースの転送に mysqldump および mysqlimport を使用することもできます。 大きなテーブルの場合、これは単に mysqldump を使用するよりも非常に速いです。 次のコマンドで、DUMPDIR
は mysqldump の出力の保存に使用されるディレクトリのフルパス名です。
最初に、その出力ファイルのディレクトリを作成してデータベースをダンプします。
mkdir DUMPDIR
mysqldump --tab=DUMPDIR
db_name
次に DUMPDIR
ディレクトリのファイルをターゲットマシンの相当するディレクトリに転送して、そのファイルをそこの MySQL にロードします。
mysqladmin create db_name # create database
cat DUMPDIR/*.sql | mysql db_name # create tables in database
mysqlimport db_name
DUMPDIR/*.txt # load data into tables
mysql
データベースをコピーすることを忘れないでください。付与テーブルがそこに格納されているからです。 新しいマシンで mysql
データベースが用意できるまで、コマンドを MySQL root
ユーザーとして実行しなければならない場合があります。
mysql
データベースを新しいマシンにインポートしたら、mysqladmin flush-privileges を実行してサーバーに付与テーブルの情報をロードさせます。