一种数据库数据同步的方法与流程

文档序号:13704023阅读:179来源:国知局

本发明涉及一种数据库数据同步的方法,尤其涉及一种数据库数据同步的方法。



背景技术:

在大数据时代,数据同步显得越来越重要。不管是数据的加工生产过程中,还是数据的提取和传输过程中,都需要用到数据同步。一套功能完善,稳定性强,自动化水平高的数据同步系统就显得尤为重要。同步系统可以代替人工实现数据从一处到另外一处的转移和重新组织的工作,减少人力成本。对于互联网或金融行业的公司,一套稳定且安全的数据同步系统,可以在很大程度上保障数据的安全性和服务的稳定性。而在实际使用中系统的稳定性及安全性不易保障,无法提供较好的容错性和自动化错误处理,无法实现断点续传,保证数据的完整性和数据同步的稳定性,并且数据同步方式单一,用户体验差,这些都是现有技术中亟待解决的技术问题。



技术实现要素:

为解决上述背景技术中提到的技术问题,本发明提供了一种数据库数据同步的方法,提高同步数据的稳定、高效。

第一方面,一种数据库数据同步的方法,包括:

所述数据同步服务端101验证所述数据同步客户端102登录的账号,所述账号由所述数据同步服务端101授权并分配数据范围;

所述数据同步客户端102向所述数据同步服务端101发送数据同步请求;

所述数据同步服务端101提取依据所述分配数据范围提取源数据库中数据推送至所述数据同步客户端102;

所述数据同步客户端102接收数据并写入到所述目标数据库。

数据同步服务端101只访问数据同步的源数据库,数据同步客户端102只访问数据同步的目标数据库。源数据库与目标数据库相互隔离,且源数据库或者目标数据库都不需要直接接入公共互联网环境,安全性较强,数据同步系统与数据库的耦合性较低。

结合第一方面的第一种可能的实现方式中:

所述数据同步服务端101验证账号通过后,授予所述数据同步客户端102会话token,所述数据同步客户端102向所述数据同步服务端101发送数据同步请求,所述数据同步服务端101验证所述数据同步客户端102的token。

所述token用于数据同步客户端102与数据同步服务端101在整个会话的交互过程中的身份验证。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中:

所述数据同步客户端102接收数据并写入到所述目标数据库后,所述数据同步服务端101依据同步频率向数据同步客户端102索要token;数据同步服务端101验证所述数据同步客户端102反馈的token;所述数据同步客户端102向所述数据同步服务端101发送数据同步请求。

所述数据同步频率由数据同步服务端101建立账号时预设,所述数据同步频率包括:定时定点同步、时间间隔同步、时间区间里的时间间隔同步。

结合第一方面的第一种和第二种可能的实现的方式,在第一方面的第三种可能的实现方式中:

所述数据同步客户端102向所述数据同步服务端101发送数据同步请求包括:所述数据同步客户端102查找目标库数据中最大时间戳,向所述数据同步服务端101发送同步大于所述最大时间戳的增量数据的数据同步请求。

所述数据同步服务端101提取依据所述分配数据范围提取源数据库中数据推送至所述数据同步客户端102包括:所述数据同步服务端101提取依据所述分配数据范围提取源数据库中时间戳大于所述最大时间戳的增量数据推送至所述数据同步客户端102;所述时间戳用于记录数据写入时间。

所述时间戳用于记录数据写入时间。

第二方面,本发明还提供一种数据库数据同步的方法的系统,所述系统包括数据同步服务端101和数据同步客户端102,其中所述数据同步服务端101包括:

数据同步服务103,实现同步服务端101和数据同步客户端102之间的数据同步操作;

同步调度服务104,单独针对每个数据,控制数据同步的时间和频率;

运营管理平台105,提供可视化环境可以对数据同步服务进行配置;

权限控制服务106,对账户的权限进行控制;

打包报文服务,对从源数据库提取出来的数据按照一定的格式重新组织,使用token进行加密,并且进行压缩;

所述各服务之间通过统一的接口相互调用,同时各服务通过独立发布的方式扩展添加。

其中所述数据同步客户端102包括:

数据同步客户端模块109,处理与服务端的交互和数据接收,调用客户端其它模块执行相应功能以完成数据的接收和写入目标数据库;

用户验证模块110,验证用户的用户名和密码,并提交服务端进行验证之后,获得token以供数据同步客户端102与数据同步服务端101进行交互的会话中使用;

报文解析模块111,读取接收到的报文,进行解压,使用token进行解密,并且把二进制流还原为原始数据;

数据解析模块112,把报文解析模块111处理之后的数据,以目标数据库的格式重新组织成可供目标数据库直接执行的sql语句;

所述各模块之间通过统一的接口相互调用,同时通过外部扩展的方式添加。

结合第二方面的第一种可能的实现方式中:

所述数据交互服务端101还包括:

异常预警服务107,监控数据同步服务端102运行是否异常;

消息通知服务108,将异常预警服务107监控到的数据同步服务端102异常告警通知。

结合第二方面的第二种可能的实现方式中:

所述数据交互客户端102还包括:

