MySQL数据库备份脚本(mysqldump)

发布时间:2024年01月10日

数据库备份脚本

以下shell脚本的主要目的是备份数据库,并在需要时删除旧的备份文件以节省空间。它使用 mysqldump 命令来执行数据库备份,将备份文件存储在指定的路径下,并根据文件数量的阈值来删除旧的备份文件。扫描文章末尾二维码关注公众号回复04可获取此脚本

#!/bin/bash

# 定义脚本名称、日期、用户等信息
# NAME="数据库备份"
# DATE=$(date +%Y-%m-%d-%H-%M)
# USER="***"

# 设置本机数据库登录信息
mysql_user="user"
mysql_password="passwd"
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8mb4"

# 获取当前日期和时间,并赋值给 date_time 变量
date_time=$(date +%Y-%m-%d-%H-%M)

# 保存目录中的文件个数
count=10

# 备份路径
path=/***/

# 备份数据库 sql 文件并指定目录
mysqldump --all-databases --single-transaction --flush-logs --master-data=2 -h$mysql_host -u$mysql_user -p$mysql_password > $path_$(date +%Y%m%d_%H:%M).sql

# 检查上一行命令的返回值,如果不等于 0,则输出备份失败的消息并退出脚本
[ $? -ne 0 ] && echo "-----------------数据备份失败-----------------" && exit 1

# 列出指定路径下的备份文件,并通过 awk 提取最新的文件名赋值给 delfile 变量
delfile=$(ls -l -crt $path/*.sql | awk '{print $9 }' | head -1)

# 通过 wc -l 统计指定路径下的备份文件数量,并赋值给 number 变量
number=$(ls -l -crt $path/*.sql | awk '{print $9 }' | wc -l)

# 判断现在的备份数量是否大于阈值
if [ $number -gt $count ]
then
    # 删除最早的备份文件
    rm $delfile
    # 更新删除文件日志
    echo "-----------------已删除过去备份 sql $delfile-----------------"
fi

这段脚本是一个用于数据库备份的 Bash 脚本。它包含了以下主要功能:

  1. 设置数据库连接信息:定义了数据库用户名、密码、主机、端口和字符集。
  2. 获取当前日期和时间:使用 date 命令获取当前日期和时间,并将其存储在变量 date_time 中。
  3. 指定备份路径和文件计数:定义了备份文件的保存目录和要保留的备份文件数量。
  4. 执行数据库备份:使用 mysqldump 命令执行数据库备份,并将备份文件保存到指定的路径,文件名中包含当前日期和时间。
  5. 检查备份是否成功:通过检查$?变量的返回值(0 表示成功,非 0 表示失败),输出备份成功或失败的消息。
  6. 查找要删除的备份文件:使用 ls 命令列出备份目录中的所有备份文件,并使用 awk 命令提取文件名。
  7. 判断备份文件数量是否超过阈值:计算目录中备份文件的数量,并与阈值进行比较。
  8. 删除最早的备份文件:如果备份文件数量超过阈值,使用 rm 命令删除最早的备份文件,并输出删除文件的日志消息。

请注意,在运行这个脚本之前,你需要确保满足以下条件:

  1. 你有适当的权限来执行 mysqldump 命令和对备份目录进行读写操作。
  2. 你已经安装了 mysqldump 工具,并且可以通过命令行执行。
  3. 你已经设置了正确的数据库连接信息(用户名、密码、主机、端口等)。
  4. 备份目录和文件名路径是存在且可写的。

根据你的实际环境和需求,你可能需要对这些变量和命令进行适当的调整和验证。在测试和运行脚本之前,建议你仔细检查和理解每一行代码的功能和影响。


更多精彩文章可扫码关注公主号查看:
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_46645079/article/details/135494454
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。