MySQL备份脚本
#!/bin/bash
# MySQL连接参数
MYSQL_USER=root
MYSQL_PASSWORD="xxxxxxx"
# 备份目录
BACKUP_DIR=/home/mysql_backup
# 要备份的数据库列表(空格分隔)
DB1=testdb1
DB2=mysql
##如果有需要过滤的备份的表
# 保留天数
DAYS_TO_KEEP=7
# 当前日期
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 记录日志
echo "$(date +'%Y-%m-%d %H:%M:%S') - Backup Start" > $BACKUP_DIR/logs/backup-$DATE.log
# 备份数据库 DB1=testdb
echo ---backup $DB1 >> $BACKUP_DIR/logs/backup-$DATE.log
mysqldump --single-transaction --set-gtid-purged=off --master-data=2 --routines --triggers --events -u$MYSQL_USER -p$MYSQL_PASSWORD $DB1 | gzip > $BACKUP_DIR/$DATE/$DB1-full-$DATE.sql.gz
send=`date '+%Y-%m-%d %H:%M:%S'`
if [ $? -ne 0 ];
then
echo "$send $DB1 数据备份失败" >> $BACKUP_DIR/logs/backup-$DATE.log
exit -1
else
echo "$send $DB1 数据备份成功!" >> $BACKUP_DIR/logs/backup-$DATE.log
fi
# 备份数据库 DB2=mysql
echo ---backup $DB2 >> $BACKUP_DIR/logs/backup-$DATE.log
mysqldump --single-transaction --set-gtid-purged=off --master-data=2 --routines --triggers --events -u$MYSQL_USER -p$MYSQL_PASSWORD $DB2 | gzip > $BACKUP_DIR/$DATE/$DB2-full-$DATE.sql.gz
send=`date '+%Y-%m-%d %H:%M:%S'`
if [ $? -ne 0 ];
then
echo "$send $DB2 数据备份失败" >> $BACKUP_DIR/logs/backup-$DATE.log
exit -1
else
echo "$send $DB2 数据备份成功!" >> $BACKUP_DIR/logs/backup-$DATE.log
fi
# 删除旧备份
find $BACKUP_DIR -type d -mtime +$DAYS_TO_KEEP -exec rm -rf {} \;
# 记录日志
echo "$(date +'%Y-%m-%d %H:%M:%S') - Backup End" >> $BACKUP_DIR/logs/backup-$DATE.log