MySQLのデータを定期実行でバックアップ
サービス運用してるとバックアップ取ると思うのですが、
毎回調べるので自分のブログにメモ。
backup_db.shとかで。 このシェルスクリプトをcronで定期実行するイメージです。
#!/bin/bash TODAY=`date +%Y%m%d` BACKUP_DIR=/data/backup/db BACKUP_INTERVAL='+3' for database in `mysql -uroot -N -s -e"show databases"`; do if [ $database == 'DB名' ]; then nice mysqldump -uroot --single-transaction --no-autocommit ${database} | pbzip2 -cv -p4 > ${BACKUP_DIR}/${database}-${TODAY}.sql.bz2 fi done find ${BACKUP_DIR} -type f -name "*.bz2" -mtime ${BACKUP_INTERVAL} | xargs rm -Rf
mysqldumpのオプション http://open-groove.net/mysql/autocommit/ http://blog.lampetty.net/blog_ja/index.php/archives/292
findコマンドのmtimeオプション http://doruby.kbmj.com/SK/20090731/find_mtime_
findしたやつをxargsコマンドで削除 http://openlab.dino.co.jp/2008/02/20/133431188.html
pbzip2 http://blog.cloudpack.jp/2011/08/aws-news-c1xlarge-pbzip2.html
ちなみにcronはこんな感じ
0 4 * * * root sh /path/to/backup_db.sh > /dev/null 2>&1