MySQL增量备份是在全量备份的基础上,备份每次更新、修改、新增的数据,以达到备份数据更加实时的目的。下面为大家介绍MySQL增量备份及断点恢复的脚本实例。
增量备份
概述
增量备份分为两个步骤:
- 导出全量备份;
- 将全量备份时间到现在更新的数据备份。
全量备份
在Linux系统下,使用mysqldump命令进行备份。命令如下:
# mysqldump -h主机名 -u用户名 -p密码 数据库名 > 备份文件名.sql
-h
后面跟的是主机名或IP地址,表示连接到哪个MySQL服务器;-u
后面跟的是MySQL用户名;-p
后面跟的是MySQL用户的密码;- 最后的
>
将备份文件保存到特定目录下。
增量备份
向日志文件中追加二进制日志,记录MySQL Server对数据的每个修改操作。将日志文件备份,并在下一次备份时,备份从上一个备份时间到现在的所有日志文件即可。
具体实现方式如下:
- 编辑 MySQL 配置文件 my.cnf,启用二进制日志,记录慢查询日志,在末尾加上以下几行:
log-bin=mysql-bin
expire_logs_days=7
log_slave_updates=1
log-slow-queries=/var/log/mysql/mysql-slow.log
long_query_time=1
其中 log-bin
表示启用二进制日志的文件名;expire_logs_days
表示日志文件过期时间为7天;log_slave_updates
表示允许从节点服务器写入主节点的二进制日志;log-slow-queries
表示日志文件的存放路径及文件名;long_query_time=1
表示记录执行时间超过1秒的慢查询到慢查询日志中。
- 按照时间顺序备份增量部分的二进制日志文件。命令如下:
# mysqlbinlog --start-datetime="起始时间" --stop-datetime="结束时间" "二进制日志文件" > 备份文件.sql
参数说明:
--start-datetime
指定备份的开始时间;--stop-datetime
指定备份的结束时间;"二进制日志文件"
是增量备份的日志文件名。
示例说明
下面是一个增量备份示例。假设我们在 2021 年 10 月 1 日进行了一次全量备份,并于 10 月 2 日开始进行增量备份,备份到当天 12 时。
# 完整备份
# mysqldump -uroot -p123456 mydb > /opt/db_backup/fullbk_2021-10-01.sql
# 增量备份
# 备份从1日0时到2日0时的日志
# mysqlbinlog --start-datetime="2021-10-01 00:00:00" --stop-datetime="2021-10-02 00:00:00" /var/lib/mysql/mysql-bin.000001 > /opt/db_backup/incremental_2021-10-02_00-00.sql
# 备份从2日0时到2日12时的日志
# mysqlbinlog --start-datetime="2021-10-02 00:00:00" --stop-datetime="2021-10-02 12:00:00" /var/lib/mysql/mysql-bin.000002 > /opt/db_backup/incremental_2021-10-02_12-00.sql
断点恢复
完整恢复:通过mysqldump命令将备份文件导入到MySQL中。
增量恢复:
- 将全量备份恢复到指定数据库。
- 逐个导入增量备份。
示例说明
下面是一个增量恢复的示例。假设我们有三个备份文件:fullbk_2021-10-01.sql
、incremental_2021-10-02_00-00.sql
、incremental_2021-10-02_12-00.sql
。
# 恢复全量备份
# mysql -u 用户名 -p 数据库名 < /opt/db_backup/fullbk_2021-10-01.sql
# 恢复增量备份1
# mysql -u 用户名 -p 数据库名 < /opt/db_backup/incremental_2021-10-02_00-00.sql
# 恢复增量备份2
# mysql -u 用户名 -p 数据库名 < /opt/db_backup/incremental_2021-10-02_12-00.sql
以上就是关于MySQL增量备份及断点恢复的完整攻略及示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql增量备份及断点恢复脚本实例 - Python技术站