博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NTP方式保证以时间戳同步可靠性
阅读量:6553 次
发布时间:2019-06-24

本文共 14605 字,大约阅读时间需要 48 分钟。

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

1、计算server与client两台电脑的时间差,将该时间差记入在同步时间的比对其中,下图是使用kettle做的一个计算同步的时间差的思路:

该思路的xml代码为:

getLeadValue
Normal
0
/downloadServerData/commonData
ID_BATCH
Y
ID_BATCH
CHANNEL_ID
Y
CHANNEL_ID
TRANSNAME
Y
TRANSNAME
STATUS
Y
STATUS
LINES_READ
Y
LINES_READ
LINES_WRITTEN
Y
LINES_WRITTEN
LINES_UPDATED
Y
LINES_UPDATED
LINES_INPUT
Y
LINES_INPUT
LINES_OUTPUT
Y
LINES_OUTPUT
LINES_REJECTED
Y
LINES_REJECTED
ERRORS
Y
ERRORS
STARTDATE
Y
STARTDATE
ENDDATE
Y
ENDDATE
LOGDATE
Y
LOGDATE
DEPDATE
Y
DEPDATE
REPLAYDATE
Y
REPLAYDATE
LOG_FIELD
Y
LOG_FIELD
ID_BATCH
Y
ID_BATCH
SEQ_NR
Y
SEQ_NR
LOGDATE
Y
LOGDATE
TRANSNAME
Y
TRANSNAME
STEPNAME
Y
STEPNAME
STEP_COPY
Y
STEP_COPY
LINES_READ
Y
LINES_READ
LINES_WRITTEN
Y
LINES_WRITTEN
LINES_UPDATED
Y
LINES_UPDATED
LINES_INPUT
Y
LINES_INPUT
LINES_OUTPUT
Y
LINES_OUTPUT
LINES_REJECTED
Y
LINES_REJECTED
ERRORS
Y
ERRORS
INPUT_BUFFER_ROWS
Y
INPUT_BUFFER_ROWS
OUTPUT_BUFFER_ROWS
Y
OUTPUT_BUFFER_ROWS
ID_BATCH
Y
ID_BATCH
CHANNEL_ID
Y
CHANNEL_ID
LOG_DATE
Y
LOG_DATE
LOGGING_OBJECT_TYPE
Y
LOGGING_OBJECT_TYPE
OBJECT_NAME
Y
OBJECT_NAME
OBJECT_COPY
Y
OBJECT_COPY
REPOSITORY_DIRECTORY
Y
REPOSITORY_DIRECTORY
FILENAME
Y
FILENAME
OBJECT_ID
Y
OBJECT_ID
OBJECT_REVISION
Y
OBJECT_REVISION
PARENT_CHANNEL_ID
Y
PARENT_CHANNEL_ID
ROOT_CHANNEL_ID
Y
ROOT_CHANNEL_ID
ID_BATCH
Y
ID_BATCH
CHANNEL_ID
Y
CHANNEL_ID
LOG_DATE
Y
LOG_DATE
TRANSNAME
Y
TRANSNAME
STEPNAME
Y
STEPNAME
STEP_COPY
Y
STEP_COPY
LINES_READ
Y
LINES_READ
LINES_WRITTEN
Y
LINES_WRITTEN
LINES_UPDATED
Y
LINES_UPDATED
LINES_INPUT
Y
LINES_INPUT
LINES_OUTPUT
Y
LINES_OUTPUT
LINES_REJECTED
Y
LINES_REJECTED
ERRORS
Y
ERRORS
LOG_FIELD
N
LOG_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_LOWERCASE
N
FORCE_IDENTIFIERS_TO_UPPERCASE
N
IS_CLUSTERED
N
PORT_NUMBER
${CLIENT_DATABASE_PORT}
QUOTE_ALL_FIELDS
N
SUPPORTS_BOOLEAN_DATA_TYPE
N
USE_POOLING
N
serverConn
${SERVER_DATABASE_IP}
ORACLE
Native
${SERVER_DATABASE_NAME}
${SERVER_DATABASE_PORT}
${SERVER_DATABASE_USERNAME}
${SERVER_DATABASE_PASSWORD}
FORCE_IDENTIFIERS_TO_LOWERCASE
N
FORCE_IDENTIFIERS_TO_UPPERCASE
N
IS_CLUSTERED
N
PORT_NUMBER
${SERVER_DATABASE_PORT}
QUOTE_ALL_FIELDS
N
SUPPORTS_BOOLEAN_DATA_TYPE
N
USE_POOLING
N
wardConn
${CLIENT_DATABASE_IP}
ORACLE
Native
${CLIENT_DATABASE_NAME}
${CLIENT_DATABASE_PORT}
${CLIENT_DATABASE_USERNAME}
${CLIENT_DATABASE_PASSWORD}
FORCE_IDENTIFIERS_TO_LOWERCASE
N
FORCE_IDENTIFIERS_TO_UPPERCASE
N
INITIAL_POOL_SIZE
50
IS_CLUSTERED
N
MAXIMUM_POOL_SIZE
500
PORT_NUMBER
${CLIENT_DATABASE_PORT}
QUOTE_ALL_FIELDS
N
SUPPORTS_BOOLEAN_DATA_TYPE
N
USE_POOLING
Y
添加常量
添加常量 2
Y
计算器
Set Variables 2
Y
调用DB存储过程
调用DB存储过程 2
Y
调用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网中,则能够採用国际上的校时server去校对时间

2)假设在内网中且不能上网,则能够自定义一台都可訪问到的台式机作为NTPserver,其它机子与该计算机教士就可以,以下是window NTP校时server的设置。

能够參考文章:

你可能感兴趣的文章
VS2017 配置ImageMagick
查看>>
scrapy 直接在编辑器运行
查看>>
微信小程序Tab选项卡切换大集合
查看>>
Hive任务优化--控制hive任务中的map数和reduce数
查看>>
[摄影]上海往事
查看>>
『原创』c#实现文件加密、解密及文件拖拽至程序图标直接打开
查看>>
POJ 2288 Islands and Bridges (状压DP)
查看>>
我的.NET Framework 4.0之旅
查看>>
【Leetcode】Search in Rotated Sorted Array
查看>>
redis3.0.0 集群安装详细步骤
查看>>
WCF 之 初识WCF
查看>>
如何在Linux命令行中创建以及展示演示稿
查看>>
FutureTask——另一种闭锁的实现
查看>>
js-ES6学习笔记-Proxy
查看>>
Android和MVC
查看>>
Linux 用户和用户组管理
查看>>
RIP路由协议及工作原理
查看>>
tomcat架构分析(valve源码导读)
查看>>
spring中InitializingBean接口使用理解(转)
查看>>
基于php5.5使用PHPMailer-5.2发送邮件
查看>>