CN113407638A - 实现实时关系型数据库数据同步的方法 - Google Patents

实现实时关系型数据库数据同步的方法 Download PDF

Info

Publication number
CN113407638A
CN113407638A CN202110805505.5A CN202110805505A CN113407638A CN 113407638 A CN113407638 A CN 113407638A CN 202110805505 A CN202110805505 A CN 202110805505A CN 113407638 A CN113407638 A CN 113407638A
Authority
CN
China
Prior art keywords
library
deleting
modifying
slave
increasing
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
Application number
CN202110805505.5A
Other languages
English (en)
Inventor
洪俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Tonglian Financial Services Co Ltd
Original Assignee
Shanghai Tonglian Financial Services Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Tonglian Financial Services Co Ltd filed Critical Shanghai Tonglian Financial Services Co Ltd
Priority to CN202110805505.5A priority Critical patent/CN113407638A/zh
Publication of CN113407638A publication Critical patent/CN113407638A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种实现实时关系型数据库数据同步的方法,该方法包括以下步骤:同步过程:对主库数据进行增删改操作时,Java应用层抓取对主库进行增删改的操作,对主库执行所述增删改操作,并异步发送所述增删改的操作到消息队列,同步进程到从库中,所述从库执行所述增删改的操作;补偿进程:设定定时检查时间,定时检查,若发现有超过预定时间还未能同步到所述从库的增删改操作,则重新将未同步到从库的数据的增删改操作同步到从库中直至从库中数据更新完成,本发明可支持所有关系型数据库、主从表结构可以不一致、从库可以不是严格的只读库、可多线程处理、可双向同步且容错性高。

Description

