下記のシェルスクリプトでサーバーの MySQL を全てバックアップすることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/bin/bash # config backup_parent_dir=~/backup rootpass=xxxxxxxxxxxxxxxx retention_period=10 # dir setting backup_dir=`date +%Y-%m-%d` remove_dir=`date "-d$retention_period days ago" +%Y-%m-%d` mkdir -p $backup_parent_dir/$backup_dir rm -rf $backup_parent_dir/$remove_dir # backup dblist=`ls -p /var/lib/mysql | grep / | tr -d /` for dbname in $dblist do if [ $dbname != "mysql" -a $dbname != "performance_schema" -a $dbname != "test" ]; then mysqldump --skip-lock-tables -u root $dbname -p$rootpass | gzip > $backup_parent_dir/$backup_dir/$dbname.sql.gz fi done |
これを実行すればまず時系列の MySQL のバックアップは作成できると思います。cron でバックアップを行う場合は下記のように記述をすれば良いです。
1 | 0 4 * * * sh ~/mysql-backup.sh |
これをローカルにダウンロードするシェルを書いて定期的に実行すれば、バックアップを完全に行うことができます。ちなみに cron で下記のようなコードを実行してもバックアップをダウンロードすることができません。どうすればダウンロードできるかご存知の人がいたら教えてください。
1 | rsync -vhHpltzru -e "ssh hoge:~/backup/" ~/Sites/localhost/backup/weble/mysql |
コメント