Centos服务器上使用crontab进行mysql数据库自动备份

对于生产环境来说,数据库备份是必不可少的操作;本文主要介绍在Centos服务器上使用mysqldump+crontab对mysql数据库进行定时自动备份。
整体思路:
1、编写脚本使用mysqldump对数据库进行备份。
2、使用crontab添加定时任务定时执行备份脚本实现数据库备份。

mysqldump

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等;再次执行sql脚本即可恢复数据。

crontab

Linux crontab 是用来定期执行程序的命令。

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

mysql备份脚本准备

首先准备msyql备份目录

mkdir /data/mysql_backup
cd /data/mysql_backup

编写mysql备份脚本
vi mysql_backup_script.sh
按 i 进入编辑模式

#!/bin/bash

# mysql备份执行文件
mysqldump=/usr/local/mysql-8.0.22/bin/mysqldump
# 设置备份目录
backup_dir=/data/mysql_backup

# 备份时间 年月日时分
dt=$(date '+%Y%m%d%H%M')

# 数据库密码
mypwd=password123456

cd $backup_dir

# 开始执行数据库备份
$mysqldump -uroot -p$mypwd xxl_job > $backup_dir/xxl_job_$dt.sql

# 备份完成后压缩sql备份文件
zip xxl_job_$dt.zip xxl_job_$dt.sql

# 删除备份的sql原始文件
find $backup_dir/  -type f -name "*.sql" -exec rm {} \;

# 删除7天前的备份文件
find $backup_dir/ -type f -name "*.zip" -mtime +7  -exec rm -rf {} \;

echo 'backup completed!'

Esc :wq 保存脚本
为脚本授权

chmod u+x mysql_backup_script.sh

测试脚本

[root@adsl-172-10-0-1 mysql_backup]# sh ./mysql_backup_script.sh 
mysqldump: [Warning] Using a password on the command line interface can be insecure.
  adding: xxl_job_202206171607.sql (deflated 85%)
backup completed!

配置crontab定时任务

创建定时任务:crontab -e
查看所有定时任务:crontab -l
crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

用crontab -e进入当前用户的工作表编辑,登录vim模式编辑

# 每天凌晨3点执行脚本
0 3 * * * /data/mysql_backup/mysql_backup_script.sh

crontab 配置说明

以下内容转自www.runoob.com;详细内容自行查阅
crontab 时间格式说明

f1 f2 f3 f4 f5 program
  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

crontab 配置示例

0 */2 * * * /sbin/service httpd restart  意思是每两个小时重启一次apache 

50 7 * * * /sbin/service sshd start  意思是每天7:50开启ssh服务 

50 22 * * * /sbin/service sshd stop  意思是每天22:50关闭ssh服务 

0 0 1,15 * * fsck /home  每月1号和15号检查/home 磁盘 

1 * * * * /home/bruce/backup  每小时的第一分执行 /home/bruce/backup这个文件 

00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

30 6 */10 * * ls  意思是每月的1、11、21、31日是的6:30执行一次ls命令
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值