• 富山県の地元実績多数のホームページ制作会社・アウェイクコンピューター
  •  お電話:076-483-9951(受付:平日10時~16時)

mysql データベースの定期的なバックアップ(RHEL5)

RedHatEnterprise Ver5 で、mysqlの定期的なバックアップを取るため、crontabを用いてシステム化しました。
まず、バックアップ取得のためのシェルファイルを作成します。例えば/usr/backup/mysql-sh/ というディレクトリー下にシェルファイルを作るとします。
(1) mysqlのデータバックアップを取るためのシェルファイル、mysqlbackup.sh を、次の内容で作ります。
/usr/bin/mysqldump -A -u root -p…. –opt | gzip >/usr/backup/mysql/db-mysql-all.gz
これは、mysqlの全バックアップデータの圧縮ファイルを/usr/backup/mysql/db-mysql-all.gzという名前で作成するということです。-p…は-pの直後にrootのパスワードを入れるということです。
(2) 週一回、日付つきのバックアップファイルを取ることにより、バックアップの安全性を向上させます。これは、mysqlbackup-weekly.sh というファイル名で、次の内容にします。
/bin/cp /usr/backup/mysql/db-mysql-all.gz /usr/backup/mysql/db-mysql-all-`date ‘+%Y-%m-%d’`.gz
日付つきのgzファイルを作ります。
(1)と(2)で作ったファイルは実行可能にしておきます。
chmod a+x mysqlbackup.sh
chmod a+x mysqlbackup-weekly.sh

これで準備OKです。
最後に/etc/crontab に次の2行を追加します。
32 5 * * * root /usr/backup/mysql-sh/mysqlbackup.sh
42 5 * * 0 root /usr/backup/mysql-sh/mysqlbackup-weekly.sh
上の行は、毎日5:32に、root権限で/usr/backup/mysql-sh/mysqlbackup.shを実行することです。
下の行は、毎週日曜日に、root権限で/usr/backup/mysql-sh/mysqlbackup-weekly.shを実行します。

/usr/backup/mysql/ 下にdb-mysql-all.gzファイルが毎日更新され、毎週日曜日に日付つきのファイル、例えば db-mysql-all-2012-04-08.gz のようなファイルができていけばOKです。