linux环境下的mysql自动备份数据库的shell脚本,默认在运行时自动清理30天前的旧文件,防止一直备份导致磁盘爆满。
加脚本代码保存为一个文件,比如 autoback.sh之后,加入到linux的自动任务里定时执行就能够实现每天定时进行数据库备份了。自动备份完成的文件以“日期时间+数据库名称”做命名。
脚本代码如下:
#!/bin/bash
# MySQL数据库的用户名和密码
DB_USER="user1"
DB_PASS="pwd!"
# 要备份的数据库名称数组
DB_NAMES=("db1" "db2")
# 备份文件存放路径
BACKUP_DIR="/backup/file/"
# 获取当前日期和时间
DATETIME=$(date +%Y-%m-%d-%H-%M-%S)
for DB_NAME in "${DB_NAMES[@]}"
do
# 拼接备份文件名
BACKUP_FILE="$BACKUP_DIR$DATETIME-$DB_NAME.sql"
# 使用mysqldump备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE
# 打印备份完成信息
echo "Backup completed: $BACKUP_FILE"
done
#删除30天前的备份文件
find $BACKUP_DIR -type f -name "*.sql" -mtime +30 -delete
echo "Old backup files cleaned up"
自动任务写法如下,每天凌晨1点执行自动备份
0 1 * * * sh /backup/auto_back.sh
需要注意Mysqldump备份的方式,在备份期间会锁表而影响数据库访问,也可能产生大量IO,应选在凌晨执行减少影响。
如果数据库过大,比如百万千万的记录,会导致备份时间很长,面导致影响时间也变长。
这个情况下,建议做一主多从架构,在没有访问的从数据库下进行备份。
本文《linux下mysql自动备份脚本,自动清除旧文件防止磁盘满》由爱思考吧 isres.com 分享,转载请注明出处。本文网址:https://www.isres.com/php/154.html
本站主要收集测评能够节省时间和提升效率的软件工具并分享使用与学习的过程和感受,任何情况下用户都需遵守所使用软件资源的相关协议。与《linux下mysql自动备份脚本,自动清除旧文件防止磁盘满》有关的本站文章及资源仅供个人学习交流使用,相关资源请下载后24小时内删除,请勿用于其它用途,因此产生的任何问题由您自行承担。