当前位置: 首页 > 新闻动态 > 技术教程

Linux下实现MYSQL数据库的定时备份

作者:爱谁谁 浏览: 发布日期:2025-07-19
[导读]:1、环境变量配置为了使用MySQL自带的备份命令mysqldump,首先需要确保服务器上已正确安装MySQL数据库,并配置以下MySQL环境变量。vim/etc/profile在文件中追加一行,通常MySQL数据库的默认安装路径是/usr/local/mysql:exportPATH=$PATH:/usr/local/mysql/bin保存并退出,然后刷新环境变量:source/etc/profile2、创建定时备份脚本首先创建/data/db_bak目录来存储备份文件:mkdir/datacd

1、环境变量配置

为了使用MySQL自带的备份命令mysqldump,首先需要确保服务器上已正确安装MySQL数据库,并配置以下MySQL环境变量。

vim /etc/profile

在文件中追加一行,通常MySQL数据库的默认安装路径是/usr/local/mysql:

export PATH=$PATH:/usr/local/mysql/bin

保存并退出,然后刷新环境变量:

source /etc/profile

2、创建定时备份脚本

首先创建/data/db_bak目录来存储备份文件:

mkdir /data
cd /data
mkdir db_bak

接下来,新建一个名为bak_mysql.sh的定时备份脚本(默认设置为3天后删除):

vim bak_mysql.sh

脚本内容如下:

#!/bin/bash
mysqldump -uroot -p12345678 agp | gzip > /data/db_bak/agp$(date +%Y%m%d_%H%M%S).sql.gz
# 定时清理,只保留3天的数据库备份
find /data/db_bak/ -mtime +3 -name "*.sql.gz" -exec rm -rf {} \;

保存并退出,然后为脚本添加可执行权限:

chmod u+x bak_mysql.sh

手动执行脚本以确保其能正常运行:

./bak_mysql.sh

3、定时任务设置

安装crontabs以设置定时任务:

yum install crontabs

编辑定时任务文件,添加MySQL定时备份脚本的执行:

vim /etc/crontab

内容如下,默认设置为每5分钟执行一次:

*/5 * * * * /data/db_bak/bak_mysql.sh #每隔五分钟执行一次
30 23 * * * /data/db_bak/bak_mysql.sh #每天23:30执行一次

保存定时任务配置并立即生效:

crontab /etc/crontab

执行效果:

4、Crontab参数说明

Crontab的时间格式为:分钟 小时 日 月 周 命令。具体解释如下:

  • 第1列表示分钟,范围为1~59,每分钟用/1表示。
  • 第2列表示小时,范围为1~23(0表示0点)。
  • 第3列表示日期,范围为1~31。
  • 第4列表示月份,范围为1~12。
  • 第5列表示星期,范围为0~6(0表示星期天)。
  • 第6列是要运行的命令。

脚本定时执行的案例:

# 每天的30:23 执行
30 23 * * * /data/db_bak/bak_mysql.sh
# 每隔10分钟 执行
*/10 * * * * /data/db_bak/bak_mysql.sh
# 每周一的 17:00 执行
0 17 * * 1 /data/db_bak/bak_mysql.sh
# 8:02,11:02,14:02,17:02,20:02 执行
2 8-20/3 * * * /opt/script/backup.sh

文件定时的案例:

# 每一小时重启nginx
* */1 * * * /etc/init.d/nginx restart
# 每晚的21:30重启 nginx
30 21 * * * /etc/init.d/nginx restart
# 每月的4号与每周一到周三 的11点重启nginx
0 11 4 * mon-wed /etc/init.d/nginx restart
# 每天18:00至23:00之间每隔30分钟重启nginx
0,30 18-23 * * * /etc/init.d/nginx restart
免责声明:转载请注明出处:http://www.sczxchw.cn/news/95153.html

扫一扫高效沟通

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!