linux下mysql自动备份脚本,自动清除旧文件防止磁盘满
![admin](https://hdzys.com/zb_users/avatar/0.png)
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自动备份脚本,自动清除旧文件防止磁盘满》php/154.html
与《linux下mysql自动备份脚本,自动清除旧文件防止磁盘满》