AB Lab

abgata20000 blog.

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

設定済みのクーロンを確認

1
crontab -l