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是字符串,数据本身也只有整型和字符串所以只做了部分数据类型映射。