mysql增量同步数据到nebula

mysql增量同步数据到nebula。

不知道大家是怎么用nebula的。
我这边用的方式是原始数据在MySQL,nebula只负责图查询。
但是MySQL数据会实时更新,虽说更新频率比较低。
所以做了数据同步的方案:
1.初始数据进行全量导入
2.增量数据通过canal做实时同步

实践:
1.全量导入使用官网exchange来做
2.增量数据:
1.开启canal服务
2.讲canal服务作为MySQL从节点
3.添加canal客户端解析同步过来的binlog,使用全量导入时exchange使用的application.conf 文件,做表名到标签名、边名的转换,表字段到属性的转换,最终将MySQL的insert/update/delete 转换成 对应的nGQL
4.根据application.conf针对nebulagraph的配置,访问nebula服务之星nGQL完成数据同步。
5.这个过程中可以做很多数据映射和一致性相关的东东,比如向nebula执行失败可通知canal同步失败,下次还可继续同步同一批binlog,当然也可以本地做日志记录+重试+告警机制,也是可以的。完全看大家的业务。

写了个小的demo来完成MySQL 到 nebula的同步。

大家可以基于这个上面魔改,因为我这里数据库里面vid是字符串,数据本身也只有整型和字符串所以只做了部分数据类型映射。

2 个赞

赞,有参考价值

大佬您好,想请教下你说的这个应该怎么实现啊,谢谢了
“比如向nebula执行失败可通知canal同步失败,下次还可继续同步同一批binlog,当然也可以本地做日志记录+重试+告警机制“

太棒了,才注意到您的工作 :+1:t2:
cc @steam

cc 我做咩?这老哥的写作礼物发了啊

我以为漏掉了,我们有详细的 blog 文章么?还是这个帖子是全部?

这个就是全部。

呦吼吼 :stuck_out_tongue:

1 个赞

最好做法是 mysql → canal → kafka;从kafka消费来处理数据

2 个赞