開発したアプリなど一覧

mysql の自動バックアップ

アフィリエイトリンクを含む場合があります

とりあえず dump が取れればいいやと書きなぐった。このままでは同じサーバ上にバックアップファイルを置く事になってあまり意味がないので別途 rsync なり scp なりする。

データベースの設定は wordpress で使用しているものと同じなので wp-config.php を読み込む。但しそうするとメモリが足りなくなったりタイムゾーンが UTC になってアレなのでそこだけ直す。

mysql のバックアップには mysql 付属の mysqldump を使用。これが一番楽かな?
また古いファイルを削除するのに find と xargs を組み合わせたコマンドをシステムコールしている。一々スクリプト書くより楽ですね。

あとは crontab に登録するだけ。

$ cat backup_database.php <?php ini_set('memory_limit', '64M');

require_once '/path/to/wp/wp-config.php';

date_default_timezone_set('Asia/Tokyo');

$day = 30; $path = '/path/to/backup/';

$target_db_list = array('hoge', 'fuga', 'piyo');

foreach ($target_db_list as $db) { $backup_file = $path . $db . date('Ymd') . '.dump'; system(sprintf('mysqldump -u %s --password=%s %s --opt > %s', DB_USER, DB_PASSWORD, $db, $backup_file)); chmod($backup_file, 0744); }

system(sprintf('find %s -mtime +%s -name "*.dump" | xargs rm -f', $path, $day));

$ crontab -l # m h dom mon dow command 20 0 * * * php /path/to/script/backup_database.php > /dev/null

Sponsored Link

コメント

タイトルとURLをコピーしました