shell脚本内容如下所示:
通过shellll脚本实现自动定期备份数据库:
#!/bin/bash
# 备份hs_king数据库
# 设置MySQL连接信息
MYSQL_USER="root"
MYSQL_PASSWORD="123456"
MYSQL_DATABASE="hs_king"
# 设置备份文件的名称和路径
BACKUP_PATH="/root/SQL/mysql-file/"
BACKUP_FILENAME="$(date +%Y.%m.%d.%H.%M)-${MYSQL_DATABASE}.sql" BACKUP_FILE="$BACKUP_PATH$BACKUP_FILENAME"
# 导出MySQL数据库
mysqldump -R -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE > $BACKUP_FILE # 删除过期的备份文件 : 近15天
find $BACKUP_PATH -type f -name "*-${MYSQL_DATABASE}.sql" -mtime +15 -exec rm {} \;
# 以文件的创建时间为准进行删除
脚本授权
chmod +x backup_mysql.sh
crontab添加定时任务
crontab -e
*/10 * * * * /root/SQL/backup_mysql.sh
校验备份的数据库
解释说明
这段Shell脚本用于备份MySQL数据库。下面是对脚本的详细说明:
-
第2行到第6行:设置了连接MySQL的信息。你可以根据实际情况修改变量的值。
MYSQL_USER
:MySQL用户名,这里设置为"root"。MYSQL_PASSWORD
:MySQL密码,这里设置为"123456",请根据实际情况修改。MYSQL_DATABASE
:要备份的数据库名称,这里设置为"hs_king"。
-
第9行和第10行:设置备份文件的名称和路径。
BACKUP_PATH
:备份文件的存储路径,这里设置为"/root/SQL/mysql-file/",请确保该目录存在并有写权限。BACKUP_FILENAME
:备份文件的名称,采用当前日期(年月日时分)加上数据库名的形式。
-
第13行:使用
mysqldump
命令导出MySQL数据库。-R
参数用于导出存储过程和触发器。-u$MYSQL_USER -p$MYSQL_PASSWORD
指定了连接MySQL的用户名和密码。$MYSQL_DATABASE
指定了要备份的数据库。> $BACKUP_FILE
将导出的数据输出到备份文件中。
-
第16行:删除过期的备份文件。
find $BACKUP_PATH
指定要查找的路径。-type f
表示只查找文件。-name "*-${MYSQL_DATABASE}.sql"
指定了要匹配的备份文件名模式,其中"*"表示任意字符。-mtime +15
表示只选择修改时间超过15天的文件。-exec rm {} \;
将匹配到的文件执行删除操作。
这段脚本的作用是将指定的MySQL数据库进行备份,并保留近15天的备份文件,旧于15天的备份文件将被自动删除。请确保在运行此脚本之前,已经创建好了存储备份文件的目录,并且该目录具有适当的写权限。另外,也请根据实际情况修改脚本中的MySQL连接信息和备份文件路径以适应你的环境。