最近在做大数据项目的数据抽取,主要涉及oracle 阿里云rds monogo的生产数据全量抽取并做实时同步数据,选型为
oracle 和rds 全量数据先通过datax抽取到hbase 然后oracle通过OGG做实时同步到hbase,rds 通过canal做实时同步到hbase。
这里先记录一下rds抽取中遇到的坑。
1、在rds通过datax全量抽取到hbase的时候出现了数据缺失的情况,但是datax抽取log显示数据抽取成功,但是实际进入到hbase的数据出现了大量缺失的状况,全程无报错,至今未找到问题所在,解决办法就是重新抽了一遍。这里还是提醒下,全量抽取后一定要先做数据校验
2、rds通过cannal数据同步的时候出现数据不能 订阅不能消费的情况并且全程无报错,log无异常,通过团队小伙伴们各类测试未发现问题。分析主要通过这几个方向: 1、源库是否数据更新(验证是否有需要消费的订阅) 2、更换rds库测试是否是rds问题 3、更换配置信息 最终发现是源库rds问题,由于业务端提供rds实例为只读实例,然而 RDS for MySQL只读实例的Binlog日志没有记录更新信息,所以Binlog无法使用。大家都知道cannal 是基于binlog订阅消费更新的,由于binlog无法使用同时就导致了无法通过cannal进行订阅消费7.png