增量数据丢失的原因分析(三)

今天开发的同事找到我说,他们发现一个应用今天应该会同步过来一部分数据,但是今天却没有,所以想让我帮忙看看到底是怎么回事。
对于这类需求也算是轻门熟路,不光维护管理数据,补数据也在行。看来今天又不可避免要修复数据了,不过还是得明白原因是什么。
首先查看了近几天的数据同步情况,时间范围是5月1日~5月6日,但是查看却唯独缺少了5月5日的数据,因为是计算前一天的数据变化情况,所以5月6日应该会同步5月5日的数据变化。
TRUNC(UPDATE_DATE)   COUNT(*)
------------------- ----------
2016-05-02 00:00:00       6724
2016-05-03 00:00:00       6198
2016-05-04 00:00:00       5772
2016-05-01 00:00:00       7268
至于数据为什么没有同步,确实有些奇怪,这个时候先来理一理数据同步的原理,其实这个库是一个OLAP的库,会从OLTP的库中抓取变化的数据情况更新到OLAP的统计库中。而同步的驱动方式是通过scheduler的方式来完成,每天凌晨会定时同步。
使用下面的方式来查看最近10天的scheduler job的运行情况,发现只有今天运行失败。
select log_date,owner,job_name,status,ADDITIONAL_INFO from DBA_SCHEDULER_JOB_LOG where log_date>sysdate-10 and owner='TEST' and job_name like '%USER%' ORDER BY 1   ;
LOG_DATE                            OWNER JOB_NAME             STATUS     
----------------------------------- -------------------------- -----------
27-APR-16 03.28.14.044366 AM +08:00 TEST  SYN_USERCENTER       SUCCEEDED
。。。
05-MAY-16 03.28.32.538013 AM +08:00 TEST  SYN_USERCENTER       SUCCEEDED
06-MAY-16 03.28.23.809575 AM +08:00 TEST  SYN_USERCENTER       FAILED
那么问题就看起来有了方向,是由于scheduler job失败导致的数据同步失败。
到底是什么原因导致的呢,可以查看一个视图来得到一些相关的信息。
select log_date,owner,job_name,status,ADDITIONAL_INFO from  DBA_SCHEDULER_JOB_RUN_DETAILS where log_date>sysdate-10 and owner='TEST' and job_name like '%USER%' ORDER BY 1   ;
得到的信息是一个ORA错误:ORA-12170: TNS:Connect timeout occurred
这个时候使用tnsping的方式来连接那个目标库,发现没有了响应,超时退出。
而这个问题明白了原因之后,依然很蹊跷,这个环境一直没有动过,也没有做过系统层面的网络变化,到底是什么原因导致的呢。
对于这个问题,从数据库层面,系统层面还真分析不出来什么特别之处。所以就求助网络组的同学。
目前是10.11.133.128的服务器去telnet 10.11.65.112的服务器,但是通过几次简单的测试,在65.112端看到133.128的ip却会有多种变化。有时候是10.11.133.128,有时候是10.11.134.129
# tcpdump -i eth0  host 10.11.133.128 and port 1528 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:49:57.314010 IP 10.11.133.128.51355 > 10.11.65.112.1528: Flags [F.], seq 1003407519, ack 3632754879, win 49640, length 0
16:49:57.314095 IP 10.11.65.112.1528 > 10.11.133.128.51355: Flags [F.], seq 1, ack 1, win 115, length 0
16:49:57.316199 IP 10.11.133.128.51355 > 10.11.65.112.1528: Flags [.], ack 2, win 49640, length 0
16:49:59.098833 IP 10.11.133.128.51382 > 10.11.65.112.1528: Flags [S], seq 1012926596, win 49640, options [mss 1460,nop,wscale 0,nop,nop,sackOK], length 0
16:49:59.098877 IP 10.11.65.112.1528 > 10.11.133.128.51382: Flags [S.], seq 233530546, ack 1012926597, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
16:49:59.101376 IP 10.11.133.128.51382 > 10.11.65.112.1528: Flags [.], ack 1, win 49640, length 0

# tcpdump -i eth0 host 10.11.134.129 and  port 1528 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:41:25.055791 IP 10.11.134.129.50758 > 10.11.65.112.1528: Flags [S], seq 778963631, win 49640, options [mss 1460,nop,wscale 0,nop,nop,sackOK], length 0
16:41:25.055848 IP 10.11.65.112.1528 > 10.11.134.129.50758: Flags [S.], seq 3056729568, ack 778963632, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
16:41:30.126448 IP 10.11.65.112.1528 > 10.11.134.129.50758: Flags [S.], seq 3056729568, ack 778963632, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
16:41:30.211652 IP 10.11.134.129.50758 > 10.11.65.112.1528: Flags [R], seq 778963632, win 49640, length 0
对于这种情况,查看了133.128的网卡配置情况,e1000g0存在一个漂移的IP,即10.11.133.128,而另外一个IP 10.11.134.129则来自一个新的网卡e1000g1
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.11.133.129 netmask ffffff00 broadcast 10.11.133.255
e1000g0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.11.133.128 netmask ffffff00 broadcast 10.11.133.255
e1000g1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
        inet 10.11.134.129 netmask ffffff00 broadcast 10.11.134.255
