CN117555966A - 数据库主从同步方法、装置、设备及可读存储介质 - Google Patents
数据库主从同步方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN117555966A CN117555966A CN202311694789.0A CN202311694789A CN117555966A CN 117555966 A CN117555966 A CN 117555966A CN 202311694789 A CN202311694789 A CN 202311694789A CN 117555966 A CN117555966 A CN 117555966A
- Authority
- CN
- China
- Prior art keywords
- database
- slave
- library
- master
- pseudo
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000002688 persistence Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
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
- 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/23—Updating
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库主从同步方法、装置、设备及可读存储介质,该方法包括:从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号;针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。通过本申请,极大降低了IO资源和网络带宽的消耗,保证了主库性能。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种数据库主从同步方法、装置、设备及可读存储介质。
背景技术
主从复制是一个异步的复制过程,至少一个从库(slave)从主库(master)进行事务日志的复制然后解析日志并应用到自身,最终实现主库和从库的数据同步。目前,一主多从的数据库系统的同步方法是多个从库直接连接到主库上进行事务日志的复制。对主库而言,每增加一个从库都会占用主库的IO资源和网络带宽,对主库性能造成影响。
发明内容
本申请提供一种数据库主从同步方法、装置、设备及可读存储介质,可以解决现有技术中存在的从库数量增加对主库性能造成影响的技术问题。
第一方面,本申请实施例提供一种数据库主从同步方法,所述数据库主从同步方法包括:
从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号;
针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。
进一步地,一实施例中,所述数据库主从同步方法还包括:
在作为主库的第一数据库宕机后,切断第一数据库的写流量,切断伪从库与第一数据库的连接;
从正常状态的从库中选取第二数据库;
在第二数据库对应的消费组的消息积压量为零后,切断第二数据库与伪主库的连接,将第二数据库切换为主库模式,将伪从库连接至第二数据库,切断第二数据库的读流量,将写流量连接至第二数据库。
进一步地,一实施例中,在所述切断伪从库与第一数据库的连接的步骤之后还包括:
在第一数据库恢复正常后,将第一数据库切换为从库模式,将第一数据库连接至伪主库;
当第一数据库对应的消费组的消息积压量小于预设阈值时,将读流量连接至第一数据库。
进一步地,一实施例中,所述从正常状态的从库中选取第二数据库的步骤包括:
将处于正常状态且对应消费组的消息积压量最小的从库作为第二数据库;或
监测正常状态的从库对应的消费组的消息积压量,将消息积压量最早变为零的消费组对应的从库作为第二数据库。
进一步地,一实施例中,所述数据库主从同步方法还包括:
在作为从库的第三数据库宕机后,切断第三数据库的读流量;
当第三数据库恢复正常且对应的消费组的消息积压量小于预设阈值时,将读流量连接至第三数据库。
进一步地,一实施例中,在所述针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库的步骤之前还包括:
针对每个从库,在从库连接至伪主库时,根据从库的服务器ID生成对应的消费组ID。
进一步地,一实施例中,主库和从库为MySQL或PostgreSQL中的一种,消息队列为Kafka、RabbitMQ或RocketMQ中的一种。
第二方面,本申请实施例还提供一种数据库主从同步装置,所述数据库主从同步装置包括:
写入更新模块,用于从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号;
消费返回模块,用于针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。
第三方面,本申请实施例还提供一种数据库主从同步设备,所述数据库主从同步设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的数据库主从同步程序,其中所述数据库主从同步程序被所述处理器执行时,实现上述数据库主从同步方法的步骤。
第四方面,本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有数据库主从同步程序,其中所述数据库主从同步程序被处理器执行时,实现上述数据库主从同步方法的步骤。
本申请中,伪从库接收到主库返回的事务数据后将其逐条写入消息队列以实现数据持久化,伪主库根据从库的消费组ID按顺序从消息队列中消费积压的消息并将其中的事务数据返回至从库。通过本申请,利用消息队列具备数据多副本的能力,确保数据从主库同步到各从库的实时性、稳定性和容错性,且无论有多少个从库,主库都只需要维护与伪从库的连接,从而极大降低了IO资源和网络带宽的消耗,保证了主库性能。
附图说明
图1为本申请一实施例中数据库主从同步方法的流程示意图;
图2为本申请一实施例中数据库主从同步系统的连接示意图;
图3为图2的数据库主从同步系统在主库故障处理后的连接示意图;
图4为本申请实施例方案中涉及的数据库主从同步设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
第一方面,本申请实施例提供一种数据库主从同步方法。
图1示出了本申请一实施例中数据库主从同步方法的流程示意图;图2示出了本申请一实施例中数据库主从同步系统的连接示意图。
参照图1和图2,一实施例中,数据库主从同步方法包括如下步骤:
S11、从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号。
本实施例中,伪从库连接至主库的方式与普通的从库一致,即启用从库模式并配置主库信息,例如主库的IP地址、用于数据同步的用户名及密码等。具体到图2所示的实施例中,伪从库配置的主库信息中IP地址为IP1,即真实主库的IP地址。伪从库在每次启动(包括正常启动、故障重启等)后,需要向主库发送一次请求,请求中包含伪从库的最新已执行事务编号,主库在接收到请求后,持续从事务日志中获取该事务编号之后的事务数据,并按照事务日志中的排列顺序从前到后向伪从库返回事务数据。其中,事务编号包含于事务数据中,且与事务数据具有一一对应关系。主库向伪从库返回事务数据时可逐条返回或若干条一并返回。
与普通的从库不同的是,伪从库接收到的事务数据不进行本地持久化,而是通过写入消息队列以实现数据持久化,利用消息队列的数据多副本,达到高可用目的。按照事务数据的返回顺序从早到晚逐条将事务数据写入消息队列,以使消息队列中各消息的排列顺序与主库的事务日志中对应事务数据的排列顺序一致。通过在消息写入后更新伪从库的最新已执行事务编号,使得该事务编号能够反馈伪从库中最新记录的事务数据,进而在每次发送请求时供主库确定返回事务数据的起始点。
可以理解,在首次配置主库时消息队列中还未写入任何消息,伪从库的最新已执行事务编号的初始值配置为当时主库的最新已执行事务编号,此后该事务编号会随消息写入自动更新。
S12、针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。
本实施例中,从库连接至伪主库的方式与连接至普通的主库一致,即启用从库模式并配置主库信息,对于从库来说,伪主库即为主库,因此主库信息中的IP地址为伪主库的IP地址,用户名及密码与伪从库连接至主库时配置的信息一致。具体到图2所示的实施例中,各从库配置的主库信息中的IP地址为IP2,即伪主库的IP地址。从库在每次启动后,也会向伪主库发送一次请求,请求中包含从库的最新已执行事务编号。
与普通的主库不同的是,伪主库不是从本地盘的事务日志中获取待返回的事务数据,而是通过从消息队列中消费积压的消息,以从消息中获取对应的事务数据。每个从库具有各自的消费组ID,每个消费组具有各自的偏移量(offset),偏移量用于记录消费组的消费进度。因此,根据从库的消费组ID即可确定下一条要返回的事务数据在哪条消息中,按照消息队列中的排列顺序从前到后消费积压的消息,并将其中的事务数据返回至从库。从库接收到的事务数据后正常以事务日志的形式进行数据持久化。伪主库向从库返回事务数据时可逐条返回或若干条一并返回。
另外,对于从库来说,向伪主库发送的请求中虽然包含了当时的最新已执行事务编号,但是实际上伪主库返回事务数据时并没有用到该事务编号,用到的是从库的消费组ID。从库向伪主库发送的最新已执行事务编号在本方案中为冗余信息,可用于校验消费组的偏移量是否准确。
由此,本实施例中,伪从库接收到主库返回的事务数据后将其逐条写入消息队列以实现数据持久化,伪主库根据从库的消费组ID按顺序从消息队列中消费积压的消息并将其中的事务数据返回至从库。通过本实施例,利用消息队列具备数据多副本的能力,确保数据从主库同步到各从库的实时性、稳定性和容错性,且无论有多少个从库,主库都只需要维护与伪从库的连接,从而极大降低了IO资源和网络带宽的消耗,保证了主库性能。
可选地,主库和从库为MySQL或PostgreSQL中的一种,消息队列为Kafka、RabbitMQ或RocketMQ中的一种。需要说明的是,主库和从库需要为同一型号的数据库,即,主库和从库均为MySQL,或者,主库和从库均为PostgreSQL。
具体地,主库和从库为MySQL时,事务日志为binlog,事务编号为GTID(GlobalTransaction ID,全局事务ID),查询最新已执行事务编号的指令为“show masterstatus”。主库和从库为PostgreSQL时,事务日志为xlog,事务编号为LSN(Log SequenceNumber,日志序列号),查询最新已执行事务编号的指令为“SELECT pg_current_wal_lsn()”。
可选地,将事务数据写入消息队列时,可将事务编号作为事务数据的键或标签以便于查询。
具体地,消息队列为Kafka时,将事务编号作为key,消息队列为RabbitMQ时,将事务编号作为routekey,消息队列为RocketMQ时,将事务编号作为tag。
进一步地,一实施例中,在所述针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库的步骤之前还包括:
针对每个从库,在从库连接至伪主库时,根据从库的服务器ID生成对应的消费组ID。
本实施例中,通过各从库各自不同的服务器ID,便于生成各自不同的消费组ID。当然,在其他实施例中,也可通过其他方式生成消费组ID,例如随机生成、根据连接时间生成等,确保不同从库的消费组ID不同且可以根据从库的唯一标识信息(例如服务器ID)查询到即可。
图3示出了图2的数据库主从同步系统在主库故障处理后的连接示意图。
参照图2和图3,进一步地,一实施例中,所述数据库主从同步方法还包括:
在作为主库的第一数据库宕机后,切断第一数据库的写流量,切断伪从库与第一数据库的连接;
从正常状态的从库中选取第二数据库;
在第二数据库对应的消费组的消息积压量为零后,切断第二数据库与伪主库的连接,将第二数据库切换为主库模式,将伪从库连接至第二数据库,切断第二数据库的读流量,将写流量连接至第二数据库。
本实施例中,主从数据库采用读写分离方案,主库用于接收写流量,各从库用于接收读流量。主库和从库的事务日志完全一致,在主库宕机后,正常状态的从库可作为新的主库运行,以确保读写服务正常运作。
需要说明的是,第二数据库替代第一数据库作为新的主库运行的前提条件是,第一数据库中的事务数据均写入到消息队列中,消息队列中的数据均写入到第二数据库中。前者可通过配置增强半同步来保证,后者则是根据消费组的消息积压量是否为零来判断。
具体到图2和图3所示的实施例中,第一数据库的IP地址为IP1,第二数据库的IP地址为IP3,将伪从库连接至第二数据库的具体操作包括将伪从库配置的主库信息中的IP地址由IP1修改为IP3。
进一步地,一实施例中,在所述切断伪从库与第一数据库的连接的步骤之后还包括:
在第一数据库恢复正常后,将第一数据库切换为从库模式,将第一数据库连接至伪主库;
当第一数据库对应的消费组的消息积压量小于预设阈值时,将读流量连接至第一数据库。
本实施例中,第一数据库恢复正常后作为新的从库继续运行,进一步确保读服务正常运作。在第一数据库宕机期间,第一数据库的事务日志相比消息队列缺失了宕机期间新增的事务数据,因此,对应的消费组会存在一定的积压消息。若消息积压量过大,会造成不同从库提供的读服务的差异过大,故需等待消息积压量小于预设阈值时,才可恢复读服务。
具体到图2和图3所示的实施例中,将第一数据库连接至伪主库的具体操作包括将第一数据库配置的主库信息中的IP地址设置为IP2。此外,若消息队列中此前未针对第一数据库创建过消费组,则还需要创建新的消费组并确定消费组ID,并根据第一数据库的最新已执行事务编号确定消费组的偏移量。
作为一种可选的实施方式,所述从正常状态的从库中选取第二数据库的步骤包括:将处于正常状态且对应消费组的消息积压量最小的从库作为第二数据库。如此,可快速选取第二数据库,由于第二数据库对应的消费组的消息积压量最小,第二数据库最有可能率先消费完消息队列中的所有消息,进而快速开始执行后续的主库切换操作。
作为另一种可选的实施方式,所述从正常状态的从库中选取第二数据库的步骤包括:监测正常状态的从库对应的消费组的消息积压量,将消息积压量最早变为零的消费组对应的从库作为第二数据库。如此,可确保选择率先完成消费的数据库作为第二数据库。
可以理解,前一种方案只需要在选取之前获取一次所有正常从库的消息积压量,在完成选取之后仅需监测第二数据库的消息积压量,而后一种方案在完成选取之前需要持续监测所有正常从库的消息积压量。后一种方案监测所需的开销更多,但能够确保主库切换操作尽快执行。
进一步地,一实施例中,所述数据库主从同步方法还包括:
在作为从库的第三数据库宕机后,切断第三数据库的读流量;
当第三数据库恢复正常且对应的消费组的消息积压量小于预设阈值时,将读流量连接至第三数据库。
本实施例中,在第三数据库宕机后切断第三数据库的读流量,以确保读服务正常运作。同理第一数据库的恢复操作,第三数据库也需等待消息积压量小于预设阈值时,才可恢复读服务,以避免不同从库提供的读服务的差异过大。
第二方面,本申请实施例还提供一种数据库主从同步装置。
一实施例中,数据库主从同步装置包括:
写入更新模块,用于从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号;
消费返回模块,用于针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。
进一步地,一实施例中,数据库主从同步装置还包括故障处理模块,用于:
在作为主库的第一数据库宕机后,切断第一数据库的写流量,切断伪从库与第一数据库的连接;
从正常状态的从库中选取第二数据库;
在第二数据库对应的消费组的消息积压量为零后,切断第二数据库与伪主库的连接,将第二数据库切换为主库模式,将伪从库连接至第二数据库,切断第二数据库的读流量,将写流量连接至第二数据库。
进一步地,一实施例中,故障处理模块还用于:
在第一数据库恢复正常后,将第一数据库切换为从库模式,将第一数据库连接至伪主库;
当第一数据库对应的消费组的消息积压量小于预设阈值时,将读流量连接至第一数据库。
进一步地,一实施例中,故障处理模块用于:
将处于正常状态且对应消费组的消息积压量最小的从库作为第二数据库;或
监测正常状态的从库对应的消费组的消息积压量,将消息积压量最早变为零的消费组对应的从库作为第二数据库。
进一步地,一实施例中,数据库主从同步装置还包括故障处理模块,用于:
在作为从库的第三数据库宕机后,切断第三数据库的读流量;
当第三数据库恢复正常且对应的消费组的消息积压量小于预设阈值时,将读流量连接至第三数据库。
进一步地,一实施例中,数据库主从同步装置还包括消费组创建模块,用于:
针对每个从库,在从库连接至伪主库时,根据从库的服务器ID生成对应的消费组ID。
进一步地,一实施例中,主库和从库为MySQL或PostgreSQL中的一种,消息队列为Kafka、RabbitMQ或RocketMQ中的一种。
其中,上述数据库主从同步装置中各个模块的功能实现与上述数据库主从同步方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
第三方面,本申请实施例提供一种数据库主从同步设备,数据库主从同步设备可以是个人计算机(personal computer,PC)、笔记本电脑、服务器等具有数据处理功能的设备。
图4示出了本申请实施例方案中涉及的数据库主从同步设备的硬件结构示意图。
参照图4,本申请实施例中,数据库主从同步设备可以包括处理器、存储器、通信接口以及通信总线。
其中,通信总线可以是任何类型的,用于实现处理器、存储器以及通信接口互连。
通信接口包括输入/输出(input/output,I/O)接口、物理接口和逻辑接口等用于实现数据库主从同步设备内部的器件互连的接口,以及用于实现数据库主从同步设备与其他设备(例如其他计算设备或用户设备)互连的接口。物理接口可以是以太网接口、光纤接口、ATM接口等;用户设备可以是显示屏(Display)、键盘(Keyboard)等。
存储器可以是各种类型的存储介质,例如随机存取存储器(random accessmemory,RAM)、只读存储器(read-only memory,ROM)、非易失性RAM(non-volatile RAM,NVRAM)、闪存、光存储器、硬盘、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、电可擦除PROM(electrically erasable PROM,EEPROM)等。
处理器可以是通用处理器,通用处理器可以调用存储器中存储的数据库主从同步程序,并执行本申请实施例提供的数据库主从同步方法。例如,通用处理器可以是中央处理器(central processing unit,CPU)。其中,数据库主从同步程序被调用时所执行的方法可参照本申请数据库主从同步方法的各个实施例,此处不再赘述。
本领域技术人员可以理解,图4中示出的硬件结构并不构成对本申请的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
第四方面,本申请实施例还提供一种可读存储介质。
本申请可读存储介质上存储有数据库主从同步程序,其中所述数据库主从同步程序被处理器执行时,实现如上述的数据库主从同步方法的步骤。
其中,数据库主从同步程序被执行时所实现的方法可参照本申请数据库主从同步方法的各个实施例,此处不再赘述。
需要说明的是,上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。术语“第一”、“第二”和“第三”等描述,是用于区分不同的对象等,其不代表先后顺序,也不限定“第一”、“第二”和“第三”是不同的类型。
在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
在本申请实施例描述的一些流程中,包含了按照特定顺序出现的多个操作或步骤,但是应该理解,这些操作或步骤可以不按照其在本申请实施例中出现的顺序来执行或并行执行,操作的序号仅用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作或步骤可以按顺序执行或并行执行,并且这些操作或步骤可以进行组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种数据库主从同步方法,其特征在于,所述数据库主从同步方法包括:
从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号;
针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。
2.如权利要求1所述的数据库主从同步方法,其特征在于,所述数据库主从同步方法还包括:
在作为主库的第一数据库宕机后,切断第一数据库的写流量,切断伪从库与第一数据库的连接;
从正常状态的从库中选取第二数据库;
在第二数据库对应的消费组的消息积压量为零后,切断第二数据库与伪主库的连接,将第二数据库切换为主库模式,将伪从库连接至第二数据库,切断第二数据库的读流量,将写流量连接至第二数据库。
3.如权利要求2所述的数据库主从同步方法,其特征在于,在所述切断伪从库与第一数据库的连接的步骤之后还包括:
在第一数据库恢复正常后,将第一数据库切换为从库模式,将第一数据库连接至伪主库;
当第一数据库对应的消费组的消息积压量小于预设阈值时,将读流量连接至第一数据库。
4.如权利要求2所述的数据库主从同步方法,其特征在于,所述从正常状态的从库中选取第二数据库的步骤包括:
将处于正常状态且对应消费组的消息积压量最小的从库作为第二数据库;或
监测正常状态的从库对应的消费组的消息积压量,将消息积压量最早变为零的消费组对应的从库作为第二数据库。
5.如权利要求1所述的数据库主从同步方法,其特征在于,所述数据库主从同步方法还包括:
在作为从库的第三数据库宕机后,切断第三数据库的读流量;
当第三数据库恢复正常且对应的消费组的消息积压量小于预设阈值时,将读流量连接至第三数据库。
6.如权利要求1至5中任一项所述的数据库主从同步方法,其特征在于,在所述针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库的步骤之前还包括:
针对每个从库,在从库连接至伪主库时,根据从库的服务器ID生成对应的消费组ID。
7.如权利要求1至5中任一项所述的数据库主从同步方法,其特征在于,主库和从库为MySQL或PostgreSQL中的一种,消息队列为Kafka、RabbitMQ或RocketMQ中的一种。
8.一种数据库主从同步装置,其特征在于,所述数据库主从同步装置包括:
写入更新模块,用于从主库返回至伪从库的多条事务数据中,按照返回顺序从早到晚逐条将事务数据写入消息队列,每写入一条消息后,将伪从库的最新已执行事务编号更新为该消息中事务数据的事务编号,其中,伪从库连接至主库,伪从库的最新已执行事务编号用于向主库请求返回事务数据,其初始值为首次配置主库时获取的主库的最新已执行事务编号;
消费返回模块,用于针对每个连接至伪主库的从库,根据从库的消费组ID从消息队列中消费积压的消息,并通过伪主库将消息中的事务数据返回至从库,其中,不同从库的消费组ID不同。
9.一种数据库主从同步设备,其特征在于,所述数据库主从同步设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的数据库主从同步程序,其中所述数据库主从同步程序被所述处理器执行时,实现如权利要求1至7中任一项所述的数据库主从同步方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有数据库主从同步程序,其中所述数据库主从同步程序被处理器执行时,实现如权利要求1至7中任一项所述的数据库主从同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311694789.0A CN117555966A (zh) | 2023-12-08 | 2023-12-08 | 数据库主从同步方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311694789.0A CN117555966A (zh) | 2023-12-08 | 2023-12-08 | 数据库主从同步方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117555966A true CN117555966A (zh) | 2024-02-13 |
Family
ID=89823213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311694789.0A Pending CN117555966A (zh) | 2023-12-08 | 2023-12-08 | 数据库主从同步方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117555966A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117874145A (zh) * | 2024-03-13 | 2024-04-12 | 连连(杭州)信息技术有限公司 | 一种主从数据库的强一致方法、装置、设备及存储介质 |
-
2023
- 2023-12-08 CN CN202311694789.0A patent/CN117555966A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117874145A (zh) * | 2024-03-13 | 2024-04-12 | 连连(杭州)信息技术有限公司 | 一种主从数据库的强一致方法、装置、设备及存储介质 |
CN117874145B (zh) * | 2024-03-13 | 2024-05-28 | 连连(杭州)信息技术有限公司 | 一种主从数据库的强一致方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11397648B2 (en) | Virtual machine recovery method and virtual machine management device | |
US10331625B2 (en) | Managing sequential data store | |
US7698602B2 (en) | Systems, methods and computer products for trace capability per work unit | |
US9189303B2 (en) | Shadow queues for recovery of messages | |
US9311170B2 (en) | System, method and program tool to reset an application | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
CN117555966A (zh) | 数据库主从同步方法、装置、设备及可读存储介质 | |
CN113111129A (zh) | 数据同步方法、装置、设备及存储介质 | |
US10229010B2 (en) | Methods for preserving state across a failure and devices thereof | |
CN109117086B (zh) | 存储设备数据位置的处理方法、装置、设备及存储介质 | |
CN111694612A (zh) | 配置检查方法、装置、计算机系统及存储介质 | |
CN106708865B (zh) | 流处理系统中访问窗口数据的方法和装置 | |
CN117492661A (zh) | 数据写入方法、介质、装置和计算设备 | |
CN104115127A (zh) | 存储系统和数据管理方法 | |
CN115004662A (zh) | 数据同步方法、装置、数据存储系统及计算机可读介质 | |
CN115964192A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN115510036A (zh) | 数据迁移方法、装置、设备以及存储介质 | |
CN111638980A (zh) | 基于内存映射的消息处理方法、装置、系统和存储介质 | |
CN113806309A (zh) | 基于分布式锁的元数据删除方法、系统、终端及存储介质 | |
CN114722261A (zh) | 一种资源的处理方法、装置、电子设备及存储介质 | |
CN112286909A (zh) | 执行状态确定方法、装置、服务器及存储介质 | |
CN110362556A (zh) | 数据库的操作方法、系统、设备和介质 | |
CN111399753A (zh) | 写入图片的方法和装置 | |
CN110046192B (zh) | 请求信息的序号生成系统和方法 | |
CN116701544B (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 |