MySQL mysqldump データベースの複製方法

未分類

データベースの複製をする機会があったので忘れないようにメモ。
コマンドと、phpMyadminでの方法で、エクスポート=>インポートまでの一連のやり方を残します。

スポンサーリンク

mysqldumpコマンドで復元

コマンドラインからダンプファイルを生成して、復元する方法です。
mysqldumpコマンドでエクスポートします。

データベースのダンプを「含めるか」 or 「含めないか」でケースを分けて記載しました。
含める場合、復元時に復元先で同名のデータベースがあると、まるまる上書かれてしまうので注意です。
※検証用に別データベース名で復元して使いたいというケースもあるかと思います。

ケースバイケースで以下、読み分けてください。

データベースのダンプを含む

データベースを含むダンプは「–databases」オプションをつけます。

テーブルのダンプは「-d」オプションをつけることで定義のみダンプできます。
つけなければすべて(データ含む)が対象となります。

■テーブル定義 + データ含む

$ mysqldump -u{username} -p{passward} --databases 複製元DB名 > /var/tmp/dbdump.dump

■テーブル定義のみ(dオプション)

$ mysqldump -u{username} -p{passward} -d --databases 複製元DB名 > /var/tmp/dbdump.dump

これでエクスポートは完了。
エクスポートしたダンプファイルは勿論、バックアップファイルとしても残せます。

あとはダンプしたファイルから複製先にインポートするだけです。

$ mysql -u{username} -p{passward} < /var/tmp/dbdump.dump

データベースのダンプを含まない

テーブルのダンプは「-d」オプションをつけることで定義のみダンプできます。
つけなければすべて(データ含む)が対象となります。

■テーブル定義 + データ含む

$ mysqldump -u{username} -p{passward} 複製元DB名 > /var/tmp/dbdump.dump

■テーブル定義のみ(dオプション)

$ mysqldump -u{username} -p{passward} -d 複製元DB名 > /var/tmp/dbdump.dump

これでエクスポートは完了。
エクスポートしたダンプファイルは勿論、バックアップファイルとしても残せます。

インポートする前に、複製する(インポート先の)データベースをCREATE句で作成しておきましょう。※※CHARACTER SET箇所は適宜変更

CREATE DATABASE IF NOT EXISTS 複製先DB名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

あとはダンプしたファイルから複製先にインポートするだけです。

$ mysql -u{username} -p{passward} 複製先DB名 < /var/tmp/dbdump.dump

phpMyadminを使用して復元

phpMyadminからも同様に複製をとることができます。
ただし、データベースの容量によってはタイムアウトして失敗することがあります。
その際はphpiniで調整してください。

手順としては対象のデータベースを選択 => 操作 => 「Copy database to:」より実行するのみです。

設定はデフォルトでもよいと思いますが、適宜変更してください。

以上となります。

タイトルとURLをコピーしました