本发明涉及数据库同步,尤其涉及一种分布式数据库数据同步方法、系统、设备及介质。
背景技术:
1、随着电力行业信息化应用的不断深入,分布式数据库在电力自动化系统中的应用日益广泛,在火电、气电、风电、水电、光伏、轨道交通等主要发电场景均有不同程度的应用,随着业务的不断增加和深入,单一数据库已经不能满足电力自动化场景的实际需求,主备双库、一主多备等数据库主备容灾形式的需求在电力自动化领域日益强烈,这种场景就涉及数据同步的问题。由于电力自动化系统中实时性要求较高,且不同安全大区之间的联接处会设置专用隔离装置,无法直接通过网络进行通信,因此,需要设计一种可在异种数据库之间实现跨隔离安全实时同步的方法,解决电力自动化系统中不同安全大区之间及同一安全大区内异种数据库的同步问题。
2、目前现有的技术中,数据库同步方式大多时基于自身的同步复制技术实现的,或者根据业务场景的特定要求由数据库开发人员自行开发的程序实现的。但前者往往存在可靠性较低、难以实现、配置复杂等问题,后者往往只能适用于特定的场景,并且可能和实际业务深度绑定,通用性差。
3、例如,中国专利cn117688103a公开了一种数据库同步方法、装置、存储介质及电子装置,包括在启动目标任务的情况下,读取目标配置文件;基于目标配置文件中包括的第一配置项将第一表格中的目标数据集同步至第二表格中。
4、基于上述方案,该方法通过读取目标配置文件对源数据集进行筛选得到目标数据集,并通过配置文件对数据进行筛选,避免了相关技术中需要依赖人工开发新代码的方式实现数据库同步,从而解决相关技术中存在的数据库同步成本较高及效率较低的技术问题,然而当实际工程环境中筛选出的目标数据集较大时,该方案的同步效率依然较低,并且当数据修改较为频繁时,无法实现基于数据库增量修改的实时同步。
5、例如,中国专利cn117473019a公开了一种数据同步方法、系统、计算机设备以及存储介质,该方法包括响应于数据同步节点的第一同步操作,获取源数据库中的第一同步数据;将第一同步数据存储至云服务器;响应于数据同步节点的第二同步操作,将云存储空间中的第一同步数据同步至目标数据库中进行存储。
6、基于上述方案,该方法通过将同步数据存储到云服务器的方式,实现数据同步节点计算和存储的分离,在容灾场景下可以缩短数据的恢复时间,从而满足数据同步场景的同步实时性要求,然而在电力行业中数据往往只存储在局域网中,不存在上云的条件,且不同安全大区之间往往不能通过网络直接连接,而是通过物理隔离装置进行数据交换,因此该方案并不适用于电力自动化领域。
7、例如,中国专利cn117668083a公开了一种异构数据库同步方法、装置、电子设备及存储介质,该方法包括在当前异构数据库的数据源发生变化的情况下,确定变化数据;根据预先确定的转换方式将变化数据进行转换,得到目标数据;将目标数据存储到中心数据库,以供中心数据库将目标数据同步至其他异构数据库,解决了在异构数据库中数据的共享及同步问题,可靠性高,同步性能好。
8、基于上述方案,该方法通过在数据源发生变化的情况下,确定变化数据后进行转换得到目标数据,再将目标数据存储到中心数据库后,由中心数据库同步至其他异构数据库,然而在电力自动化领域往往要求数据库一主多备,且需要支持主备切换,该方法强依赖于中心数据库,中心数据库出现问题则会影响整体功能,且电力自动化领域部分应用场景预算有限,整个系统可能只有主备两个数据库服务器,无法进行中心服务器的架设,同时该方法虽也使用触发器进行数据库事务的捕获,但只有进行了ddl操作后或主动进行订阅时才会确定变化数据,无法在数据变化后立即进行记录,不符合电力自动化领域的实时性要求。
技术实现思路
1、本发明为了解决上述问题,提出了一种分布式数据库数据同步方法、系统、设备及介质,实现电力自动化场景下跨安全区跨物理隔离装置的数据同步的目的。
2、为了实现上述目的,本发明采用如下技术方案:
3、根据本发明的第一方面,提供了一种分布式数据库数据同步方法,该数据同步方法包括以下步骤:
4、利用触发器监控主库数据表库,并基于监控结果识别主数据库内的数据变化信息,对数据变化信息进行变化分析获取增量变化数据;
5、基于数据导出器将增量变化数据导出为增量数据包,并利用文件传输器将增量数据包发送至备库节点对应的存储目录;
6、在完成发送工作后利用消息总线发送增量同步消息,备库节点根据增量同步消息将存储目录内的增量数据包导入至备库数据表库完成数据同步工作。
7、优选的,利用触发器监控主库数据表库,并基于监控结果识别主数据库内的数据变化信息,对数据变化信息进行变化分析获取数据内的增量变化数据包括以下步骤:
8、获取主库数据表库内待同步的数据表,并在待同步的数据表内创建辅助表与行唯一标识;
9、利用数据记录器获取待同步数据表在运行时产生的数据变化记录,并结合触发器识别数据变化记录对应的操作类型;
10、基于识别结果将数据变化记录记录至对应的辅助表内得到增量变化数据。
11、优选的,辅助表包括同步状态表、增量日志表、数据定义语言日志表及同步日志表;
12、同步状态表,用于记录主库数据表库中的变化;
13、增量日志表,用于记录同步模式下主库数据表库中数据执行的增加、删除、更改操作;
14、数据定义语言日志表,用于记录同步模式下主库数据表库中数据进行的数据定义语言操作;
15、同步日志表,用于记录同步模式下主库数据表库中数据变化状态,并根据记录结果确定导出工作时的起点。
16、优选的,基于识别结果将数据变化记录记录至对应的辅助表内得到增量变化数据包括以下步骤:
17、根据识别结果将待同步的数据表上进行的增加、删除、更改操作对应添加至增量日志表内,并基于识别结果获取数据定义语言操作;
18、根据获取结果将数据定义语言语句本身记录至数据定义语言日志表中,并设定增量日志表与数据定义语言日志表中的记录按照执行时间进行排序;
19、使用行唯一标识对增量日志表与数据定义语言日志表内的排序结果进行标记,并将增量日志表中的行唯一标识设定为同步过程中的版本号。
20、优选的,基于数据导出器将增量变化数据导出为增量数据包,并利用文件传输器将增量数据包发送至备库节点对应的存储目录包括以下步骤:
21、根据历史导出版本设定增量变化数据的导出空间,并创建计时器定时运行数据导出器生成结构查询语言;
22、数据导出器将结构查询语言与多线程方式结合读取增量变化数据,获取增量信息导出文件,并将增量信息导出文件打包为压缩包得到增量数据包;
23、基于状态服务获取备库节点后确定数据存储目录,并利用文件传输器将增量数据包发送至备库节点指定的存储目录。
24、优选的,在基于数据导出器将增量变化数据导出为增量数据包,并利用文件传输器将增量数据包发送至备库节点对应的存储目录后,进行传输稳定性评估,过程如下:
25、获取传输过程实时数据,所述传输过程实时数据包括数据实际传输时间、数据实际最小传输速率、实际网络延迟波动以及宽带实际最高使用率;
26、将获取的传输过程实时数据与数据库中存储的传输过程参定数据进行比对,获得传输偏差评估值,所述数据库中存储的传输过程参定数据包括数据参定传输时间、数据参定最小传输速率、参定网络延迟波动以及宽带参定最高使用率;
27、其中,传输偏差评估值的计算公式如下:
28、
29、式中,cp为传输偏差评估值,st为数据实际传输时间,ss为数据实际最小传输速率,sb为实际网络延迟波动,sk为宽带实际最高使用率,ct为数据参定传输时间,cs为数据参定最小传输速率,cb为参定网络延迟波动,ck为宽带参定最高使用率,e为自然常数;
30、将传输偏差评估值与数据库中存储的传输偏差阈值进行比对,判断传输偏差评估值是否小于数据库中存储的传输偏差阈值:
31、若判断传输偏差评估值小于数据库中存储的传输偏差阈值,则基于小于数据库中存储的传输偏差阈值的传输偏差评估值确定传输稳定性等级:
32、将小于数据库中存储的传输偏差阈值的传输偏差评估值与数据库中存储的各传输偏差评估值对应的传输稳定性等级进行比对,获取该小于数据库中存储的传输偏差阈值的传输偏差评估值对应的传输稳定性等级;
33、若判断传输偏差评估值不小于数据库中存储的传输偏差阈值,则传输不稳定,进行预警提示。
34、优选的,根据历史导出版本设定增量变化数据的导出空间,并创建计时器定时运行数据导出器生成结构查询语言包括以下步骤:
35、手动设定导出的版本数量后获取历史导出版本信息,并从历史导出版本信息中选取导出版本最大的版本号作为起点;
36、将最大版本号与版本数量之间的最小值作为终点,基于起点与终点结果确定增量变化数据的导出空间;
37、利用计时器判断主库数据变化信息导出规则,并依据导出规则定时运行数据导出器读取增量变化数据;
38、数据导出器将增量变化数据修改为预先定义的数据类型,并在生成与主库数据库无关的结构查询语言后,将增量变化数据按执行顺序存入文件内。
39、优选的,利用计时器判断主库数据变化信息导出规则,并依据导出规则定时运行数据导出器读取增量变化数据包括以下步骤:
40、根据预先创建的计时器判断起点对应的版本号与历史导出操作对应版本号之间的差值,并将差值结果与设定值进行对比生成导出规则;
41、若差值结果等于设定值,则设定数据导出器运行等待操作,暂停导出工作;
42、若差值结果大于设定值,则运行数据导出器将主库数据库内的全量数据变化信息导出;
43、若差值结果小于设定值,则运行数据导出器将辅助表内的增量变化数据导出。
44、优选的,数据导出器将结构查询语言与多线程方式结合读取增量变化数据,获取增量信息导出文件,并将增量信息导出文件打包为压缩包得到增量数据包包括以下步骤:
45、创建与主库数据库相同结构的存储表,在存储表内对增量变化数据执行结构查询语言操作保证数据的一致性;
46、基于增量日志表读取增量变化数据,将增量变化数据按照表名进行分组,并将每组分组各表的变化信息导出为单独文件;
47、将表名相同的分组集成新建程序线程,并将程序线程与主库数据库连接读取增量数据:
48、将各分组对应的单独文件导出打包为压缩包,并对压缩包执行二进制形式读入内存操作后,利用加密算法进行加密得到加密后的增量数据包。
49、优选的,基于状态服务获取备库节点后确定数据存储目录,并利用文件传输器将增量数据包发送至备库节点指定的存储目录包括以下步骤:
50、利用状态服务订阅主库数据库与备库数据库的节点信息,基于节点信息获取节点机器名,根据节点机器名去除主库数据库对应的节点;
51、将剩余的节点信息定义为备库数据库节点,并调用文件传输器将增量数据包发送至备库数据节点对应的指定存储目录下;
52、备库数据库节点接收文件传输器发送的增量数据包,并将数据发生记录同步至同步日志表。
53、优选的,在完成发送工作后利用消息总线发送增量同步消息,备库节点根据增量同步消息将存储目录内的增量数据包导入至备库数据表库完成数据同步工作包括以下步骤:
54、在完成发送工作后,利用消息总线发布增量数据包包含的增量同步消息,增量数据包导入器接收增量同步消息后检查增量数据包;
55、根据检查结果判断增量数据包的版本信息,应用加密算法对增量数据包进行解密,将解密完成的增量数据包导入至备库数据库;
56、将备库数据库的导入记录记录至同步日志表内后通过消息总线发布导入信息,并验证数据导入的一致性。
57、优选的,在完成发送工作后利用消息总线发送增量同步消息,备库节点根据增量同步消息将存储目录内的增量数据包导入至备库数据表库完成数据同步工作后,进行导入效率评估,过程如下:
58、获取导入状态数据,所述导入状态数据包括单位时间内的消息吞吐量、备库节点数据最大接收速率、同步延迟以及消息延迟;
59、将导入状态数据与数据库中存储的导入状态参定数据进行比对分析,得到导入状态评估指数,所述数据库中存储的导入状态参定数据包括单位时间内的参定消息吞吐量、备库节点数据参定最大接收速率、参定同步延迟以及参定消息延迟;
60、其中,导入状态评估指数的计算公式如下:
61、
62、式中,dp为导入状态评估指数,stl为单位时间内的消息吞吐量,svl为备库节点数据最大接收速率,syl为同步延迟,sxl为消息延迟,ctl为单位时间内的参定消息吞吐量,cvl为备库节点数据参定最大接收速率,cyl为参定同步延迟,cxl为参定消息延迟,e为自然常数;
63、将导入状态评估指数与数据库中存储的导入状态评估阈值进行比对,判断导入状态评估指数是否大于数据库中存储的导入状态评估阈值:
64、若导入状态评估指数大于数据库中存储的导入状态评估阈值,则导入效率合格;
65、若导入状态评估指数不大于数据库中存储的导入状态评估阈值,则根据数据库中存储的导入状态评估阈值与导入状态评估指数的差值确定导入效率不合格等级:
66、将差值与数据库中存储的各差值对应的预警等级进行比对,获取该差值对应的预警等级。
67、优选的,根据检查结果判断增量数据包的版本信息,应用加密算法对增量数据包进行解密,将解密完成的增量数据包导入至备库数据库包括以下步骤:
68、根据增量数据包的检查情况判断增量数据包的开始版本号与结束版本号,分析开始版本号与备库数据库的版本号之间的关系;
69、当开始版本号等于备库数据库的版本号加一时则运行增量数据包导入器执行导入工作,并将加密增量数据包以二进制形式读入内存;
70、利用加密算法对加密增量数据包进行解密后写入文件,并执行解压操作得到解密完成的增量数据包;
71、运用多线程方式新建程序线程按照事务号顺序将增量数据包中每个文件导入至备库数据库。
72、优选的,将备库数据库的导入记录记录至同步日志表内后通过消息总线发布导入信息,并验证数据导入的一致性包括以下步骤:
73、在导入完成后将备库数据库在导入过程产生的导入记录导入至同步日志表内,并在导入完成后通过消息总线发布导入完成消息,向通知应用发送提醒;
74、应用接收提醒后获取主库数据库与备库数据库中记录的增量数据包的最后同步版本号,并根据版本号获取结果验证增量数据包的导入一致性。
75、根据本发明的第二方面,提供了一种分布式数据库数据同步系统,包括:
76、增量数据记录模块,用于利用触发器监控主库数据表库,并基于监控结果识别主数据库内的数据变化信息,对数据变化信息进行变化分析获取增量变化数据;
77、增量数据导出模块,用于基于数据导出器将增量变化数据导出为增量数据包,并利用文件传输器将增量数据包发送至备库节点对应的存储目录;
78、增量数据导入模块,用于在完成发送工作后利用消息总线发送增量同步消息,备库节点根据增量同步消息将存储目录内的增量数据包导入至备库数据表库完成数据同步工作。
79、根据本发明的第三方面,提供了一种计算机设备。
80、优选的,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
81、根据本发明的第四方面,提供了一种计算机可读存储介质。
82、优选的,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
83、本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
84、1、本发明采用基于数据库表级触发器的增量数据记录器,在数据库表中发生增、删、改以及ddl操作时,实时记录变化信息,实现数据修改频繁时的增量数据实时记录,同时主库和备库各自独立工作,不依赖于中心数据库,数据无需上云,预算有限的场景下可配置为主备双库,预算充足的场景下可配置为一主多备,配置灵活多变,且通过将主数据库中增量的变化数据导出为数据库类型无关的增量数据包,再基于可跨隔离文件服务的文件传输器进行增量数据包的传输,实现了电力自动化场景下跨安全区跨物理隔离装置的数据同步,解决了在电力自动化系统中主备数据库跨安全区数据共享及同步问题,实时性高,同步性能好,安全可靠。
85、2、本发明解决了在电力自动化系统中主备数据库跨安全区数据共享及同步问题,实时性高,同步性能好,安全可靠,且数据库实例无关,并可用于已有环境的低成本改造,通过引入数据库表级触发器,在数据发生变化时实时确定变化数据,确保变化信息记录的实时性,将变化数据导出为数据库类型无关的增量数据包,保证同步的数据库实例无关,同时在传输过程中使用国密算法加密,保证传输安全性,且使用可跨隔离传输的文件服务传输增量数据包,实现数据可跨隔离传输。
1.一种分布式数据库数据同步方法,其特征在于,该数据同步方法包括以下步骤:
2.根据权利要求1所述的一种分布式数据库数据同步方法,其特征在于,所述利用触发器监控主库数据表库,并基于监控结果识别主数据库内的数据变化信息,对数据变化信息进行变化分析获取数据内的增量变化数据包括以下步骤:
3.根据权利要求2所述的一种分布式数据库数据同步方法,其特征在于,所述辅助表包括同步状态表、增量日志表、数据定义语言日志表及同步日志表;
4.根据权利要求3所述的一种分布式数据库数据同步方法,其特征在于,所述基于识别结果将数据变化记录记录至对应的辅助表内得到增量变化数据包括以下步骤:
5.根据权利要求4所述的一种分布式数据库数据同步方法,其特征在于,所述基于数据导出器将增量变化数据导出为增量数据包,并利用文件传输器将增量数据包发送至备库节点对应的存储目录包括以下步骤:
6.根据权利要求5所述的一种分布式数据库数据同步方法,其特征在于,在基于数据导出器将增量变化数据导出为增量数据包,并利用文件传输器将增量数据包发送至备库节点对应的存储目录后,进行传输稳定性评估,过程如下:
7.根据权利要求5所述的一种分布式数据库数据同步方法,其特征在于,所述根据历史导出版本设定增量变化数据的导出空间,并创建计时器定时运行数据导出器生成结构查询语言包括以下步骤:
8.根据权利要求7所述的一种分布式数据库数据同步方法,其特征在于,所述利用计时器判断主库数据变化信息导出规则,并依据导出规则定时运行数据导出器读取增量变化数据包括以下步骤:
9.根据权利要求8所述的一种分布式数据库数据同步方法,其特征在于,所述数据导出器将结构查询语言与多线程方式结合读取增量变化数据,获取增量信息导出文件,并将增量信息导出文件打包为压缩包得到增量数据包包括以下步骤:
10.根据权利要求9所述的一种分布式数据库数据同步方法,其特征在于,所述基于状态服务获取备库节点后确定数据存储目录,并利用文件传输器将增量数据包发送至备库节点指定的存储目录包括以下步骤:
11.根据权利要求1所述的一种分布式数据库数据同步方法,其特征在于,所述在完成发送工作后利用消息总线发送增量同步消息,备库节点根据增量同步消息将存储目录内的增量数据包导入至备库数据表库完成数据同步工作包括以下步骤:
12.根据权利要求11所述的一种分布式数据库数据同步方法,其特征在于,在完成发送工作后利用消息总线发送增量同步消息,备库节点根据增量同步消息将存储目录内的增量数据包导入至备库数据表库完成数据同步工作后,进行导入效率评估,过程如下:
13.根据权利要求11所述的一种分布式数据库数据同步方法,其特征在于,所述根据检查结果判断增量数据包的版本信息,应用加密算法对增量数据包进行解密,将解密完成的增量数据包导入至备库数据库包括以下步骤:
14.根据权利要求13所述的一种分布式数据库数据同步方法,其特征在于,所述将备库数据库的导入记录记录至同步日志表内后通过消息总线发布导入信息,并验证数据导入的一致性包括以下步骤:
15.一种分布式数据库数据同步系统,用于实现权利要求1-14中任一项所述的分布式数据库数据同步方法,其特征在于,包括:
16.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至14中任一项所述的方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
