MySQL の時系列バックアップを自動で作成するシェルスクリプト

下記のシェルスクリプトでサーバーの 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

コメント

コメントは受け付けていません。