MySQLのバックアップを自動化
1
2
3
4
5
6
| cd
mkdir backup
mkdir backup/mysql
vim mysql_backup.sh
|
mysql_backup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| #!/bin/sh
# バックアップファイルを何日分残しておくか
period=1
# バックアップファイルを保存するディレクトリ
dirpath='/root/backup/mysql'
cd $dirpath
#mysql_password
mysqlpassword="passwd"
# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
mydate=`date +%y%m%d%H%M%S`
filename="mysql_$mydate.sql"
zipfilename="mysql_$mydate.sql.tar.gz"
# スレーブ停止
mysql -uroot -p$mysqlpassword -e "flush tables;"
mysql -uroot -p$mysqlpassword -e "stop slave;"
# mysqldump実行
mysqldump -uroot -p$mysqlpassword -A -E > $filename
# スレーブ開始
mysql -uroot -p$mysqlpassword -e "start slave;"
#backup実行
tar -zcvf $zipfilename $filename
# 圧縮前のファイルを削除
rm -f $filename
# パーミッション変更
chmod 700 $zipfilename
# 古いバックアップファイルを削除
find $dirpath -type f -daystart -mtime +3 -exec rm {} \;
|
実行権限を付与
1
| chmod 700 mysql_backup.sh
|
cronをインストール
1
2
3
4
5
6
7
| yum install cronie-anacron
# cron.dailyをランダム実行したくない場合は yum -y install cronie-noanacron
chkconfig --level 2345 crond on
chkconfig --list crond
crontab -e
|
1
| 0 3 * * * bash /path/to/mysql_backup.sh
|
設定済みのクーロンを確認