实现实时关系型数据库数据同步的方法
技术领域
本发明属于数据存储技术领域,具体涉及一种实现实时关系型数据库数据同步的方法。
背景技术
读写分离是一种常见的解决关系型数据库性能的技术。如图1所示,需要读写的应用访问主库,只需要读数据的应用访问从库。主库、从库之间通过数据复制进行数据上的同步,保证主从库数据一致。此处数据同步是读写分离的关键技术。
目前,业界常用的方式是通过关系型数据库的日志机制,将主库的数据库日志发送到从库,在从库中回放执行实现。这个方法存在以下几个缺点:
1、日志同步需要数据库底层支持,对于商用数据库往往需要商用软件支持,需要增加成本。
2、通常要求主从库表结构一致。
3、通常要求从库严格只读。
4、通常单线程同步,同步性能受限。
发明内容
本发明是为了解决上述问题而进行的,目的在于提供一种可支持所有关系型数据库、主从表结构可以不一致、从库可以不是严格的只读库、可多线程处理、可双向同步且容错性高的实现实时关系型数据库数据同步的方法。
本发明提供了一种实现实时关系型数据库数据同步的方法,其特征在于,包括以下步骤:
同步过程:对主库数据进行增删改操作时,Java应用层抓取对主库进行增删改的操作,对主库执行所述增删改操作,并异步发送所述增删改的操作到消息队列,同步进程到从库中,所述从库执行所述增删改的操作;
补偿进程:设定定时检查时间,定时检查,若发现有超过预定时间还未能同步到所述从库的增删改操作,则重新将未同步到从库的数据的增删改操作同步到从库中直至从库中数据更新完成。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:抓取主库更新的数据时是Java应用程序通过ORM层插件抓取。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:所述消息队列为Kafka。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:当Java应用层抓取到对主库进行增删改的操作后,将抓取到的增删改操作的同步状态修改为“待同步”/“待删除”,所述从库执行所述增删改的操作并同步完成后返回同步结果,同步结果包括“已同步”/“同步失败”/“删除失败”,根据同步结果更新同步状态,
当Java应用层抓取到对主库进行增删改的操作后,同时将系统当前时间添加到抓取的增删改的操作中作为最后修改时间。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:当需要同步到多个从库时,将同步状态的字段改为变长字段,其中所述变长字段中每一位代表一个从库的更新状态。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:所述补偿进程发现有未能同步到所述从库的增删改操作是通过同步状态、最后修改时间和当前时间确定的。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:当对从库进行更新操作时,更新的数据的时间要晚于从库中对应数据的时间,否则,将该条更新数据抛弃;在更新从库数据时,若从库中不存在对应的记录,则将更新操作转换为插入操作对从库中增加该条记录。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:若Java应用层抓取对主库进行增删改的操作是删除操作,则对主库执行的删除操作改为更新操作,并更新同步状态为“待删除”,在同步进程将该删除操作在从库中执行完成后,再对主库进行删除操作,否则更新同步状态为“删除失败”。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:若对主库进行的增删改操作不是通过Java应用层抓取的对主库进行增删改的操作进行的,则在对主库进行的增删改操作中增加同步状态和执行增删改操作的时间。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:该方法还包括异常监控进程查询步骤,当从库中执行增删改操作产生错误时,更新同步状态为“同步失败”,异常监控进程查询主库,如果存在同步失败的数据则报警,排除异常后,由补偿进程对从库进行再次同步,使从库中完成数据同步。
本发明的优点如下:
1、通过Java应用层实现,与具体数据库类型无关,可支持所有关系型数据库。
2、主从表结构可以不一致,可以实现只同步部分字段。
3、从库可以不是严格的只读库,比如某些字段可以不同步在从库上。
4、同步进程、补偿进程均可以多线程处理。
5、可以增加更灵活的业务级别的额外处理,例如:数据过滤(同步过程中过滤某些行);数据映射(同步过程中进行某些数据映射转换);数据校验清洗;分表同步(将主库大表按某种规则进行从库的表拆分)等等。
6、可以实现双向同步。
7、容错性高:无论消息队列或同步进程产生故障,恢复后可通过补偿进程自动继续同步,保证最终数据一致。
附图说明
图1是现有技术中关系型数据库数据同步的方法。
图2是本发明中同步过程的流程图。
图3是本发明中补偿过程的流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明的实现实时关系型数据库数据同步的方法作具体阐述。
实现实时关系型数据库数据同步的方法包括以下步骤:
如图2所示,同步过程:对主库数据进行增删改操作时,Java应用层抓取对主库进行增删改的操作,即SQL(INSERT/UPDATE/DELETE),对主库执行该增删改操作,并异步发送该增删改的操作到消息队列,同步进程到从库中,所述从库执行该增删改的操作。
在本实施例中,抓取主库更新的数据时是Java应用程序通过ORM层插件抓取的。以JPA为例:增加事件监听PostInsertEventListener/PostUpdateEventListener/PostDeleteEventListen er,抓取对主库进行增删改的操作命令。消息队列为Kafka。
如图3所示,补偿进程:设定定时检查时间,定时检查,若发现有超过预定时间(例如1分钟)还未能同步到所述从库的增删改操作,则重新将未同步数据的增删改操作同步到从库中直至从库中更新完成。补偿进程用于防止同步过程中产生消息丢失、消息队列故障,导致部分数据无法同步到从库。通过补偿进程能够保证将这些数据最终都同步到从库。
在本实施例中,当Java应用层抓取到对主库进行增删改的操作后,将抓取到的增删改操作的同步状态修改为“待同步”/“待删除”,所述从库执行所述增删改的操作并同步完成后返回同步结果,同步结果包括“已同步”/“同步失败”/“删除失败”,根据同步结果更新同步状态,更新后的同步状态为“已同步”/“同步失败”/“删除失败”。
当Java应用层抓取到对主库进行增删改的操作后,同时将系统当前时间添加到抓取的增删改的操作中作为最后修改时间。添加系统时间到增删改的操作中的作用有两个:1、用于补偿过程判断长时间未能同步的数据。2、用于防止同步时顺序错乱。
当对从库进行更新操作时,本专利中,更新操作为SQL中的UPDATE,即增删改操作中的改。更新的数据的时间要晚于从库中对应数据的时间,否则,将该条更新数据抛弃;在更新从库数据时,若从库中不存在对应的记录,则将更新操作转换为插入操作对从库中增加该条记录。用于解决消息重复、顺序错乱的问题。
在本实施例中,补偿进程发现有未能同步到从库的增删改操作是通过同步状态、最后修改时间和当前时间确定的。同步状态为“待同步”/“待删除”且最后修改时间和当前时间大于预定的同步超时时间,则判断为未能同步到从库的增删改操作。
在本实施例中,当需要同步到多个从库时,将同步状态的字段改为变长字段,其中变长字段中每一位代表一个从库的更新状态。
在本实施例中,若Java应用层抓取对主库进行增删改的操作是删除操作,则对主库执行的删除操作改为更新操作,并更新同步状态为“待删除”,在同步进程将该删除操作在从库中执行完成后,再对主库进行删除操作,否则更新同步状态为“删除失败”。
在本实施例中,若对主库进行的增删改操作不是通过Java应用层抓取的对主库进行增删改的操作进行的,有些场合可能直接通过最初发出的增删改操作的命令执行的,则在对主库进行的增删改操作中增加同步状态和执行增删改操作的时间。
在本实施例中,实现实时关系型数据库数据同步的方法还包括异常监控进程查询步骤,当从库中执行增删改操作产生错误时,更新同步状态为“同步失败”,异常监控进程查询主库,如果存在同步失败的数据则报警,排除异常后,由补偿进程对从库进行再次同步,使从库中完成数据同步。具体的,在异常排除后将同步状态从“同步失败”更新为“待同步”,由补偿进程对从库进行再次同步。
上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。

