DB(mysql)を自動でバックアップする

2011/04/20

DB(mysql)データを自動バックアップするメモ。以前にも書いたのですがw 再掲。

自動バックアップの流れ

  1. バックアップ先のサーバにSSH公開鍵を設定
  2. バックアップ用シェルを作成
  3. それを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

負荷がなさそうな朝5時に設定して、1日1回バックアップ処理が走ります。

復旧作業

バックアップデータから復旧させるときは、圧縮したデータを解凍して

$mysql -u user -p –default-character-set=utf8 dbname < dump.sql

で対応します。–default-character-setは必要に応じて修正します。

まとめ

ssh公開鍵設定して、シェルスクリプト書いて、クーロン設定して終わり!
※補足 クーロンによる処理が動いてなかったのですが、ここが参考になりました。
crontabがどうしても動かないときに確認すべき3つの点+α

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です