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 [email protected] 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 'パスワード'」とするとうまく動作しません。