最新要闻
- 母猪上树是什么意思?母猪上树是什么生肖动物?
- 今日热闻!理想官方详解为何L9、L8备受欢迎:全世界最先进的增程电动系统
- 资讯推荐:和苹果iPhone 14一样薄!vivo S16e首销:2099元起
- 没有科技与狠活 0添加配料表超干净!汇源果汁大促:24.8元2L
- 169元拿下Wi-Fi 6路由器!荣耀路由X4 Pro首销:可达1500Mbps
- 世界微资讯!官方剧透理想L7关键细节:皇后座后排超越豪华D级车
- 精彩看点:苹果为延长iPhone 14 Pro灵动岛面板使用寿命!要求三星用喷墨打印密封工艺
- 当前热点-女子放生2.5万斤鲇鱼被起诉:偏肉食动物 入侵能力极强
- 天天热推荐:不愧电动爹?零下25度暴风雪中的特斯拉Model 3:电池预热45分钟后才充上电
- 每日快报!mini LED和LCD将要拜拜了 iPad Pro未来会升级OLED屏
- 能跑1200公里 长城魏牌六座旗舰SUV正式亮相:前脸大改!
- 2022年这5款熟悉的产品向我们告别 太可惜了
- 全球快播:Lightning再见!第二大手机国印度强推USB-C接口:iPhone必须换
- 天天滚动:Epic今年终极一送:好评如潮游戏《羞辱》免费领!省173块
- 全球热推荐:纯钛杯身!小米米家保温杯Ti首批卖光了:30小时众筹金额破50万元
- SSD也没人买了?未来三年增速下滑:降价吸引力也不大
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
当前时讯:CloudCanal对Online DDL 工具 GH-OST 和 PT-OSC 的支持
简介
CloudCanal 实现了对 Online DDL 工具如 GH-OST 和 PT-OSC 的支持,保证了对端实时同步源端的 Online DDL 操作。
本文以 MySQL -> MySQL 同步链路使用 GH-OST 为例,介绍 CloudCanal 是如何支持实时同步 GH-OST 产生的 DDL 的。
Online DDL 技术背景
市面上常用的两款MySQL Online DDL 工具分别是 GH-OST 和 PT-OSC,CloudCanal 对他们都做了兼容处理使得用户可以实时同步 Online DDL 工具产生的 DDL 。下面简单介绍下他们的工作流程,以便于读者理解后续章节的内容。
(资料图片仅供参考)
Online DDL 工具 PT-OSC 原理
PT-OSC 是较为常用的 Online DDL 工具,通过触发器来同步增量数据,相较于 MySQL 原生的 Online DDL 性能得到了极大的提高,原理如下:
- 对源表进行检查
- 创建一个与源表(origin)结构一致的空表,命名为 _origin_new
- 根据alter参数修改新表的表结构
- 在源表中创建三个触发器:Delete / Update / Insert,将源表中的增删改语句同步执行到新表中,同时将源表中的数据以数据块的形式 copy 到新表
- 将源表(origin)rename为 _origin_old,将 _origin_new rename 为 origin,然后删除旧表(可选)
- 删除触发器
总结:PT-OSC 是通过创建临时表,并用触发器将增量数据同步到新表,通过当前读和事务来实现增量与全量的有序,不会阻塞读写操作,但运行过程中出现异常,无法从上一个位置继续进行,需要从头开始。
Online DDL 工具 GH-OST 原理
GH-OST 也是一款常用的 Online DDL 工具,采用读取 binlog 日志的方式来同步增量数据,原理如下:
- 对源表(origin)进行检查
- 在主/从节点中添加binlog日志监听
- 创建日志记录表(_origin_ghc)和与源表结构一致的影子表(_origin_gho)
- 根据alter参数修改影子表的表结构
- 全量拷贝源表数据同时拷贝源表增量数据到影子表中,并记录日志到日志记录表中
- 删除日志记录表,将源表改名为 _origin_del, 将影子表改名为 origin,_origin_del 可选删除
总结:GH-OST 的性能与 PT-OSC 相近,相较于PT-OSC 的优点就在于其是不使用触发器的,只异步读取二进制日志,因此修改表定义的负载和正常的业务负载解耦开了,它不需要考虑被修改的表上的并发操作和竞争等,并且相较于 PT-OSC 的中断从头开始,GH-OST 可以从心跳日志中恢复到指定位置。
CloudCanal 技术点
前文中对 Online DDL 工具的原理中我们知道,无论采用哪种 Online DDL 工具,源端都会产生一些临时表的创建和数据写入,如果不做任何兼容处理,这会影响正常的迁移同步链路。
因此为了支持 GH-OST 和 PT-OSC 工具的使用,CloudCanal 在 MySQL 源端做了大量优化,完美的适配并优化了 GH-OST 和 PT-OSC 的 Online DDL 能力
同步临时表数据
GH-OST 和 PT-OSC 工具都有一个共同的特点,其原理都是采用临时表的方式来保证 DDL 与 DML 的并发操作。
CloudCanal 默认的表订阅模式是只订阅原表,不订阅与原表相关的临时表(订阅表即同步该表的 DDL 与 DML 语句),而 CloudCanal 为了满足对 Online DDL 工具的支持,在源数据端配置上新增了 extraDDL 参数来实现对临时表的订阅。
- extraDDL参数:
- 可选参数:NONE / GHOST / PT
- 作用:选择 NONE 则不订阅任何临时表,选择 GHOST / PT 则订阅相应的默认临时表
CloudCanal 针对临时表订阅采用的是两种模式:自动订阅临时表模式和自动同步元数据模式
- 自动订阅临时表:CloudCanal 会自动根据 extraDDL 参数将默认的临时表加入到订阅表集合中,随后读取binlog日志时将不会过滤掉临时表的所有变更事件,保证了对端数据源表结构与数据的最终一致性
- 自动同步元数据:CloudCanal 会自动过滤临时表,在读取binlog日志时不会执行 Online DDL 的操作,在 Online DDL 执行完毕后发送最新的表结构,期间的 DML 语句也会同步发送到对端,保证对端数据源表结构与数据的最终一致性
由于各数据源对同步数据的消费并不相同,如消息队列只需要解析 Online DDL 后的表结构即可,无需订阅临时表,因此我们需要根据对端数据源的消费模式做出不同的处理。
DDL 解析与转换
不同数据源的 DDL 语句会有所差异,CloudCanal 对不同数据源 DDL 语句的解析和转换做了大量的优化。
- 解析:将 DDL 语句解析为操作类型,如 CREATE ,DROP,ALTER 等
- 拆分过滤:若 DDL 语句不为单条操作,则拆分为多条 DDL 语句,根据订阅表集合和binlog位点记录过滤重复执行的 DDL 语句与去除无需同步的语句后,重新合成新的 DDL 语句
- 转换:将过滤好的 DDL 语句转换为对端数据源的方言
下图演示了CloudCanal对DDL语句的一些处理:
容错机制
当 CloudCanal 在同步 Online DDL 时,任务有可能在两个层面上被中断:Online DDL 工具层面和 CloudCanal任务层面
Online DDL 工具中断:由于 PT-OSC 和 GH-OST 的原理不同,Online DDL 过程中断的恢复方案也有所不同
- PT-OSC:Online DDL 过程中出现异常中断,重新执行 Online DDL 操作会丢弃之前的所有操作,从头开始再次执行
- GH-OST:Online DDL 过程中出现异常中断,重新执行 Online DDL 操作会读取ghc日志心跳表,从日志中的未完成位点开始继续执行。在此过程中,CloudCanal只需读取binlog日志,照常执行 Online DDL 的所有操作即可保证数据的最终一致性
CloudCanal任务中断:由于 CloudCanal 良好的异步消费特性,CloudCanal的任务中断与 Online DDL 的执行并不相关。当 CloudCanal 任务中断后,重启任务会根据位点记录继续执行binlog日志中的事件,保证了数据的最终一致性。
使用示例
前置条件
- 安装 GH-OST
- 登入 CloudCanal SaaS版,使用参见 快速上手文档
- 准备一个 MySQL 数据库,对端数据库(以 MySQL -> MySQL为例)
CREATE TABLE `ghost_test`.`abc` ( `id` int NOT NULL, `name` varchar(30) DEFAULT NULL, `cdata` datetime DEFAULT NULL, `udata` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
- 登录 CloudCanal 平台 ,添加源端与目标端数据源
任务创建
- 任务管理-> 任务创建。
- 测试连接并选择 源和 目标数据库。
- 选择增量同步任务和需要订阅的表与字段,并创建任务
- 增量任务中,功能列表 -> 参数修改 -> 源数据源配置 -> 参数 extraDDL设置为 GHOST
创建并且启动任务,当任务正常执行到增量阶段时,此时我们可以利用数据生成工具和Online DDL工具对源端数据库触发一些增量DML变更和DDL变更,然后查看CloudCanal是否能正常实时同步这些DML和DDL事件。
使用 Online DDL 工具修改表结构
- 首先使用数据生成工具实时随机生成数据,增删改比例为(4:4:3)
- 在大量写入数据的同时,使用 GH-OST 工具执行 DDL 语句:ALTER TABLE ADD COLUMN aaa VARCHAR(30) NOT NULL AFTER id。在我们的测试例子中,有 DML 语句的同时使用 GH-OST 执行 DDL 语句,源端总计写入14147 条数据和1条DDL。
[root@zjx local] ./gh-ost --debug --user="{数据库用户名}" --password="{数据库密码}" --host="{数据库主机IP}" --port="{数据库端口号}" --database="ghost_test" --table="abc" --initially-drop-ghost-table --initially-drop-old-table --allow-on-master --alter="ADD COLUMN aaa varchar(30) NOT NULL AFTER id" --execute
确认同步结果
CloudCanal会自动完成源端实时DML和DDL事件的同步,在执行完源端事件写入之后,我们确认下同步结果。
- 更改后的源对端 表结构一致
- 源对端进行数据校验 数据一致
总结:由上可知,在 CloudCanal 中使用 GH-OST 工具执行 Online DDL 指令,源表完成表结构修改后,CloudCanal 将源表的表结构成功同步到了目标端数据表中。
常见问题
CloudCanal 支持的同步链路
目前 CloudCanal 支持使用 Online DDL 工具的链路为:
- MySQL -> MySQL
- MySQL -> PostgreSQL
- MySQL -> Greenplum
- MySQL -> Kafka
- MySQL -> RocketMQ
- MySQL -> RabbitMQ
不支持同步的 DDL 语句
使用 Online DDL 工具执行的 DDL 语句中不支持 RENAME 原表与临时表的操作,如上述用例中,ALTER 语句若改为 RENAME TABLE ghost_test.abc TO ghost_test.ccc,那么 Online DDL 工具后续的 RENAME TABLE ghost_test.abc TO ghost_test._abc_del, ghost_test._abc_gho TO ghost_test.abc 操作就会失败,致使 Online DDL 操作失败。
总结
本文主要介绍了 Online DDL 工具的使用并展示了 CloudCanal 对 Online DDL 工具的实时同步能力,得益于 GH-OST、PT-OSC 优秀的表结构修改性能和 CloudCanal 强大的同步能力,基本能满足企业在日常执行 DDL 的业务中,数据表的 DML 执行和数据同步性能要求
-
当前时讯:CloudCanal对Online DDL 工具 GH-OST 和 PT-OSC 的支持
简介CloudCanal实现了对OnlineDDL工具如GH-OST和PT-OSC的支持,保证了对端实时同步源端的OnlineDDL操作。本文以MySQL->My
来源: 当前时讯:CloudCanal对Online DDL 工具 GH-OST 和 PT-OSC 的支持
【全球新视野】手撕fft算法--fft原理和源码解析
母猪上树是什么意思?母猪上树是什么生肖动物?
变频空调制热一小时多少度电?变频空调和定频空调的区别
三星i9250是什么型号?三星i9250手机参数
金山毒霸和360卫士哪个好?金山毒霸有必要安装吗?
英雄联盟adc是什么意思?英雄联盟adc全部英雄图鉴
半导体激光器的工作原理是什么?半导体激光器的优缺点
今日热闻!理想官方详解为何L9、L8备受欢迎:全世界最先进的增程电动系统
资讯推荐:和苹果iPhone 14一样薄!vivo S16e首销:2099元起
没有科技与狠活 0添加配料表超干净!汇源果汁大促:24.8元2L
169元拿下Wi-Fi 6路由器!荣耀路由X4 Pro首销:可达1500Mbps
世界微资讯!官方剧透理想L7关键细节:皇后座后排超越豪华D级车
世界资讯:【爬虫实战项目】Python爬虫批量下载网易云音乐飙升榜并保存本地(附源码)
世界看热讯:分布式、集群、微服务、微前端、负载均衡的概念
精彩看点:苹果为延长iPhone 14 Pro灵动岛面板使用寿命!要求三星用喷墨打印密封工艺
当前热点-女子放生2.5万斤鲇鱼被起诉:偏肉食动物 入侵能力极强
天天热推荐:不愧电动爹?零下25度暴风雪中的特斯拉Model 3:电池预热45分钟后才充上电
每日快报!mini LED和LCD将要拜拜了 iPad Pro未来会升级OLED屏
能跑1200公里 长城魏牌六座旗舰SUV正式亮相:前脸大改!
关系型数据库 和 非关系型数据库
2022年这5款熟悉的产品向我们告别 太可惜了
全球快播:Lightning再见!第二大手机国印度强推USB-C接口:iPhone必须换
天天滚动:Epic今年终极一送:好评如潮游戏《羞辱》免费领!省173块
全球热推荐:纯钛杯身!小米米家保温杯Ti首批卖光了:30小时众筹金额破50万元
SSD也没人买了?未来三年增速下滑:降价吸引力也不大
世界微资讯!暴雪仍没找到人接盘!《魔兽世界》等国服将停止 网易称服务到最后一刻
世界快资讯丨博客园图片问题
环球快看点丨iPhone 15系列差异化加大:iPhone 15 Plus或大降价
全球信息:我注册B站3736天了!还记得10年前的小破站什么样吗?
每日观察!一年一度的进口游戏版号来了 这次有不少“硬货”!
要闻:威马汽车拿到四川的救命钱!但负面缠身的它还能活过来吗?
简讯:航空工业AS700民用飞艇02架首飞成功:可载9人、能飞10小时
回归童年的美好 守住童年的回忆 那些年你玩过的游戏都有呢
mysql之索引
游戏免费送 折扣超Steam Epic的冬季特卖属实有点暴力了
全球讯息:网信办通报173款APP:正“偷窥”你的隐私 赶紧卸载
速递!Python 面向对象进阶
最资讯丨10 个你需要熟悉的 CSS3 属性
当前滚动:广西现大型金属残骸 现场升起火苗:原来是火箭助推器
天天观天下!Codeforces 1336 F Journey 题解
每日精选:马斯克SpaceX公司副总裁私人飞机冲出跑道 网友:人身安全警告?
报道:浙江多地下雪 2023年第一股冷空气来了
2万多的日本水晶椅看着太像刑具:屁股瑟瑟发抖
世界动态:2023年最受期待的十款国产游戏 《黑神话:悟空》位列第一
当前头条:FreeSWITCH给Say模块增加中文语音
全球微头条丨12核Zen4又降价了 AMD锐龙9 7900X到手3259元(首发4299)
观察:小米送福利!MIX Fold 2用户花1分钱可领399元保护壳
热资讯!仍由腾讯代理!《CF》开发商新作《命运方舟》国服官宣:2023年上线
【热闻】周鸿祎:360现在的对手不再是国内同行
苹果手表血氧监测功能被指有种族偏见 在美国被告上法庭
Fiddler V5.0 英文/汉化 Windows 抓包工具 【12月29日亲测有效】
RX 7900危了 消息称RTX 4070 Ti显卡降价700元:性价比大增
当前焦点!卡丁车手比赛撞柱身亡 主办方回应:赛道由专业设计师设计
天天微资讯!Doge表情包原型柴犬患白血病和肝病:情况糟糕、生命危险
环球看热讯:明星带货表演砍价被调侃演技巅峰上热搜:律师喊话先涨再降涉嫌价格欺诈
比亚迪大屏立功 中国乘用车仪表盘平均尺寸将增至近10英寸
世界微资讯!AMD、NV让你失望了!2023年显卡价格仍将居高不下 降价希望渺茫
【天天快播报】骨折价没人要!首架波音747-8宣告报废:才飞了不到30小时
《阿凡达2》成2022全球票房亚军!仅次于《壮志凌云2》
世界通讯!今年春节乐趣不限量!PICO 4新春礼盒成年货新选择
如何选购云服务器
终极.NET混淆器丨.NET Reactor产品介绍
linux跟踪技术之ebpf
天天快报!AcWing246. 区间最大公约数
【世界独家】30层楼高、叶轮直径191米!国内单机容量最大高原山地风机成功吊装
全球今头条!19999元!铁威马发布12盘位NAS T12-450:总容量可达240TB
羊了个羊创始人没想到一季度挣了20万:公司仅7人参保
焦点速递!俞敏洪最想读的三本书:《道德经》《红楼梦》《金瓶梅》
Cubase11安装破解图文教程 【2022年12月29日亲测有效】
焦点速读:linux Makefile 如何将生成的 .o 文件放到指定文件夹
热点聚焦:python字典中dict.get()和dict.setdefault()的异同点
LG发布全新光学变焦手机镜头模组:支持4~9倍光学变焦自由切换
【独家】女子搬家后发现新房藏有豪华地堡:眼尖网友指出关键所在
每日简讯:《羊了个羊》老板曾被嘲笑不懂做游戏:最初目标是一季度挣20万
当前热议!一加携手AAC瑞声科技联合打造!官方详解安卓最强马达细节
【聚看点】网络游戏作品首次!《王者荣耀》《和平精英》入藏中国国家版本馆
热点在线丨还有企业没有在用JNPF吗! 适配于多行业的管理系统,各企业之首选
速看:火山引擎 DataTester:如何做 A/B 实验的假设检验
每日热议!折腾了我一周,原来Netty网络编程就是这么个破玩意儿!!!
【报资讯】LF Professional及WINTERACTER产品简介
全球短讯!几个函数的使用例子:更新VBRK-XBLNR,IB01设备BOM创建,LI11N输入库存盘点
速看:Chrome浏览器强化安全性:将阻止HTTP链接下载文件
真功夫快餐成被执行人:之前因侵权被功夫巨星李小龙之女起诉
热讯:京东苹果年货节超低价:iPhone 14系列最高降1000元
天天新资讯:壕无人性!Uzi沉迷《原神》竟然直播时充钱充到限额
世界短讯!赢麻!我国世界热点论文数量第一:远超美国、日本
天天日报丨【Python语法糖】闭包和装饰器
天天热头条丨Intel 13代酷睿i5-1350P使劲挤牙膏:只提升了2%
简讯:对标理想L8、问界M7 魏牌首款大六座SUV官宣:设计很有料
3999元 红魔8 Pro系列首销火爆售罄:高管感到出乎意料
天天时讯:致郑新黄河大桥200多辆车连撞!河南气象台回应郑州未发大雾预警
苹果市值一夜蒸发约4431亿元:iPhone出货量将迎锐减 万元高端机买不动了
每日热讯!郑州200多车相撞 雾天驾车开雾灯还是双闪灯?网友吵翻
信息:电竞级调校!Redmi K60 Pro《原神》须弥城跑图实测:1小时不降亮度
环球滚动:VueJS使用addEventListener的事件如何触发执行函数的this
农四师是什么意思?农四师属于哪个地区?
【焦点热闻】说好的比加油方便呢:英国特斯拉车主抱怨充电要排队数小时
世界视点!4999元 米粉入手小米13限定色:他最满意的安卓手机 太凉快了
今日热文:Win11 2023年“Moment 3”更新内容流出:将针对折叠屏设备进行优化