サービス運用してるとバックアップ取ると思うのですが、毎回調べるので自分のブログにメモ。
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/292findコマンドのmtimeオプション
http://doruby.kbmj.com/SK/20090731/find_mtime_findしたやつをxargsコマンドで削除
http://openlab.dino.co.jp/2008/02/20/133431188.htmlpbzip2
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