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

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,应选在凌晨执行减少影响。

如果数据库过大,比如百万千万的记录,会导致备份时间很长,面导致影响时间也变长。

这个情况下,建议做一主多从架构,在没有访问的从数据库下进行备份。


相关推荐

猜你喜欢

用20行Python代码实现实时获取鼠标屏幕坐标

用20行Python代码实现实时获取鼠标屏幕坐标

代码保存为一个py文件,比如xxx.py,再运行这个py文件。 鼠标就会出现一个浮窗跟随,实时显示当前鼠标坐标。 需要先pip install pyautogui import pyautogui ...

改版了,换上了自己写程序

给网站换上了自己开发的PHP代码,想深度定制网站的功能, 原来的typecho熟悉程度不够不想改,wordpress调研了几天也觉得不合适自己之后的深度定制。 评论功能移除了,依靠chatGPT编程...

用python读取stable diffusion生成的png图片的参数信息

之前使用stable diffusion生成图片之后,如果要再看绘画参数,需要打开stable diffusion的webui来看图片的参数。 对于其它没安装环境的电脑颇为麻烦。 当然如果要脚本化保...

解决linux rm和软件界面都无法删除的乱码文件名的文件

解决linux rm和软件界面都无法删除的乱码文件名的文件

有些看似乱码文件,加一对单引号就能删除。但有些真乱码文件,怎么也删除不掉,用sftp工具连接能看到也删除不掉。 rm: 无法删除"?q???d??": 没有那个文件或目录 这里有一个非常有效果的解决...