首页自学linux下mysql自动备份脚本,自动清除旧文件防止磁盘满

linux下mysql自动备份脚本,自动清除旧文件防止磁盘满

adminadmin时间2024-06-28 19:21:37分类自学浏览47

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自动备份脚本,自动清除旧文件防止磁盘满》

0
0
收藏0
德展健康:控股股东提议2亿元至3亿元回购股份

    未登录用户 回复需填写必要信息
    请先 登录 再评论,若不是会员请先 注册