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点之后的数据更新,以尽可能地恢复数据库至故障之前的状态。


MySQL 定时备份_第1张图片

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

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

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

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

你可能感兴趣的:(Spring,Cloud,微服务系列,mysql,定时备份,mysql定时备份)