MySQLでバックアップデータをとって、古いデータを削除してローテーションさせる。
mysqldumpが可能なユーザーを作成する。
ユーザー名は[backup]、パスワードは[secret]、対象のデータベース名を[test]とする。
mysqlにrootでログインして、grantコマンドでユーザーを作る。
grant select, trigger, lock tables on *.* to backup@localhost;
作ったユーザーにパスワードを設定する。
set password for backup@localhost=password('secret');
一応確認
select host, user from mysql.user;
一度MySQLコマンドからでて、mysqldumpコマンドを使ってみてtest.dmpがでればOK
mysqldump -u backup -psecret test > test.dmp;
スクリプトを作る
次に、ローテーションを行うためのスクリプトを作る。
vim mysql-bk.sh
#!/bin/bash bkpath='/root/dbbk' term=7 filename=`date +%Y%m%d` mkdir -p $bkpath mysqldump -u backup -psecret test > $bkpath/$filename.dmp chmod 700 $bkpath/$filename.dmp oldfile=`date --date "$term days ago" +%Y%m%d` rm -f $dirpath/$oldfile.dmp
次に、パーミッションを作成者のみ実行権限があるように設定
chomod 700 mysql-bk.sh
試しに動かしてみる。
./mysql-bk.sh
任意のディレクトリにバックアップが取れていればOK。
cronにスクリプトを設定
作成者のcronに登録する。
crontab -e
0 4 * * * /root/mysql-bk.sh
毎日、午前4時に動くように設定。
別サーバーへ同期
あとは、うまくバックアップが取れていれば、別サーバーへrsync等で同期する。