• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • -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
    
    • 1

    执行脚本:

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

    4. crond定时执行脚本

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

    # 开启crond
    systemctl start crond
    
    # 编辑定时任务
    crontab -e
    
    30 3 * * * /home/backup/backup.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # 查看定时任务
    crontab -l
    
    #日志
    tail -f /var/log/cron
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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

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

  • 相关阅读:
    项目复盘:从实践中学习
    【JAVA程序设计】基于JavaWeb技术的医疗管理系统-有报告
    Klocwork 2023.2 windows
    【MySQL--->视图】
    【附源码】计算机毕业设计SSM网上超市系统
    计算机的组成部件的作用
    Linux之Vim编辑命令
    vue 组件公共的方法
    Hello-FPGA CoaXPress 2.0 FPGA DEVICE IP Core Demo
    这怎么回事?宝宝边吃母乳边用手推妈妈,宝宝的心思知多少
  • 原文地址:https://blog.csdn.net/qq_28883885/article/details/133746428