【DB宝16】使用PXB全量恢复+mysqlbinlog二进制日志增量恢复华为云RDS备份到本地MySQL库实现完全恢复

0    1591    5

👉 本文共约2190个字,系统预计阅读时间或需9分钟。

【DB宝16】使用PXB全量恢复+mysqlbinlog二进制日志增量恢复华为云RDS备份到本地MySQL库实现完全恢复

日常的数据备份及恢复测试,是DBA工作重中之重的事情,所以要做好备份及测试。MySQL数据库常见备份有mysqldump+binlog备份、xtrabackup+binlog备份,无论那一种,几乎都少不了对binlog的备份,说明了binlog在数据恢复中的重要性。

本文的恢复场景为:源库为华为云RDS for MySQL 5.7数据库,需要恢复到本地自建ECS中。本文演示的是一般恢复过程,详细日志没有写出。

恢复原理:华为云的RDS for MySQL的全备使用的是PXB进行的备份,没有增量备份,只有二进制日志的备份。

恢复工具:首先使用PXB(Percona XtraBackup)执行完全恢复,再使用mysqlbinlog工具解析二进制日志实现增量恢复。

一、本地ECS上安装相关软件

1.1 安装PXB软件(用于全量恢复,必须)

1.2 安装qpress软件(用于解压操作,必须)

1.3 安装mysqlbinlog软件(如果有MySQL Server环境,则不用单独安装,可选)

https://support.huaweicloud.com/usermanual-rds/rds_05_0138.html

1、MySQL的二进制日志(binary log)是一个二进制文件,主要记录了对MySQL数据库执行更改的所有操作,并且记录了语句发生时间、执行时长、操作数据等其它额外信息,但是它不记录SELECT、SHOW等那些不修改数据的SQL语句。二进制日志(binary log)主要用于数据库恢复和主从复制,以及审计(audit)操作。
2、mysqlbinlog工具用于解析binlog日志,包含在MySQL软件包中。您可在MySQL官网下载对应版本的MySQL软件包,解压并获取解压包中的mysqlbinlog工具(MySQL 5.6和5.7对应的mysqlbinlog版本均为3.4)。如果使用的mysqlbinlog工具版本太旧,就有可能无法正确解析MySQL binlog。软件包版本最好与当前您使用的msyqld大版本保持一致。

3、binlog格式是二进制日志,mysql使用mysqlbinlog工具解析。

mysqlbinlog语法格式:mysqlbinlog mysql-bin.000001 | mysql -uroot -p 数据库名

mysqlbinlog 常用参数:

(1)-d:指定特定数据库的binlog

(2)-r:相当于重定向到指定文件,与>、<作用相同

(3)--start-position和--stop-position:按照指定位置解析binlog日志(精确),如不接--stop-positiion则一直到binlog日志结尾

(4)--start-datetime和--stop-datetime:按照指定时间解析binlog日志(模糊,不准确),如不接--stop-datetime则一直到binlog日志结尾

(5)-D --disable-log-bin:禁止恢复过程产生日志。指定-D时使用mysqlbinlog解析binlog时,会看到sql_log_bin=0。也可以再把binlog解析到普通SQL文件,在mysql命令行下执行SQL文件前,手工设定set sql_log_bin=0,执行恢复SQL的过程就不会产生日志,恢复后再恢复set sql_log_bin=1。sql_log_bin 是一个动态变量,修改该变量时,可以只对当前会话生效(Session)

(6)-v :显示SQL语句,在行事件中重构伪SQL语句,将自动生成带注释的SQL语句,这个并非原始SQL语句(Reconstruct pseudo-SQL statements out of row events)

(7)-vv:显示的SQL语句之后会加上字段属性注释,另外,若配置了参数binlog_rows_query_log_events,则会显示原始SQL语句

(8)--base64-output=decode-rows:不显示BINLOG内容部分,注意:做恢复操作时不能加该参数,否则不能增量恢复

安装mysqlbinlog软件的步骤如下所示:

二、从华为云下载RDS for MySQL的全量+binlog备份

全量备份下载:https://support.huaweicloud.com/usermanual-rds/rds_09_0031.html

Binlog备份下载:https://support.huaweicloud.com/usermanual-rds/rds_03_0100.html

注意:当二进制日志很多时,建议“合并下载Binlog备份文件”,但是该功能不支持下载大于500MB以上的Binlog合并文件。

三、恢复数据库到最新状态

3.1 PXB恢复全量数据

3.2 mysqlbinlog恢复增量数据

注意:

在华为云上,如果架构是主备环境,那么全备数据是来自于备实例,增备数据来自主实例,所以两边的binlog号是有差异的,不能直接拿来恢复。可以通过最后的GTID和时间范围再确定具体的binlog文件的pos位置。

一个报错:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

[root@pxb soft]# mysqlbinlog /soft/mysql-bin.merged.21 –start-datetime='2020-07-28 01:31:53' | mysql -uroot -plhr
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1781 (HY000) at line 18: @@SESSION.GTID_NEXT cannot be set to UUID:NUMBER when @@GLOBAL.GTID_MODE = OFF.

解决:

在线修改GTID时,必须按照如下顺序 OFF <-> OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON,不能跳过其中环节,比如 gtid_mode 从off 不能直接变为on,否则MySQL会进行提示。

  • OFF :不产生GTID,Slave只接受不带GTID的事务
  • OFF_PERMISSIVE :不产生GTID,Slave即接受不带GTID的事务,也接受带GTID的事务
  • ON_PERMISSIVE :产生GTID,Slave即接受不带GTID的事务,也接受带GTID的事务
  • ON :产生GTID,Slave只能接受带GTID的事务。
    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    1 × 3 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部