Linux之MySQL定时备份

#!/bin/bash
#author: zking
#MySQL定义备份并发送邮件
#定义变量
DATE=$(date +%F"_"%H:%M:%S)
HOST=127.0.0.1
DB=db1
USERNAME=root
PASSWORD=un1xR00t
MAIL=donkee@vip.qq.com
BACKUP_DIR=/data/db_backup
SQL_FILE=${DB}_sql_$DATE.sql

#判断备份目录是否存在
if [ ! -d $BACKUP_DIR ];then
     mkdir -p $BACKUP_DIR
fi

echo $BACKUP_DIR/$SQL_FILE
#执行备份命令
if mysqldump -h$HOST -u$USERNAME -p$PASSWORD --single-transaction $DB > $BACKUP_DIR/$SQL_FILE ;then
        echo "备份成功,文件位置:$BACKUP_DIR/$SQL_FILE" | mail -s "MySQL数据备份" $MAIL
else
        echo "备份失败" | mail -s "MySQL数据备份" $MAIL
fi
  • --single-transaction

    • 该参数通过在一个事务中导出所有表从而创建一个一致性的快照

    • 当前版本的MySQL只可以对innodb 引擎保证一致性,导出过程中不会锁表其他引擎,如MyISAM 在导出期间会锁表为保证有效的dump文件,即正确的表内容和二进制日志位置在导出的过程中不能有如下操作

      • ALTER TABLE

      • DROP TABLE

      • RENAME TABLE

      • TRUNCATE TABLE

    • 如指定了 --lock-tables参数则会自动将其关闭

    • 推荐在mysqldump中使用该参数

  • mysql逻辑备份&恢复

    • mysqldump备份
    • mysql、source恢复

这里使用的是mailutils工具包,请提前下载,输入命令:apt install -y mailutils。发送测试邮件:

echo "备份数据,$(date +%F' '%H:%M:%S)" | mail -s "MySQL数据备份" 你的邮件地址

发送成功之后,可以直接到邮件中查看发送结果。

如何实现定时发送呢?

Ubuntu 默认自带了Crontab计划任务,它的工作方式与 Windows 中的任务调度程序相同。使用 cron 守护程序,可以指定应执行某个进程(例如维护或备份作业)的时间。这样,就可以自动执行这些任务,以便稍后运行,而无需手动干预。

查看Cron服务相关命令:

# 查看服务状态
sudo  service cron status
# 开启服务
sudo service cron start
# 停止服务
sudo service cron stop
# 重启服务
sudo service cron restart

设置定时任务:

输入命令 crontab -e 并按 Enter 键打开 crontab 文件。该命令如下所示:

# 编写定时任务
crontab -e
# 查看定时任务
crontab -l

初次使用会让你选择文本编辑器,默认是 nano ,但是我只会用 vim ,所以选择 3,如图:

然后在最后插入以下内容就可以了:

# 每2分钟执行一次root目录下的mysqltest.sh脚本
*/2 * * * * /root/mysqltest.sh

Crontab定时任务命令格式

# 格式如下
# minute hour day-of-month month-of-year day-of-week commands
# 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 

# 每天0点0分,执行指定脚本
0 0 * * * /root/mysqltest.sh

# 星期1到星期5,11点30分,执行指定脚本
30 11 * * 1,2,3,4,5 /root/mysqltest.sh

...

首先 crontab 任务配置基本格

*   *  *  *  *  command
  • 第1列表示分钟0~59 每分钟用*或者 */1表示
  • 第2列表示小时0~23(0表示0点)
  • 第3列表示日期1~31
  • 第4列表示月份1~12
  • 第5列标识号星期0~6(0,7都可表示星期天)
  • 第6列要运行的命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值