简述
MySQL 到 MySQL 在线同步不是一个陈腐话题了,然而面对数据源异构、高度产品化创立、并且稳固运行于在线严苛场景,须要做的工作会比一个单纯工具或者脚本多得多。本篇文章仅从性能角度介绍 CloudCanal 如何疾速创立并运行此种数据链路。
技术点
“ 异构 ” 和面临的问题
通常所说的数据库异构在于三个维度,互相能够组合,包含 两端数据库类型不同 、 表构造束缚不统一 和 数据差别。后两者工作更多在于传统 ETL 畛域的 Transform 领域,在现在大数据 ODS 构建过程中被弱化 (所谓 ELT), 然而在在线业务畛域依然存在较多严苛需要(Streaming)。而前者对系统的架构和外围数据结构设计有诸多要求,这些要求来自于 增量数据获取形式多样 、SQL 方言差别、 束缚差别 、 元数据差别 、 部署状态 (如分布式) 等问题的解决。
增量数据获取形式 如 ORACLE 的 redo 日志、物化视图,MySQL binlog、Postgres WAL、MongoDB oplog 等千差万别,如何疾速减少源端数据库反对须要零碎级设计和形象,也是一个比拟漫长的过程。
SQL 方言差别 如 RDB 分页差别(数据扫描)、写入抵触解决、大小写、表构造定义差别等。 束缚差别 如索引 owner 归属偏差、partition key/sharding key 和 PK/UK 的关系差别(如 GreenPlum 对惟一键的要求) 等。上述两个差别,对于纯正数据迁徙、同步影响较小,然而对于 DDL 同步、构造迁徙存在微小挑战(如 MySQL 到 Greenplum 须要对索引重命名、裁剪和 partition key 无关的 UK 等),在库、表、列映射、裁剪等状况下,更加简单。
元数据差别 包含数据类型转换、db/schema/table/topic/tablespace/index(ES) 档次差别、partition key / sharding key 等构造反对、分布式数据库分片差别(如 MongoDB shard/replication set 构造和分布式数据库中间件 shard 的迁徙同步架构对立),以及 big evil 以分布式数据中间件为源端的 DDL 同步。
然而明天,咱们并不开展介绍 数据库类型不同 的数据迁徙同步性能,而是介绍 MySQL 到 MySQL 在线数据迁徙同步所面临的异构问题,更多是业务需要所产生的 表构造不统一 和 数据差别 ,其中包含库、表、列映射、裁剪 和 数据过滤。心愿此篇文章可能让你在 5 分钟内搞定这个事件( 环境 ready 的状况下)。
举个 ” 栗子 ”
筹备 CloudCanal
SAAS 版参考 自建机器客户端装置 文章
社区版参考文章 docker 装置 文章
数据库筹备
咱们有 3 个 MySQL 数据库,源实例上的库叫 drds_1 和 drds_2,指标实例上有 drds_merge 库,其中源库外面有若干张表,并且存在一些测试数据,有些表失常迁徙(worker_stats 表), 有些表须要汇聚(shard_x 表),有些表须要构造迁徙(kbs_question),有些表有映射(shard_x 表),有些表不同步(kbs_article 表),有些表字段须要映射和裁剪(data_job)。接下来咱们花 5 分钟工夫来搞定这个事件,并且做一次数据校验。
造些数据
- 启动源端造增量数据程序,IUD 比例 30:50:20
创立工作
- 抉择源数据库和指标数据库,做好库映射。操作结束点击下一步。
- 抉择数据同步,并默认勾选数据初始化、DDL 同步,此处勾选做一次性数据校验,在主工作增量追上阶段,主动进行数据校验。当然咱们也能够随时随地创立独自的数据校验工作。操作结束点击下一步。
- 抉择表,并做好表映射,以及去除不想迁徙同步的表。操作结束点击下一步。
- 抉择列,并做好列映射、裁剪掉某些不须要表的列。
- 批量设置惟一键为主键。
- 设置数据过滤,如图中 id < 3000。操作结束点击下一步。
- 确认创立工作。确认结束点击创立工作。
工作运行
- 如果抉择的库、表、列在对端不存在,则进行构造迁徙
- 构造迁徙实现后主动进行数据初始化,映射、裁剪、数据过滤依照设定运行。目前 CloudCanal 数据初始化都是逻辑初始化,速度可能没有某些物理初始化快,然而灵便度高。
- 数据初始化结束,开始进行增量同步。增量同步会主动从数据初始化位点拉取 MySQL binlog 进行回放,同样会执行映射、裁剪、以及数据过滤等操作。
数据校验
- 按雷同逻辑创立一个增量工作。(暂未推出创立类似工作)
- 校验工作跑完,获取差别数据,并抽样比照,数据统一。校验的差别次要是数据屡次更新、同步提早等造成,个别非大规模不统一或失落,则数据失常。
- 数据差别数据目前须要到工作日志目录获取,临时未提供日志下载能力。
总结
异构数据源的在线迁徙和同步,此篇文章次要简略介绍了下性能,对于在线严苛场景而言,后续的监控告警、容灾、非凡数据处理、抗峰值、问题排查等都是重要工作。
在文末,贴一下咱们社区版下载帖,欢送下载并尝试咱们的产品,快来构建属于你本人的在线数据工作吧。
CloudCanal- 收费好用的企业级数据同步工具。
CloudCanal 官网地址:https://www.clougence.com
CloudCanal 官网社区地址:https://www.askcug.com/
CloudCanal 粉丝群 (增加咱们小助手 suhuayue001 拉你进群)
CloudCanal- 收费好用的企业级数据同步工具,欢送品鉴。
理解产品能够查看官方网站:http://www.clougence.com
CloudCanal 社区:https://www.askcug.com/