7月 052010
 
シェアする

今回はMySQLのデータベースの自動バックアップを実装するまでをご紹介します。

というのも、手がすべってWordPressのデータベースを消してしまいました(涙汗血)

今までデータベースのバックアップを行っていなかったので、とりあえずは、googleで自分のブログページを検索をして、ヒットしたTOPページのキャッシュから過去の投稿を拾い、全て投稿時間詐称をして投稿しなおしました(涙)

今後の為に以下の通り対策を実施。

MySQLのデータベースを定期的に自動でバックアップする

以下の通り対策を行いました。

  1. MySQLのデータベースをダンプするスクリプト(/root/bin/backup_db)の作成+実行権限の付与
  2. バックアップスクリプトの自動実行設定

MySQLのデータベースをバックアップするスクリプトの作成

mysqldumpコマンドを用いてMySQLのDBバックアップを取る簡単なシェルを/root/bin/backup_dbとして作成しました。mysqldumpコマンドに関しては下記URLよりごらんいただけます。

参考:http://dev.mysql.com/doc/refman/4.1/ja/mysqldump.html

[bash]
#!/bin/bash

# DB情報
db_name=’データベース名’
db_user=’データベースユーザー’
db_password=’アクセスパスワード’

# バックアップディレクトリ
backup_directory=’/root/BACKUP/DB/’

# 日付フォーマット
date=`date +%Y%m%d_%H:%M`

# バックアップディレクトリがなかったら作成
if [ ! -d ${backup_directory} ]
then
mkdir -p ${backup_directory}
fi

# mysqldumpでDBをSQLに吐き出す
mysqldump -u ${db_user} -p${db_password} $db_name > ${backup_directory}${db_name}_${date}.sql

# バックアップディレクトリ配下で7日以前のものを削除する
find ${backup_directory} -ctime +7 -exec rm {} \;
[/bash]

実行権限を付与しておきます。これをしないとクーロン実行時にスクリプトが実行されません。

# chmod +x /root/bin/backup_db

自動実行の設定

Linux上で利用できるクーロン(cron)の設定を行って、作成したスクリプトを定期的に自動実行するように設定を行います。

# crontab -e ←cronの設定編集
0 4 * * * root /root/bin/backup_db ←左記を追記し、[ESC]⇒:wq⇒Enterで保存
# cromtab -l ←cronの設定確認

これで大丈夫。今後は最悪の場合でも一日前の状態に戻れるようになりました。
お好みでクーローンの実行タイミングはご変更ください。

参考までにcronの記述は以下のようになっています。

分 時 日 月 曜日 実行ユーザー /実行する/ファイルの/パス

man 5 crontab より、実行タイミングに関して引用しておきます。

field allowed values
—– ————–
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)

曜日に関してですが、上記の通り、0もしくは7が日曜日をあらわします。

0=日曜 1=月曜 2=火曜日…… 6=土曜日

アスタリスク/ワイルドカード(*)を利用した場合は、すべてに合致します。

以下の場合はいつ実施されることになるか見てみましょう。

0 4 * * * root /root/bin/backup_db

**日(*曜日) 4時0分に実行されます。

cronに関しては以下を参考にしてください。

Man Page of CRONTAB:http://linuxjm.sourceforge.jp/html/cron/man5/crontab.5.html

以上

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