MySQL 定时备份

Spring Cloud 微服务系列文章,点击上方合集↑

1. 开头

MySQL是一个广泛使用的关系型数据库管理系统,为了避免数据丢失和损坏的风险,定期备份数据库是一种行之有效的解决方案。本文将介绍如何编写备份脚本、执行脚本,并使用crond实现定时执行备份任务,以确保MySQL数据库的数据得到可靠的保护。

2. 编写备份脚本

编写备份数据库脚本vim backup.sh,内容如下:

mysqldump -h127.0.0.1 -uroot -p123456 \
--single-transaction \
--set-gtid-purged=OFF \
--all-databases \
--source-data=2 \
--triggers --events \
--routines | gzip \
> /home/backup/all_$(date +%Y%m%d_%H%M%S).sql.gz
  • -h127.0.0.1:指定要备份的MySQL服务器的主机名或IP地址。这里使用的是本地主机(127.0.0.1)。

  • -uroot:使用root用户进行登录。在实际使用时,可以将root替换为其他具有足够权限的有效用户名。

  • -p123456:指定root用户的密码。这个例子中,密码是123456。在实际使用时,请将其替换为实际的密码。

  • --single-transaction:在备份过程中使用事务,确保备份数据的一致性。这个参数对于大型数据库备份非常有用,因为它避免了锁定整个数据库。

  • --set-gtid-purged=OFF:关闭GTID(全局事务标识)的删除。默认情况下,如果启用了GTID,mysqldump会在备份期间自动删除GTID信息。通过设置为OFF,就可以保留GTID信息。

  • --all-databases:备份所有数据库。如果只想备份特定的数据库,可以替换为要备份的数据库名。

  • --source-data=2:生成输出文件时,在备份文件的注释部分包括主服务器的日志文件和位置。这个选项适用于主从复制环境,可以用于恢复备份数据并重新启动从服务器。

  • --triggers:备份时包括触发器的定义,以便在恢复数据时能正确创建触发器。

  • --events:备份时包括事件的定义,以便在恢复数据时能正确创建事件。

  • --routines:备份时包括存储过程和函数的定义,以便在恢复数据时能正确创建它们。

  • | gzip > /home/backup/all_$(date +%Y%m%d_%H%M%S).sql.gz:将备份数据通过管道传递给gzip压缩命令,并将压缩后的数据保存到指定的路径。$(date +%Y%m%d_%H%M%S)部分是使用Shell命令获取当前日期和时间,并将其作为压缩文件名的一部分。

确保备份路径(/home/backup/)对于执行命令的用户是可写的,并根据需要进行相应的调整。

3. 执行脚本

给该脚本文件赋予执行权限:

chmod +x backup.sh

执行脚本:

./backup.sh
  • 执行后会生成类似all_20230922_162449.sql.gz这样的备份文件。

4. crond定时执行脚本

开启crond服务,并crontab -e设置每晚3点30执行备份脚本。

# 开启crond
systemctl start crond

# 编辑定时任务
crontab -e

30 3 * * * /home/backup/backup.sh
# 查看定时任务
crontab -l

#日志
tail -f /var/log/cron

5. 结尾

通过编写备份脚本、执行脚本并设置定时执行任务,我们可以轻松地实现定时备份MySQL数据库。这种自动化的备份策略不仅省去了手动备份的麻烦,还可以保障数据的安全和可靠性。

在实际情况中:假设在9点对数据库进行了备份,且在10点发生了故障。此时,可以使用9点的备份文件来还原数据库至9点的状态,但是因为备份文件不包含10点之后的数据变化,所以需要使用数据库日志文件来还原10点之后的数据更新,以尽可能地恢复数据库至故障之前的状态。


Spring Cloud 微服务系列 完整的代码在仓库的sourcecode/spring-cloud-demo目录下。

gitee(推荐):https://gitee.com/cunzaizhe/xiaohuge-blog

github:https://github.com/tigerleeli/xiaohuge-blog

关注微信公众号:“小虎哥的技术博客”,让我们一起成为更优秀的程序员❤️!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小虎哥的技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值