サーバ構築するたびに思い出しがてら調べるのが面倒なので、メモ
一番簡単?なコールドバックアップから。
インスタンスを止めた上体から全バックアップする。
MySQLのdatadirは「/data/mysql」の仮定ですすめます。
まずは、停止
①/etc/rc.d/init.d/mysqld stop
②mysqladmin shutdown --user=root --password=pass123 --soket=/data/mysql/mysql.sock
③kill 'cat /data/mysql/mysql.sock'
止まったか確認
ps -ef | grep mysqld grep -v grep
ソケットの場所などは環境に合わせてください。
止まっていれば
cp -rp /data/mysql /home/backup/mysql-backup
この場合は、ドライブの異なるhomeへとりました。
外部デバイスなどに逃がすか、とった後別のサーバへ転送したほうがいいです。
これで一式を退避させることができるので、戻す場合は
rm -rf /data/mysql
cp -rp /home/backup/mysql-backup /data/mysql
でもこの方法だと、止めなきゃいけない+最新には戻せない(かも)なので
タイミングにもよるけど、運用には耐えられない。
なので、1週間に1回日曜にフルでとって、それ以外トランザクションログを使ってできる限り最新状態に近づける。
トランザクションファイルはmy.confに設定を追加する。
サーバ構築するたびに思い出しがてら調べるのが面倒なので、メモ
一番簡単?なコールドバックアップから。
インスタンスを止めた上体から全バックアップする。
mysqlのdatadirは「/data/mysql」の仮定ですすめます。
まずは、停止
①/etc/rc.d/init.d/mysqld stop
②mysqladmin shutdown --user=root --password=pass123 --soket=/data/mysql/mysql.sock
③kill 'cat /data/mysql/mysql.sock'
止まったか確認
ps -ef | grep mysqld grep -v grep
ソケットの場所などは環境に合わせてください。
mkdir /data/mysql/bin_log
chown mysql:mysql /data/mysql/bin_log
vi my.conf
追加 → log-bin=/data/mysql/bin_log/mysqllog
設定が終わったら、mysqlを再起動。
これで、/data/mysql/bin_log/に「mysqllog.000001」というログができます。
この中にはトランザクションの情報が記載されています。
バイナリ形式なので、見たい場合は
mysqlbinlog --disable-log-bin /data/mysql/bin_log/mysqllog.000001 > /tmp/mysqllog.000001.sql
でSQL形式に変換できます。
ログはどんどん書き込まれるので、スイッチする場合は
mysqladmin flush-log --user=root --password=pass123 --soket=/data/mysql/mysql.sock
これで、連番の別ファイルが作成されてそっちに書き込まれるようになります。
2つのバイナリを反映させる場合は
mysqlbinlog --disable-log-bin /data/mysql/bin_log/mysqllog.000001 /data/mysql/bin_log/mysqllog.000002 > /tmp/mysqllog.sql
mysql --user=root --password=pass123 --soket=/data/mysql/mysql.sock < /tmp/mysqllog.sql
ってな感じです。