DB(mysql)データを自動バックアップするメモ。以前にも書いたのですがw 再掲。
自動バックアップの流れ
- バックアップ先のサーバにSSH公開鍵を設定
- バックアップ用シェルを作成
- それをcronに設定
公開鍵を設定するのは、シェルでssh(scp)する際にID/パスワードを聞かれないようにするためです。そうしないとそこでシェルが止まってしまいます。
バックアップ先のサーバにSSH公開鍵を設定
バックアップ元のサーバで、鍵を生成
$ssh-keygen -t rsa
全部Enter で進むと ~/.ssh/ にid_rsa.pub と id_rsaができるので、id_rsa.pub をバックアップ先のサーバに移してから
$cat id_rsa.pub >> ~/.ssh/authorized_keys
~/.ssh/authorized_keys に加えます。
バックアップ用シェルを作成
以下をdb_backup.shとして保存。
dumpしたデータを圧縮し、バックアップ先のサーバに保存します。ファイル名を曜日ごとに変えることで、1週間分のバックアップが取れます。
また、最後の exec 〜 は、最後に&をつけることで、これ以降にスクリプトを追加しても処理が継続します。
シェルをクーロンに設定
0 5 * * * /bin/sh /home/user/batch/db_backup.sh 1>>/home/user/batch/db_backup.1.log 2>
>/home/user/batch/db_backup.2.log
>/home/user/batch/db_backup.2.log
負荷がなさそうな朝5時に設定して、1日1回バックアップ処理が走ります。
復旧作業
バックアップデータから復旧させるときは、圧縮したデータを解凍して
$mysql -u user -p –default-character-set=utf8 dbname < dump.sql
で対応します。–default-character-setは必要に応じて修正します。
まとめ
ssh公開鍵設定して、シェルスクリプト書いて、クーロン設定して終わり!
※補足 クーロンによる処理が動いてなかったのですが、ここが参考になりました。
crontabがどうしても動かないときに確認すべき3つの点+α