使用datax+canal进行mysql数据迁移到oceanbase实时同步位点问题

【产品名称】oceanbase

【产品版本】v3.1.1

【问题描述】mysql 数据迁移到ob, 现在只有datax全量同步+canal增量同步这种方案吗? 这种方案的话, canal可以开始同步的位点怎么获取以及在canal上是否可设置?

预计明天,即12月31日会发布OMS一体化的全量和增量数据迁移的工具,

比如可以从datax全量同步的日志里看一下结束的时间,再从mysql的binlog里对应一下binlog file name,全量结束的时间点可以往前推1-2个binlog,填写一下canal insance的配置:

canal.instance.master.journal.name mysql主库链接时起始的binlog文件

canal.instance.master.position   mysql主库链接时起始的binlog偏移量

1 个赞

好的,感谢, 建议canal开源代码中, 模板配置文件(server/instance)中对配置项增加注释,方便理解配置

如楼上所说,使用canal时可以设置binlog的读取起点,MySQL可以通过 show master status查看binlog状态。对于增量起点的选择,比较常规的做法是以全量开始时binlog的offset或更早的位点作为增量的起点,同时增量部分在写入下游时维持幂等性,以保证数据完整。

对于其他同步方案,一个是近期会放出的OMS社区版,是一个白屏的数据迁移工具;另一个可选的方案是Flink CDC,同样也是一个支持全量+增量的同步方案,因为OB社区版本身兼容MySQL协议,因此当OB作为目的端的时候可以直接当成MySQL来使用,而Flink CDC的源端合目的端都是支持MySQL的,详细情况可以看下他们的文档:https://ververica.github.io/flink-cdc-connectors/master/content/connectors/mysql-cdc.html

好的,谢谢

你好,还需要请教下, 假如我现在要迁移一个数据库(该库有多张表,并不断在写入),有以下几个问题:1. datax 一个job 是不是只能迁移一张表,多表需要起多个job? 2. 数据在不断写入,datax 迁移任务什么时候停止? 3. 如果是多个job(一个job迁一张表)才能迁移整个数据库, 多个任务停止时间不同, 那使用canal进行增量同步的位点怎么确定?

  1. 一个job是只能读一张表
  2. datax的全量读取是一个select语句,属于快照读,读取到的数据迁移完就会停
  3. 如果要配合canal使用,建议起始位点设置在所有全量迁移开始前,并且在canal写目的数据库的时候保证幂等性,以此保证不丢数据。


好的,感谢