mysql数据库:使用 bash脚本 + 定时任务 自动备份数据
- 1、前言
- 2、为什么需要自动化备份?
- 3、编写备份脚本
- 4、备份脚本授权
- 5、添加定时任务
- 6、重启 crond / 检查 crond 服务状态
- 7、备份文件检查
💖The Begin💖点点关注,收藏不迷路💖 |
1、前言
在日常的系统管理工作中,数据库的备份是至关重要的一环。针对 MySQL 数据库的备份,我们可以编写 Bash 脚本来实现自动化备份操作,从而简化数据库管理的流程,保障数据的安全性和可靠性。
2、为什么需要自动化备份?
数据库作为应用程序的核心数据存储,包含了大量的重要信息,例如用户数据、配置信息等。一旦数据库出现意外故障或数据丢失,可能会给业务带来严重影响甚至损失。因此,定期进行数据库备份并保证备份文件的安全存储是非常重要的。
手动备份存在诸多弊端,例如容易出现疏忽、不及时等问题,因此自动化备份成为了一个更好的选择。通过编写脚本实现自动备份,可以提高效率、减少人为错误,同时也能够更好地保障数据的安全。
3、编写备份脚本
创建备份数据保存目录和bash脚本保存目录。
在 /mysql/backup 目录下创建一个名为 data 的子目录,用于保存备份数据;
在同一目录下创建一个名为 bash 的子目录,用于保存 bash 脚本文件。
mkdir /mysql/backup/data mkdir /mysql/backup/bash
cd 到/mysql/backup/bash ,vi 编写备份脚本,如vi backup_mysql.sh
。
添加下面内容:
#!/bin/bash# 定义数据库连接参数
db_host="192.168.234.10" # 数据库IP地址
db_port="3306" # 数据库端口
db_user="root" # 数据库登陆用户名
db_passwd="zyl@2024" # 数据库登录密码# 定义备份相关参数
db_name="db_zyl" # 需备份的库
backup_path="/mysql/backup/data" # 备份文件存放路径,前面创建的目录
name="db_zyl-$(date +"%Y-%m-%d-%H:%M:%S")" # 定义备份文件的文件名格式# 执行备份命令,并压缩备份文件
mysqldump --flush-logs --user=$db_user --password=$db_passwd --host=$db_host --port=$db_port $db_name | gzip > $backup_path/$name.sql.gz# 备份文件传输至指定服务器(可选,如本机:192.168.234.10拷贝到192.168.234.20)
scp -r $backup_path/$name.sql.gz root@192.168.234.20:$backup_path# 删除7天前的备份
find $backup_path/* -mtime +7 -name "*.gz" -exec rm -rf {} \;
4、备份脚本授权
在添加定时任务之前,需要确保脚本已经有可执行权限。可以使用chmod +x 备份脚本
命令赋予脚本可执行权限。
chmod +x /mysql/backup/bash/backup_mysql.sh
5、添加定时任务
拓展:
当设置定时任务时,可以使用以下格式来详细定义时间:
* * * * * 执行脚本绝对路径
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天可以用0或7表示)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)通过这五个字段的组合,可以精确地定义定时任务执行的时间。例如:30 2 * 1-5 表示在周一到周五的凌晨2点30分执行任务。
0 20 * * 1,3,5 表示在周一、周三、周五的晚上8点执行任务。
0 * * * * 表示每小时执行一次任务。
0 3 * * * 表示每天凌晨3点执行任务。
0 4 1 * * 表示每月的第一天凌晨4点执行任务。
根据具体的需求,可以灵活地调整定时任务的时间设置。
为脚本添加定时任务可以实现自动备份,以下是添加定时任务的步骤:
打开终端窗口,输入crontab -e命令,编辑当前用户的定时任务配置文件。
crontab -e
在文件中添加如下一行,注意是脚本的绝对路径,表示每天凌晨3点执行备份:
0 3 * * * /mysql/backup/bash/backup_mysql.sh
6、重启 crond / 检查 crond 服务状态
#重启
systemctl restart crond#服务状态查看
systemctl status crond
7、备份文件检查
💖The End💖点点关注,收藏不迷路💖 |