思路
otter讀取binlog中的日志信息蓄坏,導(dǎo)入擴(kuò)容后的dble中。當(dāng)原庫和dble中數(shù)據(jù)同步完成時(shí)切換到新的路由丑念。
工具
- otter
-
dble(需做修改)
修改版修改部分代碼以兼容otter的復(fù)合語句涡戳,dble基于Mycat修復(fù)了較多bug
前提條件
- 源數(shù)據(jù)庫是 Mysql 并開啟Row模式的Binlog(中途開啟不僅丟失數(shù)據(jù),還可能導(dǎo)致遷移失敻小)
- 數(shù)據(jù)庫默認(rèn)字符集為GBK渔彰、UTF8嵌屎、UTF8MB4、ISO-8859-1(otter 默認(rèn)數(shù)據(jù)源只支持這些)
- 如果進(jìn)行擴(kuò)容恍涂,源庫不能有主鍵修改的相關(guān)操作
環(huán)境準(zhǔn)備
- zookeeper搭建宝惰,自行百度
- otter搭建 QuickStart
- dble搭建 dble-docs
具體步驟
-
zookeeper配置
zookeeper管理 -
node配置
node管理 -
數(shù)據(jù)源和數(shù)據(jù)表配置
數(shù)據(jù)源配置.png
數(shù)據(jù)表配置.png -
canal配置,設(shè)置位點(diǎn)信息為起始位置
canal配置.png -
添加Channel
添加Channel.png -
添加Pipeline再沧,高級(jí)設(shè)置中選擇跳過ddl異常
編輯Pipeline.png
高級(jí)設(shè)置跳過ddl異常.png -
添加映射關(guān)系
添加映射關(guān)系.png -
啟動(dòng)
啟動(dòng).png
注意事項(xiàng)
- 原版本dble DruidInsertParse.java :221 處理如下 插入語句會(huì)報(bào)包含主鍵異常尼夺,需修改以兼容otter
insert into `xxx`(`name` , `id`) values (1 , 1) on duplicate key update `name`=values(`name`) , `id`=values(`id`)
代碼修改.png
- 默認(rèn)同步是從開啟otter時(shí)binlog的當(dāng)前位置開始,同步整個(gè)表需設(shè)置canal自定義位點(diǎn)為起始位點(diǎn)炒瘸。
- 在Mysql中執(zhí)行show binary logs 查看初始binlog
-
配置管理 > canal配置 > 位點(diǎn)自定義設(shè)置 > 位點(diǎn)信息: {"journalName":"mysql-bin.000001","position":0};
binlog.png
- 關(guān)于全量同步還可以通過canal的自由門來實(shí)現(xiàn)