1.建dblink,创建触发器,源库数据更新触发器往目标库插入数据
2.按时间戳增量同步
即创建定时任务,按照时间字段从源表向目标表插入数据,如每小时插入一次该小时内的新数据
3.基于数据库归档日志的同步
基于数据库归档日志的同步属于实时数据同步,如开源mysql可使用Canal利用主从自动同步机制实时采集binlog,对于商业软件Oracle数据库的日志格式不是公开的,没有开源解决方案,选择引进Oracle数据集成产品组件Oracle GoldenGate(OGG)来实现,OGG可提供不影响系统处理功能的实时数据集成和持续可用性解决方案,使企业能显著提高整个企业关键系统的可用性、可靠性和性能并同时降低IT成本。OGG For BigData可支持对接kafka/HDFS/HBase/Elasticsearch/Flume/JDBC/MongoDB 等大数据常用组件。 比如Oracle数据实时增量同步Kafka消息系统,供下游做实时处理场景。
源端 oracle database + oracle goldengate for oracle,目标端oracle goldengate for bigdata +kafka
4.使用kettle和sqoop工具
ketlle的优势:本身有利于大数据体系架构之外,sqoop的资源分配要由yarn管理,集群任务多要排队,按部就班,很耗时间,但是kettle不需要,并且kettle在处理小数据量的实时采集方面效率显得更优秀,速度更快,我们实时增量数据量不大的情况下,完全可以用kettle,且速度更快。
kettle缺点:大数据量的数据采集显的力不从心,数据初始化还是要用sqoop工具,增量用kettle
5.Kafka实现oracle实时数据处理
数据库必须处于archivelog模式,并且必须启用补充日志记录。