NTP方式保证以时间戳同步可靠性

原创
2016-06-07 15:56:20 1219浏览

数据库同步的方式有设置标志位同步方式、以时间戳同步的方式,对于一对一的同步这两种方式都满足,但是对于一对多的同步,则只能选择时间戳的同步方式了,但是已时间戳同步的方式的一个问题是如何可靠的保证数据可以不丢失的同步到数据库中。下面有两种方式

数据库同步的方式有设置标志位同步方式、以时间戳同步的方式,对于一对一的同步这两种方式都满足,但是对于一对多的同步,则只能选择时间戳的同步方式了,但是已时间戳同步的方式的一个问题是如何可靠的保证数据可以不丢失的同步到数据库中。下面有两种方式来保证以时间戳同步的可靠性。

1、计算服务器与客户端两台电脑的时间差,将该时间差记入在同步时间的比对当中,下图是使用kettle做的一个计算同步的时间差的思路:

\

该思路的xml代码为:


  
    getLeadValue
    
    
    
    Normal
    0
    /downloadServerData/commonData
    
    
    





ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDTRANSNAMEYTRANSNAMESTATUSYSTATUSLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSSTARTDATEYSTARTDATEENDDATEYENDDATELOGDATEYLOGDATEDEPDATEYDEPDATEREPLAYDATEYREPLAYDATELOG_FIELDYLOG_FIELD


ID_BATCHYID_BATCHSEQ_NRYSEQ_NRLOGDATEYLOGDATETRANSNAMEYTRANSNAMESTEPNAMEYSTEPNAMESTEP_COPYYSTEP_COPYLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSINPUT_BUFFER_ROWSYINPUT_BUFFER_ROWSOUTPUT_BUFFER_ROWSYOUTPUT_BUFFER_ROWS
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATELOGGING_OBJECT_TYPEYLOGGING_OBJECT_TYPEOBJECT_NAMEYOBJECT_NAMEOBJECT_COPYYOBJECT_COPYREPOSITORY_DIRECTORYYREPOSITORY_DIRECTORYFILENAMEYFILENAMEOBJECT_IDYOBJECT_IDOBJECT_REVISIONYOBJECT_REVISIONPARENT_CHANNEL_IDYPARENT_CHANNEL_IDROOT_CHANNEL_IDYROOT_CHANNEL_ID
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATETRANSNAMEYTRANSNAMESTEPNAMEYSTEPNAMESTEP_COPYYSTEP_COPYLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSLOG_FIELDNLOG_FIELD
0.0 0.0 10000 50 50 N Y 50000 Y N 1000 100 - 2012/11/16 13:59:51.117 - 2014/05/12 15:22:12.008 backupConn ${CLIENT_DATABASE_IP} ORACLE Native ${CLIENT_DATABASE_NAME} ${CLIENT_DATABASE_PORT} ${CLIENT_DATABASE_USERNAME} ${CLIENT_DATABASE_PASSWORD} FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN IS_CLUSTEREDN PORT_NUMBER${CLIENT_DATABASE_PORT} QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGN serverConn ${SERVER_DATABASE_IP} ORACLE Native ${SERVER_DATABASE_NAME} ${SERVER_DATABASE_PORT} ${SERVER_DATABASE_USERNAME} ${SERVER_DATABASE_PASSWORD} FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN IS_CLUSTEREDN PORT_NUMBER${SERVER_DATABASE_PORT} QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGN wardConn ${CLIENT_DATABASE_IP} ORACLE Native ${CLIENT_DATABASE_NAME} ${CLIENT_DATABASE_PORT} ${CLIENT_DATABASE_USERNAME} ${CLIENT_DATABASE_PASSWORD} FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN INITIAL_POOL_SIZE50 IS_CLUSTEREDN MAXIMUM_POOL_SIZE500 PORT_NUMBER${CLIENT_DATABASE_PORT} QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGY 增加常量增加常量 2Y 计算器Set Variables 2Y 调用DB存储过程调用DB存储过程 2Y 调用DB存储过程 2增加常量Y 增加常量 2计算器Y Set Variables 2 SetVariable Y 1 none TIMEDIFF DOWNLOAD_SERVER_COMMON_DATA_LEAD JVM Y 118 273 Y 增加常量 Constant Y 1 none DIVIDEND Integer 86400000 -1 -1 388 241 Y 增加常量 2 Constant Y 1 none DEVIATION Integer 10000 -1 -1 364 362 Y 计算器 Calculator Y 1 none TEMP SUBTRACT LOCAL_DATE SERVER_DATE BigNumber -1 -1 N TEMP2 ADD TEMP DEVIATION BigNumber -1 -1 N TIMEDIFF DIVIDE TEMP2 DIVIDEND BigNumber -1 -1 N 251 272 Y 调用DB存储过程 DBProc Y 1 none serverConn F_GET_SYSDATE2INT SERVER_DATE BigNumber Y 140 134 Y 调用DB存储过程 2 DBProc Y 1 none wardConn F_GET_SYSDATE2INT LOCAL_DATE BigNumber Y 353 132 Y N
2、通过NTP方式校对系统时间

1)如果可以连接到Internet网中,则可以采用国际上的校时服务器去校对时间

2)如果在内网中且不能上网,则可以自己定义一台都可访问到的台式机作为NTP服务器,其他机子与该计算机教士即可,下面是window NTP校时服务器的设置。

可以参考文章:NTP服务同步时间方案

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。