CN114595288A - 一种基于sql命令级的多idc分布式系统数据同步方法 - Google Patents
一种基于sql命令级的多idc分布式系统数据同步方法 Download PDFInfo
- Publication number
- CN114595288A CN114595288A CN202210218661.6A CN202210218661A CN114595288A CN 114595288 A CN114595288 A CN 114595288A CN 202210218661 A CN202210218661 A CN 202210218661A CN 114595288 A CN114595288 A CN 114595288A
- Authority
- CN
- China
- Prior art keywords
- idc
- data
- task
- synchronization
- tasks
- 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
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于SQL命令级的多IDC分布式系统数据同步方法,包括:配置需要同步的数据库表和增删改操作类型;通过数据库触发器生成同步表的增删改SQL命令;将SQL命令打包成同步任务传输到各目标IDC;目标IDC接收同步任务并依据任务生成的时间序列在对应的数据库中执行接收到的同步任务;根据同步任务状态,按时间顺序尝试重复执行失败的同步任务;定期执行各IDC同步数据表的一致性监控。本发明能够在不变更业务层逻辑的情况下,将数据表的增删改操作在多个IDC机房的系统中进行同步,实现数据表级的最终一致性;为多IDC分布式系统提供了一种数据同步解决方案。
Description
技术领域
本发明涉及分布式系统数据同步技术领域,尤其涉及一种基于SQL命令级的多IDC分布式系统数据同步方法。
背景技术
随着分布式系统的发展,特别是分布式数据库技术的发展,两地三中心的部署已成普遍现象,不少大厂甚至已经进入三地五中心的多活时代。然而,很多中小型互联网公司在面对信息系统多IDC部署时却踌躇不前,主要原因是技术门槛高、投入大。这里面最关键的技术就是多个IDC机房间的数据同步,因为上层应用做到无状态后就可以分布式部署,但底层数据库不行。比如MySQL、SQLServer等有状态的存储服务通常就是多IDC分布式部署的技术难点。
参考CAP理论,系统无法同时满足三个特性,即:一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。在多IDC分布式部署情况下分区是必然的。有强一致性要求的,如金融业务,会选择CP模型;对于多数互联网应用的场景,首要保证服务可用性,所以选择AP模型。在AP模型下,为尽可能的追求一致性,就出现了“最终一致性”,即:只要求所有节点的最后数据是相同的和正确的,而不要求其中间状态是一致的。
数据最终一致的需求通常是在系统业务单元化、数据分区化后通过业务系统层实现,或者是在高质量网络通信前提下通过分布式数据库软件本身的同步方案实现。前者存在软件系统改造工作量大、技术门槛高的特点。传统分布式数据库数据同步方案通常是主从结构部署,数据由主节点同步到副节点,是单向的;难以直接应用到异地多IDC部署;且副节点处于冷备状态,对资源是一种巨大浪费。新兴的NewSQL、PGXC等类型的分布式数据库数据同步方案能够实现跨区域的多IDC分布式部署,但软件体量大,技术门槛高,迁移和运维投入大。
发明内容
为解决上述技术问题,本发明的目的是提供一种基于SQL命令级的多IDC分布式系统数据同步方法。
本发明的目的通过以下的技术方案来实现:
一种基于SQL命令级的多IDC分布式系统数据同步方法,包括:
A、配置需要同步的数据库表和增删改操作类型;
B、通过数据库触发器生成同步表的增删改SQL命令;
C、将SQL命令打包成同步任务传输到各目标IDC;
D、目标IDC接收同步任务并依据任务生成的时间序列在对应的数据库中执行接收到的同步任务;
E、根据同步任务状态,按时间顺序尝试重复执行失败的同步任务;
F、定期执行各IDC同步数据表的一致性监控。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
对上层业务系统没有依赖,不必对业务应用层进行改造
基于系统原有的数据库实现,不需要变更数据库软件;
同步是双向的,各个节点都可以读写。
可通过Internet实现数据最终一致性,数据同步延迟时间主要是网络通信时间。
可根据业务类型,以数据表为单位,自定义需要同步的数据内容。
附图说明
图1是基于SQL命令级的多IDC分布式系统数据同步方法流程图;
图2是基于SQL命令级的多IDC分布式系统数据同步方法示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本发明作进一步详细的描述。
如图1所示,为基于SQL命令级的多IDC分布式系统数据同步方法流程,包括:
1)配置需要同步的数据库表和增删改操作类型;
分布式信息系统通常会使用数据库存储系统数据。根据实际业务,配置需要同步的数据库和数据表以及需要同步的操作类型(包括INSERT、UPDATE、DELETE)。系统的日志流水数据在业务单元化后已经分区好了,已避免线上交叉访问,可定期收集汇总,不要做增量同步。
2)通过数据库触发器生成同步表的增删改SQL命令
根据配置信息,在数据库中生成相关触发器,由触发器生成SQL命令存入临时任务中。如果数据库不支持触发器,可通过开发旁路服务实现。当待同步数据表发生INSERT、UPDATE、DELETE操作时,触发器根据表结构和操作数据生成INSERT、UPDATE、DELETE的SQL命令,并将这些命令存储到临时同步任务列表中。每个同步任务均包含SQL命令、时间戳、IDC标记以及数据库标记等信息。
3)将SQL命令打包成同步任务传输到各目标IDC
源IDC的数据同步任务发送服务感知到新任务后,读取任务信息并根据配置将任务打包发送至目标IDC。源IDC收集新同步任务的同时,也会收集目标IDC中上次执行失败的同步任务,将新任务与上次同步失败的任务一起按照系统配置的数据库顺序以及任务生成的时间顺序排序打包后发送到目标IDC。其中失败的任务重复收集次数大于设定的阀值N后,该任务将在监控系统中报警,并由数据一致性监控服务兜底处理。
4)目标IDC接收同步任务并执行同步操作
目标IDC数据同步服务接收同步任务包并落库,根据任务顺序在指定的数据库中执行任务中的SQL命令。任务包任务执行完后,组织、记录执行结果,并返回任务执行状态。
5)通过重试机制处理执行失败的同步任务
首先,目标IDC进行数据同步时,会尝试重复执行失败的同步任务,执行次数达到设定阀值后仍未成功的,被标记为本次任务包中执行失败的任务。其次,源IDC会将这些失败的任务与新任务一起打包,重新发送到目标IDC进行同步;重新打包次数达到设置的阀值后,将在监控系统中报警,并由数据一致性监控服务最终处理。
6)定期执行各IDC同步数据表的一致性监控
一致性检测服务每隔一段时间主动获取同步任务发送数据,依据IDC标记、数据库标记、时间戳等信息对任务进行数据分片;利用同步任务ID、任务状态、同步表、主键等用于检测一致性的关键信息,将分片数据整合生成数据校验码数据表,并打包成校验任务,发送到目标IDC;目标IDC使用同样的逻辑获取数据校验码数据表并返回;一致性检测服务将两个数据表对比校验,生成对比结果,完成一次校验。对于数据不一致的情况,根据配置使用主副模式或选举机制强制同步数据;对于只有两个IDC节点的分布式系统,根据主副节点设置,以主节点的数据为准进行强制同步;对于两个以上IDC节点的分布式系统,可设置通过Raft选举机制强制同步,也可以设置成主副模式。
如图2所示,为基于SQL命令级的多IDC分布式系统数据同步方法示意图,所述方法包括:
1)对源表进行数据的增删改时,通过触发器生成SQL命令插入任务临时表。
2)发送服务感知任务临时表,收集任务数据插入任务表。
3)从任务表中获取本次任务,准备构造任务包。
4)从任务同步信息表中获取上次同步失败的任务,与本次任务一起构造任务包;超过重试次数的失败任务不再提取,由数据一致性监控服务处理。
5)操作任务同步信息表,插入本次任务、更新上次失败任务,记录发送到各个IDC的任务状态。
6)轮询各目标IDC,发送任务数据包。
7)根据任务顺序在对应数据库中执行SQL任务;失败的任务多次执行,直到设定的最大次数。
8)一个任务包执行完毕,组织任务执行结果。
9)记录接收的任务及执行结果到任务接收表。
10)返回任务执行状态。
11)根据各个远端机房的执行情况,记录任务最终执行结果。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (7)
1.一种基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,包括:
A、配置需要同步的数据库表和增删改操作类型;
B、通过数据库触发器生成同步表的增删改SQL命令;
C、将SQL命令打包成同步任务传输到各目标IDC;
D、目标IDC接收同步任务并依据任务生成的时间序列在对应的数据库中执行接收到的同步任务;
E、根据同步任务状态,按时间顺序尝试重复执行失败的同步任务;
F、定期执行各IDC同步数据表的一致性监控。
2.如权利要求1所述的基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,所述A中根据实际业务,配置需要同步的数据库和数据表及需要同步操作的类型即INSERT、UPDATE、DELETE三种类型。
3.如权利要求1所述的基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,所述B中,当待同步数据表数据发生变化时,由系统自动生成基于该数据表的UPDATE或INSERT命令,并存入同步任务列表中,每个同步任务均包含SQL命令、时间戳、IDC标记以及数据库标记。
4.如权利要求1所述的基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,所述C具体包括:源IDC的数据同步任务发送服务感知到新任务后,读取任务信息并根据配置将任务打包发送至目标IDC;所述源IDC收集新同步任务的同时,也会收集目标IDC中上次执行失败的同步任务,将新任务与上次同步失败的任务一起按照系统配置的数据库顺序以及任务生成的时间顺序排序打包后发送到目标IDC。
5.如权利要求1所述的基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,所述D中根据同步配置信息,发送同步任务到目标IDC,消息接收服务器接收到数据后,依据任务顺序在指定的数据库中执行任务中的SQL命令。
6.如权利要求1所述的基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,所述E中,目标IDC进行数据同步时,按时间顺序尝试重复执行失败的同步任务,并根据业务情况和网络延迟情况设置最大重试次数,对最终失败的同步任务定时统计分析。
7.如权利要求1所述的基于SQL命令级的多IDC分布式系统数据同步方法,其特征在于,所述F中数据一致性监控服务采用对各IDC数据进行对比校验和强制同步的方式保证数据一致性;由数据一致性监测系统收集已发送的同步任务,对任务数据分片后生成数据校验表,并发送到目标IDC进行数据对比校验、生成报表;由数据一致性处理系统根据配置使用主副模式或Raft选举机制强制同步数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210218661.6A CN114595288A (zh) | 2022-03-03 | 2022-03-03 | 一种基于sql命令级的多idc分布式系统数据同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210218661.6A CN114595288A (zh) | 2022-03-03 | 2022-03-03 | 一种基于sql命令级的多idc分布式系统数据同步方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595288A true CN114595288A (zh) | 2022-06-07 |
Family
ID=81816030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210218661.6A Pending CN114595288A (zh) | 2022-03-03 | 2022-03-03 | 一种基于sql命令级的多idc分布式系统数据同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595288A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115834601A (zh) * | 2022-11-11 | 2023-03-21 | 中国电子科技集团公司第十研究所 | 基于多中心的数据同步方法、装置、设备及介质 |
-
2022
- 2022-03-03 CN CN202210218661.6A patent/CN114595288A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115834601A (zh) * | 2022-11-11 | 2023-03-21 | 中国电子科技集团公司第十研究所 | 基于多中心的数据同步方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209726B (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
US6615223B1 (en) | Method and system for data replication | |
CN109376160B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN108804618B (zh) | 数据库配置方法、装置、计算机设备和存储介质 | |
US8938421B2 (en) | Method and a system for synchronizing data | |
US8676749B2 (en) | Statement logging in databases | |
CN104809201A (zh) | 一种数据库同步的方法和装置 | |
CN104809202A (zh) | 一种数据库同步的方法和装置 | |
CN109558411A (zh) | 一种基于区块链数据的下链同步方法及装置 | |
CN107291768B (zh) | 一种索引建立的方法及装置 | |
CN107870982B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN104809200A (zh) | 一种数据库同步的方法和装置 | |
CN111506556A (zh) | 一种多源异构的结构化数据同步方法 | |
CN112579613B (zh) | 数据库集群差异比对与数据同步的方法、系统及介质 | |
WO2017181430A1 (zh) | 分布式系统的数据库复制方法及装置 | |
CN112328702A (zh) | 数据同步方法及系统 | |
CN115858513A (zh) | 数据治理方法、装置、计算机设备和存储介质 | |
CN110287251B (zh) | MongoDB到HBase的分布式高容错数据实时同步方法 | |
CN114595288A (zh) | 一种基于sql命令级的多idc分布式系统数据同步方法 | |
CN113672692A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114153809A (zh) | 基于数据库日志并行实时增量统计的方法 | |
CN113468143A (zh) | 数据迁移方法、系统、计算设备及存储介质 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN115905413A (zh) | 一种基于Python协程和DataX的数据同步平台 | |
CN116186082A (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 |