数据库备份脚本
以下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 脚本。它包含了以下主要功能:
- 设置数据库连接信息:定义了数据库用户名、密码、主机、端口和字符集。
- 获取当前日期和时间:使用
date
命令获取当前日期和时间,并将其存储在变量date_time
中。 - 指定备份路径和文件计数:定义了备份文件的保存目录和要保留的备份文件数量。
- 执行数据库备份:使用
mysqldump
命令执行数据库备份,并将备份文件保存到指定的路径,文件名中包含当前日期和时间。 - 检查备份是否成功:通过检查
$?
变量的返回值(0 表示成功,非 0 表示失败),输出备份成功或失败的消息。 - 查找要删除的备份文件:使用
ls
命令列出备份目录中的所有备份文件,并使用awk
命令提取文件名。 - 判断备份文件数量是否超过阈值:计算目录中备份文件的数量,并与阈值进行比较。
- 删除最早的备份文件:如果备份文件数量超过阈值,使用
rm
命令删除最早的备份文件,并输出删除文件的日志消息。
请注意,在运行这个脚本之前,你需要确保满足以下条件:
- 你有适当的权限来执行
mysqldump
命令和对备份目录进行读写操作。 - 你已经安装了
mysqldump
工具,并且可以通过命令行执行。 - 你已经设置了正确的数据库连接信息(用户名、密码、主机、端口等)。
- 备份目录和文件名路径是存在且可写的。
根据你的实际环境和需求,你可能需要对这些变量和命令进行适当的调整和验证。在测试和运行脚本之前,建议你仔细检查和理解每一行代码的功能和影响。
更多精彩文章可扫码关注公主号查看: