MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  MySQL データベースのほかのマシンへのコピー

2.11.14 MySQL データベースのほかのマシンへのコピー

データベースを異なるアーキテクチャー間で移動する必要がある場合、mysqldump を使用して SQL ステートメントを含むファイルを作成します。 次にそのファイルを別のマシンに転送して mysql クライアントへの入力として扱います。

利用できるオプションを表示するには mysqldump --help を使用します。

注記

GTID がダンプ (gtid_mode=ON) を作成するサーバーで使用されている場合、デフォルトでは、mysqldumpgtid_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 を使用するよりも非常に速いです。 次のコマンドで、DUMPDIRmysqldump の出力の保存に使用されるディレクトリのフルパス名です。

最初に、その出力ファイルのディレクトリを作成してデータベースをダンプします。

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 を実行してサーバーに付与テーブルの情報をロードさせます。


関連キーワード:  インストール, データベース, マシン, mysqldump, サーバー, ソース, 確認, 起動, パッケージ, ディレクトリ