サーバー間でmysqlデータをバックアップ・更新する
this is what
サーバーAにあるデータベース1を、サーバーBに持っていて同期(更新)する、というのをしたい。
定期的にするようにcronに登録する。
this is how
*今回はexpectコマンドを使った。expect入れてない場合はyum install expect
で入れる。
まずDBをダンプする。
$ mysqldump -u root --password="hoge" db_name > db_name.sql
サーバーAからBへ送る
# ssh ver2使ってる場合は`-2`オプション $ scp -2 -P 1111 db_name.sql user@serverB:/home/username/db_name.sql
な感じだけど、途中ssh鍵のパスワード求めらたりするので、cron出する場合はexpect使う。
スクリプト書く。
#!/bin/sh HOST=serverB PASS=hogehoge IDENT=/home/username/.ssh/id_rsa expect -c " set timeout -1 spawn scp -2 -i $IDENT -P 1111 /home/username/db_name.sql user@$HOST:/home/username/db_name.sql expect \"Enter passphrase for key\" send \"${PASS}\r\" expect eof "
で、これをcronに登録して回すとdumpしたファイルをサーバーBに送ってくれる。
*参考
expectコマンドをcronで使うためときのポイント | thiroyoshi.blog
シェル以外からexpectしててハマったメモ | ブログ :: Web notes.log
以上