Centos定时自动备份mysql
文章目录
- Centos定时自动备份mysql
- 1.先安装相关工具
- 2.创建dump.sh命令文件
- 3.编写命令文件规则
- 4.文件夹路径
- 5.添加crontab任务
- 6.编写cron规则
1.先安装相关工具
共两个,一个是cronie 一个是 mysql-client(一般装完mysql就自带的有)
sudo yum install cronie mysql-client
2.创建dump.sh命令文件
# vim mysql-db-dump.sh
3.编写命令文件规则
这里使用的是全库备份
#!/bin/bash# 定义数据库用户名和密码
DB_USER='root'
DB_PASS='你的数据库密码'# 定义要备份的数据库名称 -- 如果需要备份数据库可以打开这里
# DATABASE_NAME='xxxx'# 定义备份文件存储的位置和名称
BACKUP_DIR='/root/shell/resource'
BACKUP_FILE=$BACKUP_DIR/${DATABASE_NAME}_$(date +\%Y-\%m-\%d_\%H:\%M:\%S).sql.gz# 使用 mysqldump 备份数据库并gzip压缩
# mysqldump -u$DB_USER -p$DB_PASS $DATABASE_NAME | gzip > $BACKUP_FIL -- 备份单个数据库# 使用 mysqldump 备份所有数据库并gzip压缩
mysqldump --all-databases -u$DB_USER -p$DB_PASS | gzip > $BACKUP_FILEecho "Backup file created successfully at: $BACKUP_FILE"
4.文件夹路径
[root@iZdac72ss4rmhrZ shell]# ll
total 8
-rwxrwxrwx 1 root root 629 Nov 21 16:08 mysql-db-dump.sh
drwxr-xr-x 2 root root 4096 Nov 21 16:14 resource
[root@iZdac72ss4rmhrZ shell]# pwd
/root/shell
[root@iZdac72ss4rmhrZ shell]#
PS: 记得给权限 chmod +x ./**
5.添加crontab任务
# crontab -e
6.编写cron规则
在 crontab 中安排在每天中午 12 点和晚上 12 点执行自动备份任务,您可以使用以下 cron 表达式:
0 12 * * * /root/shell/mysql-db-dump.sh
0 0 * * * /root/shell/mysql-db-dump.sh
在这两个 cron 表达式中:
0
表示分钟,由于我们希望在整点运行任务,因此将其设为 0。12
或0
分别代表中午 12 点和晚上 12 点。*
表示任何值都匹配,因此*
在天、月和星期字段上表示无论何时。- 最后一个字段是要运行的命令或脚本的路径,例如
/path/to/mysqldump.sh
。
请注意,cron 表达式的格式为 分 小时 日 月 周 命令
,其中每个字段都有相应的取值范围。如果您需要更多关于 cron 表达式的详细信息,可以在 crontab 手册页中查找相关信息,或者查阅在线资源。
此外,由于您可能需要在备份期间保留其他数据库操作,因此建议在脚本中添加必要的锁定机制以防止数据不一致的情况发生。