日志模块113,记录客户端程序的异常信息、操作日志和数据同步状态等信息;

心跳模块114,根据日志模块113的日志信息监控并保护客户端程序在非人为停止的情况下发生异常或者意外终止执行时自动重启,恢复并继续执行的程序。

第三方面,本发明还公开一种存储设备,其中存储有多条指令,所述指令适用于处理器加载并执行:

所述数据同步服务端101验证所述数据同步客户端102登录的账号,所述账号由所述数据同步服务端101授权并分配数据范围;

所述数据同步客户端102向所述数据同步服务端101发送数据同步请求;

所述数据同步服务端101依据所述分配数据范围提取源数据库中数据推送至所述数据同步客户端102;

所述数据同步客户端102接收数据并写入到所述目标数据库。

第四方面本发明还提供一种计算机设备,包括:

所述数据同步服务端101验证所述数据同步客户端102登录的账号,所述账号由所述数据同步服务端101授权并分配数据范围;

所述数据同步客户端102向所述数据同步服务端101发送数据同步请求;

所述数据同步服务端101提取依据所述分配数据范围提取源数据库中数据推送至所述数据同步客户端102;

所述数据同步客户端102接收数据并写入到所述目标数据库。

有益效果:本发明简化了跨平台跨数据库跨网络的数据同步流程和步骤,一次配置自动运行,减少了系统维护人员投入,避免了人为操作失误带来的风险和成本,实现了数据同步出现异常时,重试同步的自动化和数据的断点续传,保证了数据同步的稳定性与数据的完整性,完整性方面:服务端提取数据是增量提取,每次分批提取大于目的表的时间戳的记录,这里的分批是指把源表中大于目的表的所有数据,按照规定的数据条数进行分批,按顺序发送给客户端;其中,每一批数据都是按照时间戳升序排列之后的,客户端同步的时候按照批次顺序接收并且往目的表写入,每一批数据写入的时候,也是按照时间戳升序的顺序来写入。这样可以保证当数据传输中断的时候,或者客户端往目的表写入中断的时候,当前最后一条写入的记录的时间戳之前的数据都写入完毕,最后写入的那条记录的时间戳成为目的表的最大的时间戳。下次只需要重新启动同步,就可以从上次同步的最后一条记录的时间戳开始接着同步而不会丢失数据,从而保证了数据的完整性。稳定性方面:心跳模块可以在客户端异常终止的时候,自动重启客户端进程,从而恢复数据同步。这种基于服务端报文推送的机制也提高了增量数据更新的及时性;本系统与数据库系统之间可以在物理上隔离,客户端与服务端也分开部署,通过接口通讯,数据分批打包之后再进行传输,增强了数据库系统的安全性,减少了网络流量的使用。打包报文服务在数据从源数据库提取出来的时候就按照指定的方式打包成二进制流,客户端接收之后再由报文解析模块用相同的方式将二进制流还原成原始数据,从而避免数据传输过程中发生乱码。本系统只通过一个服务端集中处理客户端请求,集中一次访问源数据库,也减轻了源数据库的服务器负载,降低了对生产系统的影响;服务端与客户端都采用功能模块与接口的设计,一个模块只负责一个职责,一个接口只调用一个模块,各模块接口间使用统一的数据结构进行数据传递,达到高内聚和低耦合,可降低系统的复杂度,使整个流程逻辑清晰,可维护性和扩展性大大提高,降低开发维护成本,降低了出错率。

附图说明

图1是本发明一实施例中的系统结构示意图;

图2是本发明一实施例中的方法流程示意图;

图3是本发明一实施例中的实现流程拓扑示意图。

具体实施方式

下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。显然,所描述的实施例仅仅是本发明的部分实施例。

如图1所示实施例,一种数据库数据同步的系统,所述系统包括数据同步服务端101和数据同步客户端102,

所述数据同步服务端101包括:

1.1数据同步服务103,实现同步服务端101和数据同步客户端102之间的数据同步操作。

1.2同步调度服务104,单独针对每个数据,控制数据同步的时间和频率,包括定时器、触发器、执行器。

1.3运营管理平台105,提供可视化环境可以对数据同步服务进行配置、修改。

1.4权限控制服务106,对账户的权限进行控制,包括用户名密码验证和token生成、保存功能。

1.5打包报文服务,对从源数据库提取出来的数据按照一定的格式重新组织,使用token进行加密,并且以二进制流的方式将任何数据进行压缩和打包。

1.6异常预警服务107,监控数据同步服务端(102)运行是否异常。

1.7消息通知服务108,将异常预警服务(107)监控到的数据同步服务端(102)异常告警通知。

其中数据同步客户端102包括:

2.1数据同步客户端模块109,处理与服务端的交互和数据接收,调用客户端其它模块执行相应功能以完成数据的接收和写入目标数据库。

2.2用户验证模块110,验证用户的用户名和密码,并提交服务端进行验证之后,获得token以供数据同步客户端(102)与数据同步服务端(101)进行交互的会话中使用。

2.3报文解析模块111,读取接收到的报文,进行解压,使用token进行解密,并且把二进制流还原为原始数据。