查看路由的信息,可以看到目前是存在两个默认路由,分别从133,134网段进行过滤。
$netstat -rn
Routing Table: IPv4
Destination           Gateway           Flags  Ref     Use     Interface
-------------------- -------------------- ----- ----- ---------- ---------
default              10.11.133.254       UG        1      28179           
default              10.11.134.254       UG        1      28129           
10.11.133.0         10.11.133.128       U         1       7961 e1000g0:1
10.11.133.0         10.11.133.129       UG        1          0           
10.11.134.0         10.11.134.129       U         1       1308 e1000g1   
224.0.0.0            10.11.133.129       U         1          0 e1000g0  
而这个也是目前导致测试中发现源端的IP一会是133.128,一会又是134.129
当然还有更多的网络内容我也没接受得了。不过可以看出网络这块还是存在着一小窍门。
最终在65.112开通了这两个IP的防火墙之后,看起来问题是初步解决了,后续还需要更多的验证。
而留给我的就是修复数据,这个还是需要结合里面的业务来根据需求来补充那部分没有同步的数据。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2095153/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2095153/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 数据丢失:在增量同步过程中,有可能出现部分数据未能被正确同步的情况,导致数据丢失或不完整。 2. 数据冲突:在多个数据源同时更新同一条数据时,可能会出现数据冲突的情况。这时需要使用特定的规则来解决冲突。 3. 数据延迟:在增量同步的过程中,由于网络传输、数据量等原因,会导致数据同步出现延迟的情况。 4. 数据准确性问题:有些增量同步的算法可能会出现数据重复或数据精度不足的问题,导致数据准确性下降。 5. 数据处理效率问题:增量同步需要对每个数据源进行单独处理,对于大数据量或高并发的情况下,对系统性能和处理效率会有一定的影响。 ### 回答2: 增量数据同步是指在数据同步过程中,只将发生变化的数据进行同步,而不是将所有数据重新传输一遍。虽然增量数据同步可以提高效率,但也会遇到一些问题。 首先,增量数据同步的实现需要引入时间戳或其他标记来记录数据的变化情况。这需要在数据库或应用程序中增加额外的字段或标记数据更新时间,增加了数据模型的复杂度。 其次,增量数据同步涉及到对变更数据进行识别和捕捉的过程。这可能需要对数据库或应用程序进行改造,以便在数据更新时自动触发同步操作。这需要对系统进行深入了解,并且可能需要修改现有的应用逻辑。 第三,增量数据同步过程中可能会遇到数据冲突的问题。由于数据更新的顺序和时机不同,可能会导致多个同步任务同时操作一条记录,产生冲突。解决此问题需要引入事务管理或者采用乐观锁等机制来保证数据一致性。 最后,增量数据同步过程中需要确保数据的完整性和一致性。如果同步过程中出现故障或意外中断,可能会导致只同步了部分数据,从而导致数据的不一致。因此,需要实施合适的备份和恢复机制,以及监控和报警机制,及时发现和处理同步错误。 总之,增量数据同步虽然可以提高效率,但在实际应用中需要解决数据模型复杂性、数据识别捕捉、数据冲突和数据完整性等问题,从而确保数据同步的准确性和一致性。 ### 回答3: 增量数据同步是指在数据源中有新的数据产生时,将这部分新增的数据同步到目标系统中的过程。尽管增量数据同步可以提高数据处理效率和节省存储空间,但它也面临一些问题。 首先,增量数据同步可能会面临数据冲突的问题。当多个数据源同时生成数据并同步到目标系统时,可能会出现相同的数据冲突。这种冲突需要通过冲突检测机制解决,确保最终目标系统中的数据是正确的和一致的。 其次,增量数据同步可能会受到网络延迟的影响。如果网络传输速度较慢或者数据量较大,增量数据同步的效率可能会降低。这会导致数据延迟同步,可能影响到目标系统对实时数据的获取和分析。 此外,增量数据同步还需要考虑数据一致性的问题。在数据源和目标系统之间进行数据同步的过程中,可能会出现数据丢失数据重复等问题,导致数据的不一致性。因此,需要设计合理的同步机制和数据校验机制,保证数据在传输过程中的完整性和准确性。 最后,增量数据同步还需要考虑对目标系统的影响。当增量数据同步发生时,目标系统可能需要进行相应的数据处理和更新操作。如果同步的数据量过大或者同步频率过高,可能会对目标系统的正常运行产生压力,导致目标系统的性能下降。 综上所述,增量数据同步在提高数据处理效率的同时,也面临着数据冲突、网络延迟、数据一致性和对目标系统性能的影响等问题。为了解决这些问题,需要设计合理的同步机制和数据校验机制,并对同步过程进行监控和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值