mysqldumpの結果を別サーバのDBにインポートするワンライナー


前提条件のような2つのDBがある場合に、パイプを使えばコマンド1行で別サーバにあるDBにデータのインポートができます。

mysqldump -u{ユーザ名} -p'{パスワード}' {dump元のDB名} | mysql -h {ホスト名} -u{ユーザ名} -p'{パスワード}' {インポート先のDB名}

前提条件

DB1(dump元)

  • DB名:sample_original
  • DBユーザ:sample_original
  • パスワード:password
  • ホスト:192.168.0.10

DB2(インポート先)

  • DB名:sample_target
  • DBユーザ:sample_target
  • パスワード:password
  • ホスト:192.168.0.20

1. 初期設定(ユーザ登録とDB作成)

  • DB1で以下を実行してsample_originalユーザを登録
GRANT ALL PRIVILEGES ON sample_original.* TO sample_original@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
  • DB2で以下を実行してsample_targetユーザを登録
    (DB1からもsample_targetユーザでアクセスできるようにします)
GRANT ALL PRIVILEGES ON sample_target.* TO sample_target@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON sample_target.* TO sample_target@192.168.0.10 IDENTIFIED BY 'password' WITH GRANT OPTION;
  • DB2にsample_target DBを作成しておきます
CREATE DATABASE `sample_target` DEFAULT CHARACTER SET utf8;

2. DBインポート

DB1のsample_original DBをDB2にインポートしたい場合、以下のようなコマンドになります。

mysqldump -usample_original -p'password' sample_original | mysql -h 192.168.0.20 -usample_target -p'passrowd' sample_target

mysqldumpコマンド記述の際に、pオプションとパスワードの間にスペースを空けないように注意。
「-p ‘パスワード’」とするとうまく動作しません。

参考