Claims (10)

1.一种实现实时关系型数据库数据同步的方法,其特征在于,包括以下步骤:
同步过程:对主库数据进行增删改操作时,Java应用层抓取对主库进行增删改的操作,对主库执行所述增删改操作,并异步发送所述增删改的操作到消息队列,同步进程到从库中,所述从库执行所述增删改的操作;
补偿进程:设定定时检查时间,定时检查,若发现有超过预定时间还未能同步到所述从库的增删改操作,则重新将未同步到从库的数据的增删改操作同步到从库中直至从库中数据更新完成。
2.根据权利要求1所述的实现实时关系型数据库数据同步的方法,其特征在于:
抓取主库更新的数据时是Java应用程序通过ORM层插件抓取。
3.根据权利要求1所述的实现实时关系型数据库数据同步的方法,其特征在于:
所述消息队列为Kafka。
4.根据权利要求1所述的实现实时关系型数据库数据同步的方法,其特征在于:
当Java应用层抓取到对主库进行增删改的操作后,将抓取到的增删改操作的同步状态修改为“待同步”/“待删除”,所述从库执行所述增删改的操作并同步完成后返回同步结果,同步结果包括“已同步”/“同步失败”/“删除失败”,根据同步结果更新同步状态,
当Java应用层抓取到对主库进行增删改的操作后,同时将系统当前时间添加到抓取的增删改的操作中作为最后修改时间。
5.根据权利要求4所述的实现实时关系型数据库数据同步的方法,其特征在于:
当需要同步到多个从库时,将同步状态的字段改为变长字段,其中所述变长字段中每一位代表一个从库的更新状态。
6.根据权利要求4所述的实现实时关系型数据库数据同步的方法,其特征在于:
所述补偿进程发现有未能同步到所述从库的增删改操作是通过同步状态、最后修改时间和当前时间确定的。
7.根据权利要求4所述的实现实时关系型数据库数据同步的方法,其特征在于:
当对从库进行更新操作时,更新的数据的时间要晚于从库中对应数据的时间,否则,将该条更新数据抛弃;在更新从库数据时,若从库中不存在对应的记录,则将更新操作转换为插入操作对从库中增加该条记录。
8.根据权利要求1所述的实现实时关系型数据库数据同步的方法,其特征在于:
若Java应用层抓取对主库进行增删改的操作是删除操作,则对主库执行的删除操作改为更新操作,并更新同步状态为“待删除”,在同步进程将该删除操作在从库中执行完成后,再对主库进行删除操作,否则更新同步状态为“删除失败”。
9.根据权利要求1所述的实现实时关系型数据库数据同步的方法,其特征在于:
若对主库进行的增删改操作不是通过Java应用层抓取的对主库进行增删改的操作进行的,则在对主库进行的增删改操作中增加同步状态和执行增删改操作的时间。
10.根据权利要求1所述的实现实时关系型数据库数据同步的方法,其特征在于,还包括:
异常监控进程查询步骤,当从库中执行增删改操作产生错误时,更新同步状态为“同步失败”,异常监控进程查询主库,如果存在同步失败的数据则报警,排除异常后,由补偿进程对从库进行再次同步,使从库中完成数据同步。
CN202110805505.5A 2021-07-16 2021-07-16 实现实时关系型数据库数据同步的方法 Pending CN113407638A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110805505.5A CN113407638A (zh) 2021-07-16 2021-07-16 实现实时关系型数据库数据同步的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110805505.5A CN113407638A (zh) 2021-07-16 2021-07-16 实现实时关系型数据库数据同步的方法

