HotDB 备份恢复—— 使用二进制日志(增量)恢复

2022-03-15 00:00:00 数据 执行 命令 节点 计算

关于备份恢复,上一篇介绍了HotDB 的种数备份恢复——使用 mysqldump 备份

大家可以翻阅上一篇分享,接下来,我们介绍使用二进制日志(增量)恢复

使用二进制日志(增量)恢复

mysqlbinlog - 处理二进制日志文件的实用程序

计算节点支持 mysqlbinlog 命令,mysqlbinlog 命令能够解析 binlog 文件用于

同步增量数据,从而减少了将单机 MySQL 数据迁移至计算节点时的停机时间。使

用 mysqlbinlog 连接远程 mysql 实例获取 binlog 文件并解析出其中的 SQL 语句,

然后交由计算节点执行,从而将某个数据库的增量数据导入到计算节点某个逻辑

库下。首先,登入到管理端口(默认端口为 3325),执行 dbremapping 命令添

加数据库映射关系,关于 dbremapping 命令用法,请参考《分布式事务数据库 H

otDB Server【管理端命令】功能使用手册》。

然后使用 mysqlbinlog 语句执行选中部分的 binlog 中 SQL 语句,要求使用如下

语法与参数:

注:–to-last-log 可替换为–stop-position,指定 binlog 终止位置而非执行

到新的 binlog 位置。此命令需要跟远程连接的 MySQL 实例同版本。

例如希望将 192.168.200.77:3306 中的物理库 db01 导入计算节点 192.168.210.

30 中的逻辑库 logicdb01:

先至 192.168.210.30 登入到管理端口 3325,执行:

然后在 192.168.210.30 服务器上执行如下命令:

mysqldump 与 mysqlbinlog 的实际应用

此小节将展示如何在实际应用场景中,结合 mysqldump 的完整备份与 mysqlbinl

og 的增量备份,将数据从源端单机 MySQL 中迁移到 HotDB Server 中。

注意:整个操作过程中,不建议在数据迁移的源端或计算节点执行任何的 DDL、

参数变更等等非常规的操作动作。由于单线程操作且受网络延迟制约,此方式追

数据的执行速度会慢于 MySQL 复制的执行速度,因此不保证计算节点的执行速度

能够满足实时追上的要求,有可能存在数据延迟不断增大的现象,此时需要寻找

业务低谷重试,或者另外规划方案。

场景᧿述:希望将源端 192.168.210.45:3309(该实例为有生产数据的普通 MyS

QL 实例)中的物理库 db01 导入计算节点 192.168.210.32 中的逻辑库 logicdb0

1,参考步骤如下:

1. 使用 mysqldump 从数据迁移的源端(即 192.168.210.45:3309)导出表结构,

在 192.168.210.45 服务器上执行如下命令(必须添加如下参数):

2. 将表结构的 SQL 文件上传至计算节点所在服务器,即 192.168.210.32 后,登

录到计算节点上执行如下命令,导入表结构成功:

3. 使用 mysqldump 从数据迁移的源端(即 192.168.210.45:3309)导出表数据,

在 192.168.210.45 服务器上执行如下命令(必须添加如下参数):

4. 打开表数据的导出文件,查看当前 binlog 位置,如下显示则 binlog 位置为

2410,binlog 文件为 mysql-bin.000076:

5. 将表数据的 SQL 文件上传至计算节点所在服务器,即 192.168.210.32 后,登录到计算节点上执行如下命令,导入表数据成功:

特别注意,如果使用了外键,需要额外执行以下命令:

执行过程中,应密切关注是否出现警告或错误,否则可能会出现数据会不一致的

问题。

Tips:如果业务数据没有数据乱码问题,可以考虑 split 切分文件,并行导入计

算节点以加快处理速度。

使用 mysqlbinlog 做增量数据同步。若源端数据库名与计算节点的逻辑库名

不相同,则需要在管理端口先添加数据库映射关系,例如:

然后到计算节点(192.168.210.32)所在服务器上执行如下命令,binlog 开始

位置为第四步记录的位置(此例子中为 2410,binlog 文件为 mysql-bin.000076):

为了加快追数据的速度,建议执行 mysqlbinlog 命令的服务器就是计算节点所在

服务器,这样节省了 MySQL 命令行客户端执行 SQL 时 SQL 和 ok 包通过网络来回

的时间开销,可以极大ᨀ高计算节点单线程执行 SQL 的速度。

核对数据同步的正确性:此时需要进行必要的短时停服,中断业务系统向数据

库的写入操作。通过人工在源端执行一条特殊数据后查看该条数据是否已经同

步。等到确认计算节点已经追完新数据后,停止 mysqlbinlog 命令,若需要的

话,取消数据库名称映射。

Tips:可以在源端都执行如下命令后,将执行结果中出现的 SQL 语句复制后,在

源端和计算节点都执行一遍,查看执行结果是否一致来大致地判断数据是否一致

若执行结果一致,则表数据大概率一致。

例如在源端(192.168.200.77)MySQL 实例中执行如下:

其结果(1812521567)与在计算节点执行结果一致,则 table02 表数据大概率一

致。

来源 https://zhuanlan.zhihu.com/p/385300441

相关文章