OB 数据库迁移产品(OMS)实践总结

2024年 2月 23日 64.7k 0

OMS 是 OB 官方支持的跟 OB 有关的数据迁移和同步产品。由于传统数据库类型比较多、迁移和同步场景也很多,数据迁移和同步产品挑战也非常大。个人总结,如有不当欢迎指正。后期有新的经验再总结分享。

首先是迁移和同步的前提条件限制。

做数据迁移要求表有唯一性字段,方便对数据切分分批迁移、增量同步以及后期的数据校验。如果表没有主键,这个就非常麻烦。以ORACLE数据库迁移为例,OMS会利用ORACLE表的ROWID的唯一性去做无主键表的全量迁移和增量同步,但是 OB(ORACLE)存储原理跟ORACLE不一样,有这个字段但是不能改写,OMS只好在OB(ORACLE)上建表时增加四个隐藏列和一个唯一约束去保证这点。实际上OMS在迁移表的结构时,不管表有没有主键或唯一键,统一都加上了四个隐藏列和唯一约束(正式切换后会自动删除)。这对同步性能有一定负面影响,也是没办法中办法。这个还要求在迁移过程中,不要对ORACLE表做 MOVE 操作(会引起 ROWID变化,导致 OMS 认为是两笔记录)。
此外就是增量同步依赖源端传统数据库的事务日志解析技术。OMS 依赖 ORACLE 的 LOGMINER 组件,以及数据库或表要开补偿日志(supplemental log),依赖 MYSQL 的 BINLOG 并且 BINLOG 格式为 ROW 模式。其他数据库同理。开启了这个补偿日志后 ORACLE 的 REDO LOG 归档量会增加。同时为了保证同步事务的因果序一致,还要关闭 ORACLE 11g 后新增的 REDO LOG 并行写功能(对于 ORACLE 数据库运维而言这是倒退,但是为了迁移必须这么做,OGG 也是这么要求的)。所以迁移 ORACLE 数据到 OB 还需要懂 ORACLE 。在 OMS 的产品文档里对于迁移和同步的条件限制写得非常具体。第二是增量同步挑战。数据迁移发起后的 DDL 就是增量 DDL,包括修改和删除当前表、新增表等。迁移表对象有两种方法,一是指定要迁移的表对象,二是使用白名单和黑名单规则匹配表对象。前一种方法麻烦是新增的表默认不会进增量。后一种方法的风险是后期新增的表如果不满足迁移条件,很可能导致增量同步任务中断。增量同步链路可能会因为多种原因而出现中断,中断了OMS有告警,需要及时修复。这个修复的技术门槛很高。如果这个增量同步长期运行,对于 OMS 运维工作是很大的挑战。生产业务表变更非常频繁时,为了避免对 OMS 增量同步任务故障,要将 DDL 变更规范起来。如果 DDL 的控制权在业务研发手上,那运维就要辛苦很多了。对于 OGG 产品也是如此。如果需要规范数据库表变更行为,可以参考这个文章《杭州银行数据变更安全管控解决方案实践》。第三是反向同步挑战。不少 OB 客户数据迁移到 OB 后还要求能反向增量同步回原数据库。从理论上分析,如果表没有主键和唯一键,就无法满足这个要求。OB的四个隐藏列的数据跟ORACLE 的 ROWID 属于不同的机制,无法一一对应,无主键表在 OB 上新增的数据是无法实时同步回 ORACLE 的。所以,当你迁移上千个表时,只要有一个表没有主键,就会导致反向增量同步失败。这个修复工作就需要踢掉这个表。为了避免这个麻烦,在前期对要反向同步的表就要事先控制好。后期新增的表就是一个挑战。有些 DBA 或者应用喜欢在数据库里用 CTAS 语法备份表数据,这种表就往往是无主键表。
所以,异构数据实时同步时,同步链路比较脆弱。这个并不完全是产品的事情,还需要数据库运维和业务开发人员一起努力规范操作去保障同步的顺利。第四是迁移性能挑战。如果 ORACLE 数据量特别大(几十 TB),网络带宽不是很大,切换时业务停机时间非常短,那么数据迁移任务的性能挑战就非常大。需要多个角度去应对。比如选择性迁移数据。有些表可以走单独的迁移方法,有些表不要走增量同步,或者有些表的历史数据不要迁移(OMS 支持表带查询条件迁移数据)。OMS 的机器资源给足,CPU、内存和网络带宽尽可能的大,这样OMS的链路任务并发可以设置的很大。OMS 还可以多机部署,分散各个组件的任务。对于总体数据的迁移也可以采取分而治之的方法,将业务数据分模块隔开,分为多个迁移任务并行等。不过 OMS 迁移的性能越高,对源端数据库的压力(大批量数据读取)又会很高。必要的时候可以选择从备库全量迁移数据,从主库拉取日志。这个迁移链路就会相对复杂一些。真是快了也不行,慢了也不行。
生产环境 OMS 的部署现在使用 OAT 工具方便很多,早期的时候也可以手动部署。如果实验环境资源不足,可以参考之前的文章和下面的视频。

  • OB 企业版数据同步 OMS 部署实践
  • OAT 部署 OMS 演示视频。

  • OMS 同步 ORACLE 数据到 OB(ORACLE)。包括全量迁移、增量同步、DDL同步(自动)、全量校验、正向切换、反向增量同步。

  • OMS 同步 ORACLE 数据到 OB(ORACLE) 示例 2。

包括全量迁移、增量同步、DDL同步(手动增加新表)、全量校验、正向切换、反向增量同步。除了使用 OMS 可以迁移传统数据库到 OB 上,使用第三方专业数据库迁移软件也可以,如 DSG 。其他 OB 产品和数据库原理文章参考:历史文章精选(~2024/1/15)

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论