#!/bin/bash
# 要备份的数据库名,多个数据库用空格分开
databases=(kuaijie|rap_db|sonar)
# 备份文件要保存的目录
basepath='/home/kuaijie_MY_bak/'
if [ ! -d "$basepath" ]; then
mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${databases[*]}
do
# 备份数据库生成SQL文件
/bin/nice -n 19 /usr/bin/mysqldump -uroot -pqkjr_420 --single-transaction --flush-logs--master-data=2 $db > $basepath$db-$(date +%Y%m%d).sql
--single-transaction: 基于此选项能实现热备InnoDB表;因此,不需要同时使用--lock-all-tables;
--flush-logs 在使用这样的语句进行备份之后,mysql就会关闭原来的二进制日志文件,开启一个新的二进制日志文件。比如,新开启、新增量的二进制日志文件为 mysql-bin.000002。 那么在进行数据恢复的时候,你可以利用$basepath$db-$(date +%Y%m%d).sql进行全量恢复+ mysql-bin.000002进行增量同步。
--master-data=2 记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的
# 将生成的SQL文件压缩
/bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $db-$(date +%Y%m%d).sql
# 删除7天之前的备份数据
#find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
mv $basepath$db-$(date +%Y%m%d).sql.tar.gz /share/caedpay_bak/
done
# 删除生成的SQL文件
rm -rf $basepath