MySQL备份脚本

云主机厂商都有自己的RDS系统,自然那是万无一失,但费用可真不便宜,一般还是喜欢自己备份一下。这里是一段备份脚本。放在cron中自动执行。

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
37
#!/bin/bash

#备份目录
BACKUP_ROOT=/srv/backup
BACKUP_FILEDIR=$BACKUP_ROOT/files
BACKUP_LOGDIR=$BACKUP_ROOT/logs

#当前日期
DATE=$(date +%Y%m%d)
FILEEXT=$(date +%Y%m%d%H)

if [ ! -d $BACKUP_FILEDIR/$DATE ];then
mkdir $BACKUP_FILEDIR/$DATE
fi

######备份######

#查询所有数据库

DATABASES=$(mysql -u用户名 -h 网络IP -p密码 -e "show databases" | grep -Ev "Database|sys|information_schema")

#echo $DATABASES
#循环数据库进行备份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/$DATE/${db}_$FILEEXT.sql.gz BEGIN----------
mysqldump -u用户名 -h 网络IP -p密码 \
--default-character-set=utf8 -q --lock-all-tables \
--flush-logs -E -R --triggers -B ${db} \
| gzip > $BACKUP_FILEDIR/$DATE/${db}_$FILEEX
T.sql.gz
echo ----------$BACKUP_FILEDIR/$DATE/${db}_$FILEEXT.sql.gz COMPLETE----------
echo
done

echo "done"

cron中设置备份频段,建议再加上远程传输,做成异地备份