2.4数据解析模块112,把报文解析模块(111)处理之后的数据,以目标数据库的格式重新组织成可供目标数据库直接执行的sql语句。

2.5日志模块113,记录客户端程序的异常信息、操作日志和数据同步状态等信息。

2.6心跳模块114,根据日志模块(113)的日志信息监控并保护客户端程序在非人为停止的情况下发生异常或者意外终止执行时自动重启,恢复并继续执行的程序。

如图2所示实施例,数据同步服务端101各项功能分解为单独的服务模块,数据同步客户端102各项功能分解为各项功能模块;各服务模块与功能模块均独立复杂并执行各项任务。各模块、服务之间采用统一的api接口通信。各模块之间耦合性低,当进行新功能开发或者版本升级时,可以针对各个模块进行独立组装、升级和维护,并且在组装或者升级后可以立刻通过统一的api接口接入系统中提供服务,内聚性较高。基于这个特点,本发明的扩展性较强,支持或者兼容的数据库包括但不限于rdbms关系型数据库,下述数据库、数据库系统、db等名词的含义也包括但不限于rdbms关系型数据库。

数据同步服务端101只访问数据同步的源数据库,数据同步客户端102只访问数据同步的目标数据库。源数据库与目标数据库相互隔离,且源数据库或者目标数据库都不需要直接接入公共互联网环境,安全性较强。数据同步系统与数据库的耦合性较低。

可以同时适应内网(公司内部私有网络环境)数据同步与公网(接入internet的公共互联网环境)数据同步,可以同时适应源数据库系统与目标数据库系统属于同构或者异构环境(包括数据库厂商或者版本的异同、以及数据库系统所部署的服务器硬件与软件环境的异同)下的数据同步。当需要通过公网进行远程数据同步的时候,只需要数据同步客户端102与数据同步服务端101之间能够通过公网通信即可,数据同步客户端102与数据同步服务端101可以独立部署于数据库系统以外的服务器环境上,可以避免数据库系统接入公网带来的风险。

支持数据的增量同步,即目标库数据初始化之后,下一轮同步,只需要同步上一轮同步之后发生变更或者新增的增量数据。只需要源数据库与目标数据库的数据结构中都包含具有唯一性约束的键(通常为主键)以及数据变更时间戳。

数据同步客户端102与数据同步服务端101之间采用压缩的打包报文进行通信,通过token令牌进行握手验证和报文加密。降低了网络流量的负载,加快了数据传输速度,节省了网络成本和时间成本。

数据同步服务端101包含预警和消息通知模块,可以在数据同步服务端101出现异常时及时告警通知系统维护人员进行处理;数据同步客户端102包含心跳模块(即对客户端102主程序的守护进程),当数据同步客户端102异常崩溃时,实现自动重启数据同步客户端102;实现了异常处理的自动化。增强了系统的稳定性和容错性的同时,节省了人力成本。

数据同步系统访问数据库的时候可以采用数据库厂商提供的原厂数据库客户程序或者sdk对数据库进行访问和操作,可以实现对数据库兼容性和支持的原生化,保证了数据同步的稳定性和高效性。

数据同步调度系统,可以单独针对每个数据,控制数据同步的时间和频率,保证了数据同步的及时性和满足客户需求的多样化。

数据同步运营平台提供可视化环境可以对数据同步服务103进行配置,针对每个用户进行定制化,可以对数据同步队列中的每个数据添加数据过滤条件。

如图3所示实施例,一种数据库数据同步的方法,包括:

数据同步客户端102向数据同步服务端101请求初始化及权限验证。

数据同步服务端101向运营管理平台105验证账号密码,运营管理平台105验证密码,返回用户状态和服务到期时间。

数据同步服务端101返回token指令给数据同步客户端102,数据同步客户端102使用token请求通信数据同步服务端101,数据同步服务端101验证token是否有效和过期。

数据同步服务端101通过token验证,并返回表清单(数据范围)至数据同步客户端102。

数据同步客户端102检索目标数据库,判断接收的表清单(数据范围)是否存在;当表(数据)不存在,数据同步客户端102向数据同步服务端101请求建表,数据同步服务端101返回表结构信息,数据同步客户端102向目标数据库发送建表sql,目标数据库返回建表结果;当表(数据)存在,读取目标数据库中的最大时间戳(所述时间戳为源数据库和目标数据库写入数据时自动生成的),将所述最大时间戳发送至数据同步服务端101并请求同步源数据库中大于该时间戳的增量数据。

数据同步服务端101分批读取源数据库中的增量数据并分批返回增量数据,然后将增量数据打包发送至数据同步客户端102。

数据同步客户端102接收上述分批打包发送的数据后,分批写入目标数据库,并返回数据写入情况,数据同步完毕,进入等待状态。

运营管理平台105通过调度服务按照预先设置的同步频率(所述数据同步频率为事先预设,包括:定时定点同步、时间间隔同步、时间区间里的时间间隔同步)指令数据同步服务端101启动新一轮同步,数据同步服务端101向数据同步客户端102索要token,开启新一轮的同步。

应理解,上述实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解为在阅读本发明的内容后,本领域技术人员可以对本发明作各种改动和修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1