CN112231395A - 一种交易数据同步方法、服务器 - Google Patents
一种交易数据同步方法、服务器 Download PDFInfo
- Publication number
- CN112231395A CN112231395A CN202010961768.0A CN202010961768A CN112231395A CN 112231395 A CN112231395 A CN 112231395A CN 202010961768 A CN202010961768 A CN 202010961768A CN 112231395 A CN112231395 A CN 112231395A
- Authority
- CN
- China
- Prior art keywords
- transaction
- database
- switching
- data
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开一种交易数据同步方法、服务器,方法包括获取切换开关的状态信息,当切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库;当切换开关处于关闭状态时,则判断处理接收到的交易请求的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将切换数据库中的交易数据同步至与目标服务器对应的目标数据库中;判断切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应。本申请在数据库硬件升级或者更换数据库软件时无需停止交易服务,提升客户体验,保证了数据的可靠性。
Description
技术领域
本发明属于数据库技术领域,尤其涉及一种交易数据同步方法、服务器。
背景技术
随着互联网业务的高速发展,给人们的生活带来极大的便利,对互联网系统的高可用、高并发提出很高的要求,目前很多公司在系统正常业务迭代发布已经实现应用层波浪式发布,发布过程中客户无感知,数据库的切换也有多种方案,比如双写、按时间分片机制,但是这些方案适用于系统中数据生命周期较短的或者同记录并发不高的系统。如订单系统,订单生命周期有:创建订单、支付、结算、退款等;订单从创建到支付,在分钟级内,结算、退款在几天或者几个月之后,因此可以采用按时间分片机制,新的时间分片使用的新库,旧的订单仍使用旧库。
对于数据生命周期较长的且并发较高的系统,比如账户管理类的系统,数据量大且并发高,为了保证账户余额准确,在切换过程中账户数据必须有且只能有一份数据有效。因此对于数据生命周期较长的且并发较高的系统,数据库硬件升级或者更换数据库软件时,无法通过主备切换方式进行切换,一般采用全量加增量同步的方式,切换时,需停服务,增量补数,数据验证,保证源库及目标库数据完全一致,数据验证完成之后将应用服务器数据库连接改为目标库,启动服务,开始受理交易,达到完成数据库切换目的,在此过程中需要停服务保证源库和目标库数据不被修改,才能进行数据验证,否则不能进行数据验证。
发明内容
为了解决现有技术的问题,本发明提出了交易数据同步方法、服务器,本方法实现了数据库硬件升级或者更换数据库软件时无需停止交易服务,提升客户体验,保证了数据的可靠性。
本发明实施例提供的具体技术方案如下:
第一方面,本发明提供一种交易数据同步方法,所述方法包括:
获取切换开关的状态信息,当所述切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库;
当所述切换开关处于关闭状态时,则判断处理所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将所述切换数据库中的交易数据同步至与目标服务器对应的所述目标数据库中;
判断所述切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应,以使所述客户端在接收到所述同步成功响应后向路由设备发送路由请求,以使所述路由设备对所述路由请求进行解析,并在确定所述路由请求中包括目标服务器的标识信息后,将所述交易请求分配至所述目标服务器进而处理交易。
优选的,所述对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库具体包括:
判断处理所述交易请求所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述源数据库以获取所需数据并写入所述切换数据库中以处理交易。
优选的,所述判断处理所述交易请求所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述源数据库以获取所需数据并写入所述切换数据库中具体包括:
根据接收到的所述交易请求开启一对应事务;
捕获所述事务内执行的执行语句并保存,生成基础表和明细表;其中,所述基础表记录了每一事务的路由字段和对应的执行语句交易序号,所述明细表记录了每一事务的路由字段、对应的执行语句序号、执行语句内容和执行语句同步状态值;
获取执行的第一条执行语句的路由字段,当所述路由字段在基础表中存在时,连接所述切换数据库以处理交易,当所述路由字段在基础表中不存在时,连接所述源数据库以获取所需数据并写入所述切换数据库。
优选的,所述判断处理所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述目标数据库以处理交易具体包括:
获取与当前接收到的所述交易请求相对应的事务内执行的第一条执行语句的路由字段;
判断所述切换数据库中是否存在与当前接收到的所述交易请求的路由字段相匹配的基础表;
若存在,则判断所述基础表的执行语句交易序号是否为零,当为零时,连接所述目标数据库以处理交易,当不为零时,连接所述切换数据库以处理所述交易请求;
若不存在,则连接所述目标数据库以处理交易。
优选的,所述将所述切换数据库中的交易数据同步至与目标服务器对应的目标数据库具体包括:
判断所述切换数据库中已存储的基础表中执行语句交易序号是否为零;
当为零时,则确定对应交易的交易数据同步成功;
当不为零时,按照预设顺序将事务中的执行语句提交至所述目标数据库中以进行逐条执行,当所有执行语句执行成功时,提交所述事务并确定对应交易的交易数据同步成功;
当所述事务中任一执行语句执行失败时,回滚所述事务并确定对应交易的交易数据同步失败;
其中,当执行语句执行成功时,变更明细表中的执行语句同步状态值。
优选的,所述方法还包括:
定时检测所述切换数据库中所述交易对应的明细表的每一条执行语句的执行语句同步状态值,当明细表的每一条执行语句的执行语句同步状态值都与预设值时相同,则确定所述交易的交易数据同步成功;
当明细表中执行语句的执行语句同步状态值与预设值不同时,则确定所述交易的交易数据未同步成功。
优选的,所述方法还包括:
当接收到所述客户端发送的切换开关关闭请求时,将所述切换开关的状态信息更新为关闭;
其中,所述切换开关关闭请求在源服务器对应的源数据库中的交易数据全部同步至所述目标服务器对应的目标数据库并验证成功后生成。
第二方面,本发明提供一种交易数据同步方法,包括:
路由设备对客户端发送的第一路由请求进行解析,若所述第一路由请求中包括切换服务器的标识信息,则将交易请求分配至切换服务器,切换服务器获取切换开关的状态信息,当所述切换开关处于打开状态时,对分配到的交易请求进行处理并将产生的交易数据保存至切换数据库,同时源服务器停止交易;
当所述切换服务器获取到所述切换开关处于关闭状态时,则判断路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述目标数据库以处理交易,同时将切换数据库中的交易数据同步至与目标服务器对应的目标数据库中;
所述切换服务器判断所述切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应,所述客户端接收到所述同步成功响应后向所述路由设备发送第二路由请求,所述路由设备对所述第二路由请求进行解析,当确定所述第二路由请求中包括目标服务器的标识信息时,将交易请求分配至目标服务器以使所述切换服务器处理交易。
优选的,所述方法还包括:
所述源服务器确定停止交易前产生的所有待同步的交易数据,根据待同步的交易数据生成同步请求;
在停止交易前或停止交易后向所述目标服务器发送所述同步请求以将所有待同步的交易数据同步至所述目标数据库中。
第三方面,本发明提供一种服务器,其特征在于,包括:
第一处理模块,用于获取切换开关的状态信息,当所述切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库;
第二处理模块,用于当获取到所述切换开关处于关闭状态时,则判断处理所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将所述切换数据库中的交易数据同步至与目标服务器对应的所述目标数据库中;
判断模块,用于判断所述切换数据库中的交易数据是否全部同步成功;
发送模块,用于当所述切换数据库中的交易数据全部同步成功,则向客户端发送同步成功响应,以使所述客户端在接收到所述同步成功响应后向路由设备发送路由请求,以使所述路由设备对所述路由请求进行解析,并确定所述路由请求中包括目标服务器的标识信息后,将交易请求分配至所述目标服务器进而处理交易。
本发明实施例具有如下有益效果:
本发明通过构建切换服务器,让切换服务器临时受理交易,通过在切换服务器内部采用蓄水放水的逻辑处理机制,蓄水时,交易数据写入切换服务器对应的数据库中,放水时,根据交易所需数据的实际数据源来将交易分配至切换服务器对应的数据库或目标服务器对应的数据库进行处理,由此在切换服务器向目标服务器进行数据同步完成后,无需停止服务就能保证切换数据库和目标数据库中数据一致,实现了无感知切换,提升客户体验;并且,整个切换过程简单,工作量小,切换过程安全可靠。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例1提供的一种交易数据同步装置的结构示意图;
图2是本申请实施例2提供的一种交易数据同步方法的流程图;
图3是本申请实施例2提供的切换服务器数据同步过程的流程图;
图4是本申请实施例3提供的服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如背景技术中所述,对于数据生命周期较长的且并发较高的系统,比如账户管理类的系统,数据量大且并发高,为了保证账户余额准确,当需要对数据库硬件升级或者更换数据库软件时,通常采用全量加增量同步的方式,切换时,需停服务才能完成数据的验证,如此,对于用户来说,有一段时间会无法交易,降低了体验感,基于此,本申请申请人创造性想到构建一个切换服务器来临时受理服务,数据同步完成后也无需停止服务就能保证两个数据库中数据一致。
实施例1
为了实现上述目的,搭建了一交易数据同步装置,包括路由设备、源服务器、切换服务器、目标服务器,其中,源服务器、切换服务器和目标服务器分别可以由多个服务器组成的服务器集群服务器实现,如图1所示,装置包括路由设备(图未视)、源集群、切换集群和目标集群,源集群对应源集群库,用于存储交易过程产生的交易数据,同样的,切换集群、目标集群分别对应了切换集群库、目标集群库。
为了使得服务连续,当源集群停止交易时,在路由设备的作用下,切换集群受理交易,产生交易数据,并通过内部设置的处理逻辑保证在同步完成时切换数据库和目标数据库的数据一致,无需再停止服务来实现数据验证。
基于上述装置,提供了一种交易数据同步方法,具体包括如下步骤:
110、路由设备对客户端发送的第一路由请求进行解析,若第一路由请求中包括切换服务器的标识信息,则将交易请求分配至切换服务器,切换服务器获取切换开关的状态信息,当切换开关处于打开状态时,对分配到的交易请求进行处理并将产生的交易数据保存至切换数据库,同时源服务器停止交易。
上述第一路由请求可以通过脚本方式实现,为了辨别各个服务器,可以在jvm启动时增加参数来实现区分,如:参数group用于区分各个服务器,源服务器group取值G1、切换服务器group取值G2、目标服务器group取值G3。
第一路由请求脚本如下:
String group="G2";
Qualification qualification=new Qualification("*","*",group);
return new LDCRegionGroupQualification(qualification);
由此,便能将源服务器受理交易切换至目标服务器受理交易。
除了通过在jvm启动时增加参数来区分服务器之外,还可通过在服务器中设置环境变量来区分各个服务器,如此需要在分配服务器时预置环境变量。
上述切换开关打开即为开始蓄水的信号,此时切换服务器需将处理交易得到的交易数据存入切换数据库中。
120、当切换服务器获取到切换开关处于关闭状态时,则判断处理路由设备分配的交易请求的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将切换数据库中的交易数据同步至与目标服务器对应的目标数据库中。
上述切换开关关闭即为放水信号,此时切换服务器根据交易请求中的标识信息连接切换数据库处理交易或者连接目标数据库处理交易,同时,自动开启数据同步任务,将切换数据库中的交易数据同步至目标数据库。
130、切换服务器判断切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应,客户端接收到同步成功响应后向路由设备发送第二路由请求,路由设备对第二路由请求进行解析,当确定第二路由请求中包括目标服务器的标识信息时,将交易请求分配至目标服务器以使切换服务器处理交易。
上述第二路由切换请求脚本如下:
String group="G3";
Qualification qualification=new Qualification("*","*",group);
return new LDCRegionGroupQualification(qualification);
其中,在源服务器对应的源数据库中的交易数据同步至目标服务器对应的目标数据库并验证成功后,客户端生成切换开关关闭请求并发送至切换服务器,切换服务器根据切换开关关闭请求将切换开关的状态信息更新为关闭;
此外,源服务器在停止交易前还进行如下处理步骤:
确定停止交易前产生的所有待同步的交易数据,根据待同步的交易数据生成同步请求;
在停止交易前或停止交易后向目标服务器发送同步请求以将所有待同步的交易数据同步至目标数据库中。
为了缩短切换时间,源服务器还可在切换服务器受理交易之前先将大部分数据同步至目标数据库,再利用增量同步的方式来实现后续同步,具体包括:
源服务器确定待同步的全量数据,并将待同步的全量数据同步至目标服务器。
上述步骤为预先准备阶段,由于原数据库中的数量大小都是T级别,甚至几十T,数据量巨大,如果在切换任务开始之后再同步数据,切换过程过长且无法控制切换风险。因此,本方案首先将一部分数据同步至目标数据库,再通过增量方式将停止交易前产生的增量数据持续同步,可以缩短切换时间,切换服务器只需等待增量数据同步完成后便能进行下一步工作。
上述同步数据可采用现有成熟技术,如当源服务器对应的数据库为db2,目标服务器对应的数据库为mysql时,采用cdc复制机制完成同步。
上述交易数据同步方法适用于数据粒度较细的系统,即数据可按照一个维度分片的系统,例如:订单系统、账户管理系统等。系统中的数据按照订单或者账户分片,分片之后各分片数据之间各自独立。由此,数据存放、数据同步到目标数据库,判断是否同步完成,均是以分片粒度进行操作。
实施例2
一种交易数据同步方法,如图2所示,具体包括如下步骤:
210、获取切换开关的状态信息,当切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库。
其中,交易请求由路由设备在源服务器停止交易时发送。
220、当切换开关处于关闭状态时,则判断处理路由设备分配的交易请求的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将切换数据库中的交易数据同步至与目标服务器对应的目标数据库中。
具体的,当接收到客户端发送的切换开关关闭请求时,将切换开关的状态信息更新为关闭;
其中,切换开关关闭请求在源服务器对应的源数据库中的交易数据同步至目标服务器对应的目标数据库并验证成功后生成。
如此,在源服务器的交易数据同步完成并验证成功后,切换服务器便可向目标服务器发送数据同步请求以将切换数据库中的交易数据同步至目标数据库中,需要说明的是,切换服务器在实现数据同步时仍受理交易。
上述实现数据同步的过程实际则为将切换数据库中执行的执行语句同步至目标数据库中执行的过程,由此,为了保证执行语句能够正常执行,切换服务器应用层代码版本需与目标服务器应用层代码版本保持一致,同时切换数据库软件及版本及目标数据库软件及版本保持一致。
上述数据同步过程中,其速度是非常快的,远远大于处理交易的速度,如此,切换服务器才能将所有的交易数据同步至目标服务器。
230、判断切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应以使客户端在接收到同步成功响应后向路由设备发送路由请求以使路由设备对路由请求进行解析并在确定路由请求中包括目标服务器的标识信息后将交易请求分配至目标服务器进而处理交易。
其中,当接收到客户端发送的切换开关关闭请求时,将切换开关的状态信息更新为关闭;
上述切换开关关闭请求在源服务器对应的源数据库中的交易数据同步至目标服务器对应的目标数据库并验证成功后生成。
在一个实施例中,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库具体包括如下步骤:
判断接收到的交易的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接源数据库以获取所需数据并写入切换数据库中。
具体实现方式如下:
根据接收到的交易开启一对应事务;
捕获事务内执行的执行语句并保存,生成基础表和明细表;其中,基础表记录了每一事务的路由字段和对应的执行语句交易序号,明细表记录了每一事务的路由字段、对应的执行语句序号、执行语句内容和执行语句同步状态值;
获取执行的第一条执行语句的路由字段,当路由字段在基础表中存在时,连接切换数据库以处理交易,当路由字段在基础表中不存在时,连接源数据库以获取所需数据并写入切换数据库。
其中,路由字段用于标识交易所需数据的实际数据源,每一条执行语句中都携带有路由字段,同一事务内的每条执行语句的路由字段相同。执行语句包括插入、更新、删除等。
基础表和明细表分别如下表所示:
表1基础表
routeid | subno |
acc01 | 5 |
其中,表1中routeid即为路由字段,subno为sql语句的交易序号,同时也代表了当前的sql语句的数量。
表2明细表
routeid | subno | sqlset | state |
acc01 | 1 | sql | 0-未同步 |
acc01 | 2 | sql | 0-未同步 |
acc01 | 3 | sql | 0-未同步 |
其中,routeid即为路由字段,subno为每一条sql语句对应的交易序号,sqlset为sql语句明细,state为sql语句的同步状态。
每次保存交易数据时按照事务维度进行保存,保存时将基础表中subno字段加一,同时登记明细表,明细表登记了该事务内所有sql语句,在登记时按照sql执行顺序登记。
在一个实施例中,上述判断接收到的交易的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接目标数据库以处理交易具体包括:
获取与当前接收到的交易相对应的事务内执行的第一条执行语句的路由字段;
判断切换数据库中是否存在与当前接收到的交易的路由字段相匹配的基础表;
若存在,则判断基础表的执行语句交易序号是否为零,当为零时,连接目标数据库以处理交易,当不为零时,连接切换数据库以处理交易;
若不存在,则连接目标数据库以处理交易。
具体的,切换服务器根据routeid查询已存储的基础表,若不存在,则将数据源更新为目标数据库处理交易,若存在,则判断subno是否为0,不为0,则由切换数据库继续处理交易,为0,则认为该routeid下的交易已同步到目标数据库中,将数据源更新为目标数据库处理交易。
本方案通过在切换服务器上设置切换开关,实现蓄水放水机制,其中,切换开关打开时表示进行蓄水,此时由切换数据库保存交易数据,当切换开关关闭时表示进行放水,此时,处理交易所产生的数据由切换服务器进行判断,如果交易使用的数据还未同步到目标数据库中,则继续在切换数据库中处理交易,如果交易所需数据在切换数据库不存在或已同步到目标数据库中,则在目标数据库中处理交易,如此,在保证服务的连续性的同时实现了无感知切换。
在一个实施例中,将切换数据库中的交易数据同步至与目标服务器对应的目标数据库具体包括:
判断切换数据库中已存储的基础表中执行语句交易序号是否为零;
当为零时,则确定对应交易的交易数据同步成功,返回同步成功响应码;
当不为零时,按照预设顺序将事务中的执行语句提交至目标数据库中以进行逐条执行,当所有执行语句执行成功时,提交事务并确定对应交易的交易数据同步成功同时返回同步成功响应码;
当事务中任一执行语句执行失败时,回滚事务并确定对应交易的交易数据同步失败,返回同步失败响应码;
其中,每当一条执行语句执行成功时,变更明细表中的执行语句同步状态值。
示例性的,若执行语句执行成功,则将同步状态改成“1-已同步”。
在一个实施例中,判断一交易的交易数据是否同步成功具体还包括:
定时检测切换数据库中交易对应的明细表的每一条执行语句的执行语句同步状态值,当明细表的每一条执行语句的执行语句同步状态值都与预设值时相同,则确定交易的交易数据同步成功;
当明细表中执行语句的执行语句同步状态值与预设值不同时,则确定交易的交易数据未同步成功。
由于在同步过程中及时更新了明细表中执行语句同步状态值,因此后续才能根据状态值来判断切换数据库的所有交易数据是否同步完成。
只有当切换数据库中所有数据都同步完成后,才能由目标服务器受理交易。
本方案通过构建切换服务器,让切换服务器临时受理交易,通过在切换服务器内部采用蓄水放水的逻辑处理机制,蓄水时,交易数据写入切换服务器对应的数据库中,放水时,根据交易所需数据的实际数据源来将交易分配至切换服务器对应的数据库或目标服务器对应的数据库进行处理,由此在切换服务器向目标服务器进行数据同步完成后,无需停止服务就能保证切换数据库和目标数据库中数据一致,实现了无感知切换,提升客户体验;并且,整个切换过程简单,工作量小,切换过程安全可靠。
实施例3
与实施例2对应,本申请提供一种服务器,如图4所示,包括:
第一处理模块31,用于获取切换开关的状态信息,当切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库;
第二处理模块32,用于当获取到切换开关处于关闭状态时,则判断路由设备分配的交易请求的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将切换数据库中的交易数据同步至与目标服务器对应的目标数据库中;
判断模块33,用于判断切换数据库中的交易数据是否全部同步成功;
发送模块34,用于当切换数据库中的交易数据全部同步成功,则向客户端发送同步成功响应以使客户端在接收到同步成功响应后向路由设备发送路由请求以使路由设备对路由请求进行解析并确定路由请求中包括目标服务器的标识信息后将交易请求分配至目标服务器进而处理交易。
在一个实施例中,上述第一处理模块31具体用于:
判断接收到的交易的所需数据是否存在于切换数据库中,若存在,则连接切换数据库以处理交易,若不存在,则连接源数据库以获取所需数据并写入切换数据库中。
在一个实施例中,上述第一处理模块31具体用于:
根据接收到的交易请求开启一对应事务;
捕获事务内执行的执行语句并保存,生成基础表和明细表;其中,基础表记录了每一事务的路由字段和对应的执行语句交易序号,明细表记录了每一事务的路由字段、对应的执行语句序号、执行语句内容和执行语句同步状态值;
获取执行的第一条执行语句的路由字段,当路由字段在基础表中存在时,连接切换数据库以处理交易,当路由字段在基础表中不存在时,连接源数据库以获取所需数据并写入切换数据库。
在一个实施例中,上述第二处理模块32具体用于:
获取与当前接收到的交易相对应的事务内执行的第一条执行语句的路由字段;
判断切换数据库中是否存在与当前接收到的交易的路由字段相匹配的基础表;
若存在,则判断基础表的执行语句交易序号是否为零,当为零时,连接目标数据库以处理交易,当不为零时,连接切换数据库以处理交易;当切换数据库中不存在与当前接收到的交易的路由字段相匹配的基础表时,连接目标数据库以处理交易。
在一个实施例中,上述第二处理模块32具体用于:
判断切换数据库中已存储的基础表中执行语句交易序号是否为零;
当为零时,则确定对应交易的交易数据同步成功;
当不为零时,按照预设顺序将事务中的执行语句提交至目标数据库中以进行逐条执行,当所有执行语句执行成功时,提交事务并确定对应交易的交易数据同步成功;
当事务中任一执行语句执行失败时,回滚事务并确定对应交易的交易数据同步失败;
其中,当执行语句执行成功时,变更明细表中执行语句同步状态值。
在一个实施例中,上述判断模块33还用于:
定时检测切换数据库中交易对应的明细表的每一条执行语句同步状态值,当明细表的每一条执行语句的执行语句同步状态值都与预设值时相同,则确定交易的交易数据同步成功;
当明细表中执行语句的执行语句同步状态值与预设值不同时,则确定交易的交易数据未同步成功。
在一个实施例中,上述第一处理模块31还用于:
当接收到客户端发送的切换开关关闭请求时,将切换开关的状态信息更新为关闭;
其中,切换开关关闭请求在源服务器对应的源数据库中的交易数据同步至目标服务器对应的目标数据库并验证成功后生成。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种交易数据同步方法,其特征在于,所述方法包括:
获取切换开关的状态信息,当所述切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库;
当所述切换开关处于关闭状态时,则判断处理所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将所述切换数据库中的交易数据同步至与目标服务器对应的所述目标数据库中;
判断所述切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应,以使所述客户端在接收到所述同步成功响应后向路由设备发送路由请求,以使所述路由设备对所述路由请求进行解析,并在确定所述路由请求中包括目标服务器的标识信息后,将所述交易请求分配至所述目标服务器进而处理交易。
2.根据权利要求1所述的方法,其特征在于,所述对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库具体包括:
判断处理所述交易请求所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述源数据库以获取所需数据并写入所述切换数据库中以处理交易。
3.根据权利要求2所述的方法,其特征在于,所述判断处理所述交易请求所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述源数据库以获取所需数据并写入所述切换数据库中具体包括:
根据接收到的所述交易请求开启一对应事务;
捕获所述事务内执行的执行语句并保存,生成基础表和明细表;其中,所述基础表记录了每一事务的路由字段和对应的执行语句交易序号,所述明细表记录了每一事务的路由字段、对应的执行语句序号、执行语句内容和执行语句同步状态值;
获取执行的第一条执行语句的路由字段,当所述路由字段在基础表中存在时,连接所述切换数据库以处理交易,当所述路由字段在基础表中不存在时,连接所述源数据库以获取所需数据并写入所述切换数据库。
4.根据权利要求3所述的方法,其特征在于,所述判断处理所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述目标数据库以处理交易具体包括:
获取与当前接收到的所述交易请求相对应的事务内执行的第一条执行语句的路由字段;
判断所述切换数据库中是否存在与当前接收到的所述交易请求的路由字段相匹配的基础表;
若存在,则判断所述基础表的执行语句交易序号是否为零,当为零时,连接所述目标数据库以处理交易,当不为零时,连接所述切换数据库以处理所述交易请求;
若不存在,则连接所述目标数据库以处理交易。
5.根据权利要求3或4所述的方法,其特征在于,所述将所述切换数据库中的交易数据同步至与目标服务器对应的目标数据库具体包括:
判断所述切换数据库中已存储的基础表中执行语句交易序号是否为零;
当为零时,则确定对应交易的交易数据同步成功;
当不为零时,按照预设顺序将事务中的执行语句提交至所述目标数据库中以进行逐条执行,当所有执行语句执行成功时,提交所述事务并确定对应交易的交易数据同步成功;
当所述事务中任一执行语句执行失败时,回滚所述事务并确定对应交易的交易数据同步失败;
其中,当执行语句执行成功时,变更明细表中的执行语句同步状态值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
定时检测所述切换数据库中所述交易对应的明细表的每一条执行语句的执行语句同步状态值,当明细表的每一条执行语句的执行语句同步状态值都与预设值时相同,则确定所述交易的交易数据同步成功;
当明细表中执行语句的执行语句同步状态值与预设值不同时,则确定所述交易的交易数据未同步成功。
7.根据权利要求1~4、6任意一项所述的方法,其特征在于,所述方法还包括:
当接收到所述客户端发送的切换开关关闭请求时,将所述切换开关的状态信息更新为关闭;
其中,所述切换开关关闭请求在源服务器对应的源数据库中的交易数据全部同步至所述目标服务器对应的目标数据库并验证成功后生成。
8.一种交易数据同步方法,其特征在于,所述方法包括:
路由设备对客户端发送的第一路由请求进行解析,若所述第一路由请求中包括切换服务器的标识信息,则将交易请求分配至切换服务器,所述切换服务器获取切换开关的状态信息,当所述切换开关处于打开状态时,对分配到的交易请求进行处理并将产生的交易数据保存至切换数据库,同时源服务器停止交易;
当所述切换服务器获取到所述切换开关处于关闭状态时,则判断所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接所述目标数据库以处理交易,同时将所述切换数据库中的交易数据同步至与目标服务器对应的所述目标数据库中;
所述切换服务器判断所述切换数据库中的交易数据是否全部同步成功,若是,则向客户端发送同步成功响应,所述客户端接收到所述同步成功响应后向所述路由设备发送第二路由请求,所述路由设备对所述第二路由请求进行解析,当确定所述第二路由请求中包括目标服务器的标识信息时,将交易请求分配至目标服务器以使所述切换服务器处理交易。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述源服务器确定停止交易前产生的所有待同步的交易数据,根据待同步的交易数据生成同步请求;
在停止交易前或停止交易后向所述目标服务器发送所述同步请求以将所有待同步的交易数据同步至所述目标数据库中。
10.一种服务器,其特征在于,包括:
第一处理模块,用于获取切换开关的状态信息,当所述切换开关处于打开状态时,对路由设备分配的交易请求进行处理并将产生的交易数据保存至切换数据库;
第二处理模块,用于当获取到所述切换开关处于关闭状态时,则判断处理所述路由设备分配的交易请求的所需数据是否存在于所述切换数据库中,若存在,则连接所述切换数据库以处理交易,若不存在,则连接目标数据库以处理交易,同时将所述切换数据库中的交易数据同步至与目标服务器对应的所述目标数据库中;
判断模块,用于判断所述切换数据库中的交易数据是否全部同步成功;
发送模块,用于当所述切换数据库中的交易数据全部同步成功,则向客户端发送同步成功响应,以使所述客户端在接收到所述同步成功响应后向路由设备发送路由请求,以使所述路由设备对所述路由请求进行解析,并确定所述路由请求中包括目标服务器的标识信息后,将交易请求分配至所述目标服务器进而处理交易。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010961768.0A CN112231395A (zh) | 2020-09-14 | 2020-09-14 | 一种交易数据同步方法、服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010961768.0A CN112231395A (zh) | 2020-09-14 | 2020-09-14 | 一种交易数据同步方法、服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231395A true CN112231395A (zh) | 2021-01-15 |
Family
ID=74117105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010961768.0A Pending CN112231395A (zh) | 2020-09-14 | 2020-09-14 | 一种交易数据同步方法、服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231395A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115205046A (zh) * | 2022-09-15 | 2022-10-18 | 北京锐融天下科技股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN115687292A (zh) * | 2022-08-03 | 2023-02-03 | 杭州新中大科技股份有限公司 | 一种可验证的与数据库技术无关的数据库升级方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750278A (zh) * | 2019-09-24 | 2020-02-04 | 苏宁云计算有限公司 | 灰度发布方法、装置、路由设备和存储介质 |
CN110765165A (zh) * | 2019-10-23 | 2020-02-07 | 中国银行股份有限公司 | 一种跨系统数据同步处理的方法、装置及系统 |
-
2020
- 2020-09-14 CN CN202010961768.0A patent/CN112231395A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750278A (zh) * | 2019-09-24 | 2020-02-04 | 苏宁云计算有限公司 | 灰度发布方法、装置、路由设备和存储介质 |
CN110765165A (zh) * | 2019-10-23 | 2020-02-07 | 中国银行股份有限公司 | 一种跨系统数据同步处理的方法、装置及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115687292A (zh) * | 2022-08-03 | 2023-02-03 | 杭州新中大科技股份有限公司 | 一种可验证的与数据库技术无关的数据库升级方法 |
CN115687292B (zh) * | 2022-08-03 | 2023-06-23 | 杭州新中大科技股份有限公司 | 一种可验证的与数据库技术无关的数据库升级方法 |
CN115205046A (zh) * | 2022-09-15 | 2022-10-18 | 北京锐融天下科技股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN115205046B (zh) * | 2022-09-15 | 2022-12-09 | 北京锐融天下科技股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684307B (zh) | 一种数据存储方法、装置、设备及存储介质 | |
US5613113A (en) | Consistent recreation of events from activity logs | |
CN109241175A (zh) | 数据同步方法、装置、存储介质及电子设备 | |
CN100375038C (zh) | 重定序两阶段提交中的资源的最后代理优化方法和系统 | |
CN105608086A (zh) | 分布式数据库系统的事务处理方法及装置 | |
CN110321339B (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
CN112231395A (zh) | 一种交易数据同步方法、服务器 | |
US6526417B1 (en) | System and method for change accumulation unmerged update reduction | |
US20070282878A1 (en) | System and method for online reorganization of a database using flash image copies | |
US6725242B2 (en) | Multiple-computer data processing system and method with time-versioned data storage | |
CN114942965B (zh) | 一种数据库主备同步操作的加速方法和系统 | |
CN115617908A (zh) | 一种MySQL数据同步方法、装置、数据库终端、介质及系统 | |
CN112559496B (zh) | 一种分布式数据库事务原子性实现方法及装置 | |
CN114493602B (zh) | 区块链交易的执行方法、装置、电子设备和存储介质 | |
CN115421880A (zh) | 事务处理方法、装置、设备及介质 | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
CN116107801A (zh) | 交易处理方法及相关产品 | |
CN112269820A (zh) | 一种基于cmsp实现数据批次同步的方法及平台 | |
CN114625729B (zh) | 一种业务数据的存储方法、装置、电子设备和存储介质 | |
JPH10232809A (ja) | トランザクション処理システム | |
CN107153699A (zh) | 一种动态扩展集群服务器的方法及装置 | |
CN112527775A (zh) | 一种基于双写的数据库扩展的方法及其装置 | |
CN115982119A (zh) | 一种分表数据调整方法、调整系统及存储介质 | |
CN116775611A (zh) | 配置信息的更新方法、装置、存储介质及电子设备 | |
CN116302710A (zh) | 应用版本回滚方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210115 |
|
RJ01 | Rejection of invention patent application after publication |