需求需要定时备份数据库 可以备份多个数据库 同时压缩 超过30天自动删除
#!/bin/bash
#备份存储路径 Linux路径 非docker容器内路径
BACKUP_DIR='/opt/backups'
#日志备份路径
LOG_DIR='/opt/backups'
#备份时间
BACK_TIME=`date +%Y%m%d%H%M%S`
#文件名
BACKUP_FILE_NAME=${BACK_TIME}.sql.gz
#需要备份的数据库,多个数据库用空格分开
MYSQL_DATABASE='investment_project_management'
#用户名
MYSQL_USER='backup'
#密码
MYSQL_PASSWORD='xQ5BWbej686CnBf'
#日志记录头部
echo "备份时间为${BACK_TIME},备份数据库表 ${MYSQL_DATABASE} 开始" >> ${LOG_DIR}/log.log
#正式备份数据库
for db in $MYSQL_DATABASE; do
docker exec km-ipm-mysql sh -c "mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${db} | gzip > ${BACKUP_DIR}/${BACKUP_FILE_NAME}";
#备份成功以下操作
if [ "$?" == 0 ];then
cd $BACKUP_DIR
#删除30天前备份,也就是只保存30天内的备份
find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库表 ${MYSQL_DATABASE} 备份成功!!" >> ${LOG_DIR}/log.log
else
#备份失败则进行以下操作
echo "数据库表 ${MYSQL_DATABASE} 备份失败!!" >> ${LOG_DIR}/log.log
fi
done
实现数据库多表备份 压缩 过期删除 记录日志