alibaba / otter

阿里巴巴分布式数据库同步系统(解决中美异地机房)
Apache License 2.0
8.07k stars 2.49k forks source link

在运行的两个MySQL,怎么才能让他们同步数据呢。otter不能同步开启之前的数据。 #394

Closed yuanxiaoqi closed 6 years ago

yuanxiaoqi commented 6 years ago

两个MySQL都有数据,然后需要从某一刻开始,数据变成一样的。

luyee commented 6 years ago

这个都会碰到的痛点就是全量问题 。。。

杀器: 可能是自由门 (otter自带,限制很大:系统表+源表相同)

其他 1,最基本的方案,痛点是必须有binlog postion作为otter的初始位点: mysqldump+mysql<sql 导入速度可能不太理想,数据量很大几十上百G甚至更大的时候怎么搞? xbackup+mysql<sql 如果不是全库迁移,单表导入挺麻烦的吧

2, 都这么坑能绕开嘛?

类离线+自动位点

mysql-->hdfs(sqoop)-->mysql全量+然后otter 根本不需要关心postion啊

3, 其他类似Debezium, 全量增量都有,注意FTWRL哦,看起来理论与mysqldump(--single-transaction --master=2)类似。 有全量有增量。咋一看,要的就是他吧。看了下这个一致性快照要是集成到otter就相当完美了。 Debezium Connector for MySQL

4,...

2018-01-22 补充下,看了下源码,insert/update是基于on duplicate key update实现的

其实只要读的binlog位点,比全量抽取的时候靠前就可以了。这样可以用类似sqoop的抽取。

先给canal设置一个位点。然后用sqoop之类的做一次全量。再开启channel 就可以了

junneyang commented 5 years ago

@luyee 您好请问一下:mysql-->hdfs(sqoop)-->mysql全量+然后otter 根本不需要关心postion啊 otter 根本不需要关心postion啊,这句话怎么理解 谢谢