データベースを異なるアーキテクチャー間で移動する必要がある場合、mysqldump を使用して SQL ステートメントを含むファイルを作成します。次にそのファイルを別のマシンに転送して mysql クライアントへの入力として扱います。
同じ浮動小数点形式をサポートしている異なるアーキテクチャー間で、MyISAM
テーブルの .frm
、.MYI
、および .MYD
ファイルをコピーできます。(MySQL はバイトスワッピング問題を処理します。)セクション15.2「MyISAM ストレージエンジン」を参照してください。
利用できるオプションを表示するには mysqldump --help を使用します。
データベースを 2 つのマシンで間で移動するもっとも容易な (ただし、速くはない) 方法は、データベースを搭載したマシン上で次のコマンドを実行することです。
shell> mysqladmin -h 'other_hostname' create db_name
shell> mysqldump db_name | mysql -h 'other_hostname' db_name
データベースをリモートマシンから速度の遅いネットワークを介してコピーするには、次のコマンドを使用できます。
shell> mysqladmin create db_name
shell> mysqldump -h 'other_hostname' --compress db_name | mysql db_name
ダンプをファイルに保存して、そのファイルをターゲットマシンに転送し、そのファイルをそこのデータベースにロードすることもできます。たとえば、データベースをソースマシンの圧縮ファイルに次のようにダンプできます。
shell> mysqldump --quick db_name | gzip > db_name.gz
データベースのコンテンツを含んだファイルをターゲットマシンに転送し、そこで次のコマンドを実行します。
shell> mysqladmin create db_name
shell> gunzip < db_name.gz | mysql db_name
データベースの転送に mysqldump および mysqlimport を使用することもできます。大きなテーブルの場合、これは単に mysqldump を使用するよりも非常に速いです。次のコマンドで、DUMPDIR
は mysqldump の出力の保存に使用されるディレクトリのフルパス名です。
最初に、その出力ファイルのディレクトリを作成してデータベースをダンプします。
shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR db_name
次に DUMPDIR
ディレクトリのファイルをターゲットマシンの相当するディレクトリに転送して、そのファイルをそこの MySQL にロードします。
shell> mysqladmin create db_name # create database
shell> cat DUMPDIR/*.sql | mysql db_name # create tables in database
shell> mysqlimport db_name DUMPDIR/*.txt # load data into tables
mysql
データベースをコピーすることを忘れないでください。付与テーブルがそこに格納されているからです。新しいマシンで mysql
データベースが用意できるまで、コマンドを MySQL root
ユーザーとして実行しなければならない場合があります。
mysql
データベースを新しいマシンにインポートしたら、mysqladmin flush-privileges を実行してサーバーに付与テーブルの情報をロードさせます。