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

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として保存。

 ${dmpfile} exec ssh-agent scp ${dmpfile}.gz user@backup_server:/backup/dir/path &


-->

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 で対応します。–default-character-setは必要に応じて修正します。

##### まとめ

ssh公開鍵設定して、シェルスクリプト書いて、クーロン設定して終わり!

※補足 クーロンによる処理が動いてなかったのですが、ここが参考になりました。

[crontabがどうしても動かないときに確認すべき3つの点+α](http://d.hatena.ne.jp/natsumesouxx/20100313/1268479064)