Publications (1)

Publication Number Publication Date
CN113407638A true CN113407638A (zh) 2021-09-17

Family

ID=77686957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110805505.5A Pending CN113407638A (zh) 2021-07-16 2021-07-16 实现实时关系型数据库数据同步的方法

Country Status (1)

Country Link
CN (1) CN113407638A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599797A (zh) * 2022-11-29 2023-01-13 广东通莞科技股份有限公司(Cn) 基于操作日志的双向同步方法、装置和电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105989123A (zh) * 2015-02-13 2016-10-05 阿里巴巴集团控股有限公司 一种数据同步方法、装置和系统
CN111046036A (zh) * 2019-11-05 2020-04-21 深信服科技股份有限公司 数据同步方法、装置、系统及存储介质
CN111414403A (zh) * 2020-03-20 2020-07-14 腾讯科技(深圳)有限公司 数据访问方法和装置、数据存储方法和装置
WO2020147392A1 (zh) * 2019-01-16 2020-07-23 平安科技(深圳)有限公司 数据库之间的数据同步方法和系统
CN111797121A (zh) * 2020-07-02 2020-10-20 中国工商银行股份有限公司 读写分离架构业务系统的强一致性查询方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105989123A (zh) * 2015-02-13 2016-10-05 阿里巴巴集团控股有限公司 一种数据同步方法、装置和系统
WO2020147392A1 (zh) * 2019-01-16 2020-07-23 平安科技(深圳)有限公司 数据库之间的数据同步方法和系统
CN111046036A (zh) * 2019-11-05 2020-04-21 深信服科技股份有限公司 数据同步方法、装置、系统及存储介质
CN111414403A (zh) * 2020-03-20 2020-07-14 腾讯科技(深圳)有限公司 数据访问方法和装置、数据存储方法和装置
CN111797121A (zh) * 2020-07-02 2020-10-20 中国工商银行股份有限公司 读写分离架构业务系统的强一致性查询方法、装置及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599797A (zh) * 2022-11-29 2023-01-13 广东通莞科技股份有限公司(Cn) 基于操作日志的双向同步方法、装置和电子设备

Similar Documents

Publication Publication Date Title
US11914572B2 (en) Adaptive query routing in a replicated database environment
US11327958B2 (en) Table replication in a database environment
US20200356449A1 (en) Transaction commit protocol with recoverable commit identifier
EP3413215B1 (en) Dynamic snapshot isolation protocol selection
CN109992628B (zh) 数据同步的方法、装置、服务器及计算机可读存储介质
US7490113B2 (en) Database log capture that publishes transactions to multiple targets to handle unavailable targets by separating the publishing of subscriptions and subsequently recombining the publishing
US9542468B2 (en) Database management system and method for controlling synchronization between databases
EP2790112B1 (en) Method and system for data synchronization and data access apparatus
CN105868343B (zh) 数据库迁移方法及系统
JP2022511084A (ja) ブロックチェーン技術を用いてデータベースアプリケーションを増強するためのシステムおよび方法
CN106776121B (zh) 一种数据灾备装置、系统及方法
CN109933632B (zh) 一种数据库的数据迁移方法、装置及设备
WO2021184679A1 (zh) 持续数据保护系统及方法
CN107391634B (zh) 数据迁移方法及装置
WO2022134876A1 (zh) 数据同步方法、装置、电子设备、存储介质
CN113391885A (zh) 一种分布式事务处理系统
KR102038529B1 (ko) 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템
CN115794499B (zh) 一种用于分布式块存储集群间双活复制数据的方法和系统
CN115438122A (zh) 数据异构同步系统
CN113407638A (zh) 实现实时关系型数据库数据同步的方法
CN108038163B (zh) 主备控制中心数据库同步系统
US8918364B1 (en) Online mirror state transitioning in databases
JPH0561748A (ja) データベース・アクセスにおける同期確認の自動化方式
CN118093721A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN117076554A (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: 20210917

RJ01 Rejection of invention patent application after publication