CN111382024B - 一种数据库主备复制延迟监控方法、装置和系统 - Google Patents

一种数据库主备复制延迟监控方法、装置和系统 Download PDF

Info

Publication number
CN111382024B
CN111382024B CN201811619133.1A CN201811619133A CN111382024B CN 111382024 B CN111382024 B CN 111382024B CN 201811619133 A CN201811619133 A CN 201811619133A CN 111382024 B CN111382024 B CN 111382024B
Authority
CN
China
Prior art keywords
latest
log file
log
timestamp
delay
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.)
Active
Application number
CN201811619133.1A
Other languages
English (en)
Other versions
CN111382024A (zh
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.)
Jinzhuan Xinke Co Ltd
Original Assignee
Jinzhuan Xinke 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 Jinzhuan Xinke Co Ltd filed Critical Jinzhuan Xinke Co Ltd
Priority to CN201811619133.1A priority Critical patent/CN111382024B/zh
Priority to PCT/CN2019/113464 priority patent/WO2020134480A1/zh
Publication of CN111382024A publication Critical patent/CN111382024A/zh
Application granted granted Critical
Publication of CN111382024B publication Critical patent/CN111382024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据库主备复制延迟监控方法、装置和系统,所述方法包括:将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机。本发明实施例将提交事务时产生的第一预定日志写入第一日志文件中,并更新第一日志文件的最新位置和最新时间戳,将第一日志文件的最新位置和最新时间戳连同第一预定日志发送给备机,使得备机在同步时实时获得准确的同步延迟和回放延迟。

Description

一种数据库主备复制延迟监控方法、装置和系统
技术领域
本发明实施例涉及但不限于数据库领域,尤指一种数据库主备复制延迟监控方法、装置和系统。
背景技术
数据库在主备复制环境下由主机和备机组成,备机需要同步主机日志、回放主机日志。同步主机日志是指备机的接收线程从网络上接收主机日志并持久化到本地文件中,回放主机日志是指回放线程读取同步日志的内容并在备机上执行日志中记录的操作内容。
由于网络带宽、主备节点距离等原因,备机同步、回放日志会产生延迟。准确地统计同步延迟、回放延迟在实际应用中尤为重要。同步延迟决定了主机发生灾难后丢失数据量的多少,同步延迟越大,主机发生灾难后丢失的数据就越多。实际系统中需要实时监控同步延迟,如果发现同步延迟超过阈值后就要主动告警,执行相应措施来减少同步延迟。回放延迟关系到备机作为读设备时数据的可见性,如果回放延迟过大,用户在备机上会读取不到已经提交的事务。另外,回放延迟还关系到主机发生灾难后故障切换花费的时间。如果回放延迟过大,故障切换的时间就会很长,导致系统长时间不能对外服务。同样地,实际系统中需要实时监控回放延迟,如果发现回放延迟超过阈值后就要主动告警,执行相应措施减少同步延迟。
业界常见的开源数据库包括MySQL、Percona、Mariadb、PostgreSQL等。这些开源数据库只统计了回放日志的时间延迟,而且该延迟是相对于备机的同步日志而不是主机的最新日志。因此,无法准确获取备机相对于主机的同步延迟、回放延迟。实际生产系统中必须做到精确地统计这些指标,保证系统运行和故障切换的相关要求。
发明内容
本发明实施例提供了一种数据库主备复制延迟监控方法、装置和系统,能够准确获得备机的同步延迟、回放延迟,从而保证系统运行和故障切换的相关要求。
本发明实施例提供了一种数据库主备复制延迟监控方法,包括:
将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;
将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机。
本发明实施例提供了一种数据库主备复制延迟监控方法,包括:
接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;
读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;
根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
本发明实施例提供了一种数据库主备复制延迟监控装置,包括:
第一更新模块,用于将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;
通信模块,用于将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机。
本发明实施例提供了一种数据库主备复制延迟监控装置,包括:
第二更新模块,用于接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;
第三更新模块,用于读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;
计算模块,用于根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
本发明实施例提供了一种数据库主备复制延迟监控装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任一种数据库主备复制延迟监控方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种数据库主备复制延迟监控方法的步骤。
本发明实施例提供了一种数据库主备复制延迟监控系统,包括:
主机,用于将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机;
备机,用于接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
本发明一个实施例包括:将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机。本发明实施例将提交事务时产生的第一预定日志写入第一日志文件中,并更新第一日志文件的最新位置和最新时间戳,将第一日志文件的最新位置和最新时间戳连同第一预定日志发送给备机,使得备机在同步时实时获得准确的同步延迟和回放延迟。
在本发明另一个实施例中,在内存中更新所述第一日志文件的最新位置和最新时间戳。本发明实施例在内存中更新所述第一日志文件的最新位置和最新时间戳,不会影响数据库的性能。
在本发明另一个实施例中,当判断出需要切换第一日志文件时,继续执行接收日志已同步响应的步骤之前,该方法还包括:将所述第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,切换所述第一日志文件。本发明实施例在切换第一日志文件时将所述第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,即将第一日志文件的最新位置和最新时间戳落盘,使得第一日志文件的最新位置和最新时间戳得到永久性保存,从而第一日志文件的最新位置和最新时间戳不会因为数据库的异常而丢失。
本发明另一个实施例包括:接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中;读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。本发明实施例基于第一日志文件的最新位置和最新时间戳计算同步延迟和回放延迟,准确的获得了备机的同步延迟、回放延迟,从而保证了系统运行和故障切换的相关要求。
在本发明另一个实施例中,更新第一日志文件的最新位置和最新时间戳包括:在内存中更新第一日志文件的最新位置和最新时间戳;更新同步日志文件的最新位置和最新时间戳包括:在内存中更新同步日志文件的最新位置和最新时间戳。本发明实施例在内存中更新第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳,不会影响数据库的性能。
在本发明另一个实施例中,备机通过第五线程回放同步日志文件的过程中,将第五线程提交事务时产生的第二预定日志写入第二日志文件中,判断是否需要切换第二日志文件,当判断出需要切换第二日志文件时,将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info,切换第二日志文件,继续读取同步日志文件的步骤;当判断出不需要切换第二日志文件时,继续读取同步日志文件的步骤。本发明实施例在切换第二日志文件时将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info中,即将已回放日志的最新位置和最新时间戳落盘,使得已回放日志的最新位置和最新时间戳得到永久性保存,从而已回放日志的最新位置和最新时间戳不会因为数据库的异常而丢失。
在本发明另一个实施例中,将第一预定日志写入同步日志文件中后,该方法还包括:判断是否需要切换同步日志文件,当判断出需要切换同步日志文件时,将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info,切换同步日志文件,继续执行通过第四线程唤醒第五线程的步骤;当判断出不需要切换同步日志文件时,继续执行通过第四线程唤醒第五线程的步骤。本发明实施例在切换同步日志文件时将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info中,即将同步日志文件的最新位置和最新时间戳落盘,使得同步日志文件的最新位置和最新时间戳得到永久性保存,从而同步日志文件的最新位置和最新时间戳不会因为数据库的异常而丢失。
本发明实施例的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明实施例的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明实施例技术方案的进一步理解,并且构成说明书的一部分,与本发明实施例的实施例一起用于解释本发明实施例的技术方案,并不构成对本发明实施例技术方案的限制。
图1为本发明一个实施例提出的数据库主备复制延迟监控方法的流程图;
图2为本发明另一个实施例提出的数据库主备复制延迟监控方法的流程图;
图3为本发明实施例示例1的MySQL数据库主备复制延迟监控方法的流程图;
图4为本发明实施例示例2的Mariadb数据库主备复制延迟监控方法的流程图;
图5为本发明实施例示例4的PostgreSQL数据库主备复制延迟监控方法的流程图;
图6为本发明另一个实施例提出的数据库主备复制延迟监控装置的结构组成示意图;
图7为本发明另一个实施例提出的数据库主备复制延迟监控装置的结构组成示意图;
图8为本发明另一个实施例提出的数据库主备复制延迟监控系统的结构组成示意图。
具体实施方式
下文中将结合附图对本发明实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
参见图1,本发明一个实施例提出了一种数据库主备复制延迟监控方法,包括:
步骤100、主机将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳。
在本发明实施例中,主机可以通过第一线程将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;其中,第一线程包括应用线程。
在本发明实施例中,主机接收客户端请求,开启事务,执行事务,执行事务完成后提交事务,在提交事务时产生第一预定日志。
其中,主机可以通过第一线程接收客户端请求,开启事务,执行事务,执行事务完成后提交事务,在提交事务时产生第一预定日志。
在本发明实施例中,第一预定日志记录了事务具体的操作内容。例如,删除了哪张表的哪条记录、更新了哪张表的哪条记录的哪个字段、向哪张表中插入哪条记录等等。
在本发明实施例中,第一预定日志包括以下任意一个:第一二进制日志(binlog,binary log)、第一日志先行(WAL,Write Ahead Log)日志。
在本发明实施例中,更新第一日志文件的最新位置和最新时间戳包括:
将第一日志文件的最新位置更新为上一次更新的第一日志文件的最新位置和第一预定日志的长度之和;将第一日志文件的最新时间戳更新为将第一预定日志写入第一日志文件完成时的当前系统时间。
在本发明实施例中,在内存中更新所述第一日志文件的最新位置和最新时间戳。具体的,将内存中的第一日志文件的最新位置更新为上一次更新的第一日志文件的最新位置和第一预定日志的长度之和;将内存中的第一日志文件的最新时间戳更新为将第一预定日志写入第一日志文件完成时的当前系统时间。本发明实施例在内存中更新所述第一日志文件的最新位置和最新时间戳,不会影响数据库的性能。
其中,第一次更新第一日志文件的最新位置时,上一次更新的第一日志文件的最新位置为0。
步骤101、主机将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机。
在本发明实施例中,主机可以通过第二线程将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机;其中,第二线程包括以下任意一个:复制线程、dump线程、wal_send线程。
其中,第二线程可以由第一线程唤醒。
本发明实施例中,步骤100和步骤101由不同的线程来实现,提高了实现效率。
在本发明实施例中,在将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机时,可以将第一日志文件的最新位置和最新时间戳包括在第一预定日志的网络包头部中发送给备机;当然,也可以采用其他的形式将第一日志文件的最新位置和最新时间戳发送给备机,本发明实施对具体的发送形式不作限定,具体的发送形式也不用于限定本发明实施例的保护范围。
本发明实施例将提交事务时产生的第一预定日志写入第一日志文件中,并更新第一日志文件的最新位置和最新时间戳,将第一日志文件的最新位置和最新时间戳连同第一预定日志发送给备机,使得备机在同步时实时获得准确的同步延迟和回放延迟。
在本发明另一个实施例中,该方法还包括:
步骤102、主机接收日志已同步响应。
在本发明实施例中,主机可以通过第三线程或第二线程接收日志已同步响应;其中,第三线程包括以下任意一个:响应接收(ACK,Acknowledge)线程、wal_send线程。
在本发明实施例中,主机通过第三线程或第二线程接收日志已同步响应后,通知第一线程。
在本发明实施例中,第一线程接收日志已同步响应时,主机事务提交结束,通过第一线程向客户端返回响应。
在本发明另一个实施例中,接收日志已同步响应之前,该方法还包括:
判断是否需要切换第一日志文件;
当判断出不需要切换第一日志文件时,继续执行接收日志已同步响应的步骤。
在本发明另一个实施例中,当判断出需要切换第一日志文件时,继续执行接收日志已同步响应的步骤之前,该方法还包括:
将所述第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,切换所述第一日志文件。
其中,判断是否需要切换第一日志文件包括:
判断第一日志文件的长度是否大于或等于第一预设阈值;
当判断出第一日志文件的长度大于或等于第一预设阈值时,确定需要切换第一日志文件;当判断出第一日志文件的长度小于第一预设阈值时,确定不需要切换第一日志文件。
本发明实施例在切换第一日志文件时将所述第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,即将第一日志文件的最新位置和最新时间戳落盘,使得第一日志文件的最新位置和最新时间戳得到永久性保存,从而第一日志文件的最新位置和最新时间戳不会因为数据库的异常而丢失。
在本发明实施例中,主机可以在初始化数据库时创建第一系统表master_log_info。
参见图2,本发明一个实施例提出了一种数据库主备复制延迟监控方法,包括:
步骤200、备机接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件relaylog中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳。
在本发明实施例中,备机可以通过第四线程接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件relaylog中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;其中,第四线程包括以下任意一个:接收线程、输入输出(IO,Input Output)线程。
在本发明实施例中,第一预定日志包括以下任意一个:第一二进制日志(binlog,binary log)、第一日志先行(WAL,Write Ahead Log)日志。
在本发明实施例中,更新第一日志文件的最新位置和最新时间戳包括:
在内存中更新第一日志文件的最新位置和最新时间戳;
更新同步日志文件的最新位置和最新时间戳包括:
在内存中更新同步日志文件的最新位置和最新时间戳。
其中,在内存中更新第一日志文件的最新位置和最新时间戳包括:
将内存中的第一日志文件的最新位置更新为接收的第一日志文件的最新位置,将内存中的第一日志文件的最新时间戳更新为接收的第一日志文件的最新时间戳。
本发明实施例在内存中更新第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳,不会影响数据库的性能。
在本发明实施例中,第一日志文件的最新位置和最新时间戳包括在第一预定日志的网络包头部中,接收第一预定日志,从第一预定日志的网络包头部中获取第一日志文件的最新位置和最新时间戳。
在本发明实施例中,更新同步日志文件的最新位置和最新时间戳包括:
将同步日志文件的最新位置更新为上一次更新的同步日志文件的最新位置和接收的第一预定日志的长度之和,将同步日志文件的最新时间戳更新为第一预定日志中记录的第一预定日志的生成时间。
其中,第一次更新同步日志文件的最新位置时,上一次更新的同步日志文件的最新位置为0。
步骤201、备机读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳。
在本发明实施例中,备机可以通过第五线程读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;其中,备机可以通过第四线程唤醒第五线程,第五线程包括以下任意一个:回放线程、工作线程(worker线程)。
在本发明实施例中,更新已回放日志的最新位置和最新时间戳包括:
将已回放日志的最新位置更新为上一次更新的已回放日志的最新位置和本次执行的事务的长度之和,将已回放日志的最新时间戳更新为本次执行的事务对应的日志中记录的该事务对应的日志的生成时间。
在本发明实施例中,备机回放同步日志文件的过程中,将第五线程提交事务时产生的第二预定日志写入第二日志文件中,判断是否需要切换第二日志文件,当判断出需要切换第二日志文件时,将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info,切换第二日志文件,继续读取同步日志文件的步骤;当判断出不需要切换第二日志文件时,继续读取同步日志文件的步骤。
其中,判断是否需要切换第二日志文件包括:
判断第二日志文件的长度是否大于或等于第三预设阈值;
当判断出第二日志文件的长度大于或等于第三预设阈值时,确定需要切换第二日志文件;当判断出第二日志文件的长度小于第三预设阈值时,确定不需要切换第二日志文件。
本发明实施例在切换第二日志文件时将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info中,即将已回放日志的最新位置和最新时间戳落盘,使得已回放日志的最新位置和最新时间戳得到永久性保存,从而已回放日志的最新位置和最新时间戳不会因为数据库的异常而丢失。
步骤202、备机根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
在本发明实施例中,备机接收备机复制延迟查询指令时,继续执行所述根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟的步骤。
在本发明实施例中,同步延迟包括同步位置延迟和同步时间延迟,根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟包括:
将第一日志文件的最新位置和同步日志文件的最新位置之差作为所述同步位置延迟,将同步日志文件的最新时间戳和第一日志文件的最新时间戳之差作为所述同步时间延迟。
在本发明实施例中,回放延迟包括回放位置延迟和回放时间延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟包括:
将第一日志文件的最新位置和已回放日志的最新位置之差作为所述回放位置延迟,将已回放日志的最新时间戳和第一日志文件的最新时间戳之差作为所述回放时间延迟。
本发明实施例基于第一日志文件的最新位置和最新时间戳计算同步延迟和回放延迟,准确的获得了备机的同步延迟、回放延迟,从而保证了系统运行和故障切换的相关要求。
在本发明另一个实施例中,将第一预定日志写入同步日志文件中后,该方法还包括:向主机返回日志已同步响应。
在本发明另一个实施例中,将第一预定日志写入同步日志文件中后,该方法还包括:
判断是否需要切换同步日志文件,当判断出需要切换同步日志文件时,将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info,切换同步日志文件,向主机返回日志已同步响应;当判断出不需要切换同步日志文件时,向主机返回日志已同步响应。
其中,判断是否需要切换同步日志文件包括:
判断同步日志文件的长度是否大于或等于第二预设阈值;
当判断出同步日志文件的长度大于或等于第二预设阈值时,确定需要切换同步日志文件;当判断出同步日志文件的长度小于第二预设阈值时,确定不需要切换同步日志文件。
本发明实施例在切换同步日志文件时将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info中,即将同步日志文件的最新位置和最新时间戳落盘,使得同步日志文件的最新位置和最新时间戳得到永久性保存,从而同步日志文件的最新位置和最新时间戳不会因为数据库的异常而丢失。
在本发明实施例中,备机在初始化数据库时创建第二系统表slave_log_info。
下面通过几个示例说明本发明实施例的方法的具体实现过程,所列举的例子仅仅是为了说明本发明实施例的方法的具体实现过程,不用于限定本发明实施例的保护范围。
示例1
本示例介绍MySQL数据库主备复制延迟监控方法,参见图3,该方法包括:
(1)主机的应用线程初始化数据库,创建第一系统表master_log_info。
(2)主机的应用线程接收客户端请求。
(3)主机的应用线程开启一个新事务。
(4)主机的应用线程执行上述新事务。
(5)主机的应用线程提交上述新事务,产生第一binlog。
(6)主机的应用线程将新事务产生的第一binlog写入第一日志文件中,即第一binlog落盘。
(7)主机的应用线程更新第一日志文件的最新位置和最新时间戳。
(8)主机的应用线程唤醒dump线程,主机的复制线程向备机发送第一binlog,第一binlog的网络包头部包括第一日志文件的最新位置和最新时间戳。
(9)主机的应用线程判断是否需要切换第一日志文件,当需要切换第一日志文件时,将第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,切换所述第一日志文件,继续执行步骤(10);当不需要切换第一日志文件时,继续执行步骤(10)。
(10)主机的应用线程等待备机收到日志的响应。
(11)备机的IO线程从网络上获取主机的第一binlog,第一binlog的网络包头部包括第一日志文件的最新位置和最新时间戳。
(12)备机的IO线程获取并更新第一日志文件的最新位置和最新时间戳,获取第一binlog,将第一binlog写入同步日志文件relaylog中,更新同步日志文件的最新位置和最新时间戳。
(13)备机的IO线程判断是否需要切换同步日志文件,当判断出需要切换同步日志文件时,将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info,切换同步日志文件,继续执行步骤(14);当判断出不需要切换同步日志文件时,继续执行步骤(14)。
(14)备机的IO线程向主机的ACK线程返回日志已同步响应。
(15)主机的ACK线程通知应用线程。
(16)主机新事务提交结束,向客户端返回响应。
(17)备机的IO线程唤醒worker线程回放同步日志文件relaylog。
(18)备机的worker线程从同步日志文件中读取一个新事务,执行新事务,回放完毕主机上的新事务,将新事务产生的第二binlog写入第二日志文件中,即第二binlog落盘。
(19)备机的worker线程更新已回放日志的最新位置和最新时间戳。
(20)备机的worker线程判断是否需要切换第二日志文件,当判断出需要切换第二日志文件时,将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info,切换第二日志文件,继续读取同步日志文件的步骤;当判断出不需要切换第二日志文件时,继续读取同步日志文件的步骤。
(21)登录备机查询同步日志的位置延迟和时间延迟、回放日志的位置延迟和时间延迟。
(22)主机的应用线程去等待下一个客户端请求。
(23)备机的IO线程去等待下一个binlog网络包。
(24)备机的worker线程去回放relaylog的下一个事务。
示例2
本示例介绍Mariadb数据库主备复制延迟监控方法,Mariadb数据库主备复制延迟监控方法和MySQL数据库主备复制延迟监控方法一致,只是日志格式和第二线程的实现方式有所区别,参见图4,该方法包括:
(1)主机的应用线程初始化数据库,创建第一系统表master_log_info。
(2)主机的应用线程接收客户端请求。
(3)主机的应用线程开启一个新事务。
(4)主机的应用线程执行上述新事务。
(5)主机的应用线程提交上述新事务,产生第一binlog。
(6)主机的应用线程将新事务产生的第一binlog写入第一日志文件中,即第一binlog落盘。
(7)主机的应用线程更新第一日志文件的最新位置和最新时间戳。
(8)主机的应用线程唤醒dump线程,主机的dump线程向备机发送第一binlog,第一binlog的网络包头部包括第一日志文件的最新位置和最新时间戳。
(9)主机的应用线程判断是否需要切换第一日志文件,当需要切换第一日志文件时,将第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,切换所述第一日志文件,继续执行步骤(10);当不需要切换第一日志文件时,继续执行步骤(10)。
(10)主机的应用线程等待备机收到日志的响应。
(11)备机的IO线程从网络上获取主机的第一binlog,第一binlog的网络包头部包括第一日志文件的最新位置和最新时间戳。
(12)备机的IO线程获取并更新第一日志文件的最新位置和最新时间戳,获取第一binlog,将第一binlog写入同步日志文件relaylog中,更新同步日志文件的最新位置和最新时间戳。
(13)备机的IO线程判断是否需要切换同步日志文件,当判断出需要切换同步日志文件时,将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info,切换同步日志文件,继续执行步骤(14);当判断出不需要切换同步日志文件时,继续执行步骤(14)。
(14)备机的IO线程向主机的dump线程返回日志已同步响应。
(15)主机的dump线程通知应用线程。
(16)主机新事务提交结束,向客户端返回响应。
(17)备机的IO线程唤醒第五线程(即worker线程)回放同步日志文件relaylog。
(18)备机的worker线程从同步日志文件中读取一个新事务,执行新事务,回放完毕主机上的新事务,将新事务产生的第二binlog写入第二日志文件中,即第二binlog落盘。
(19)备机的worker线程更新已回放日志的最新位置和最新时间戳。
(20)备机的worker线程判断是否需要切换第二日志文件,当判断出需要切换第二日志文件时,将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info,切换第二日志文件,继续读取同步日志文件的步骤;当判断出不需要切换第二日志文件时,继续读取同步日志文件的步骤。
(21)登录备机查询同步日志的位置延迟和时间延迟、回放日志的位置延迟和时间延迟。
(22)主机的应用线程去等待下一个客户端请求。
(23)备机的IO线程去等待下一个binlog网络包。
(24)备机的worker线程去回放relaylog的下一个事务。
示例3
本示例介绍Percona数据库主备复制延迟监控方法,Percona数据库主备复制延迟监控方法与MySQL数据库主备复制延迟监控方法的流程完全一致,这里不再赘述。
示例4
本示例介绍PostgreSQL数据库主备复制延迟监控方法,PostgreSQL没有binlog日志,只有日志先行(WAL,Write Ahead Log)日志,另外PostgreSQL的复制线程、接收线程、回放线程的名称与MySQL都不一样,参见图5,该方法包括:
(1)主机的应用线程初始化数据库,创建第一系统表master_log_info。
(2)主机的应用线程接收客户端请求。
(3)主机的应用线程开启一个新事务。
(4)主机的应用线程执行上述新事务。
(5)主机的应用线程提交上述新事务,产生第一WAL日志。
(6)主机的应用线程将新事务产生的第一WAL日志写入第一日志文件中,即第一WAL日志落盘。
(7)主机的应用线程更新第一日志文件的最新位置和最新时间戳。
(8)主机的应用线程唤醒wal_send线程,主机的wal_send线程向备机发送第一WAL日志,第一WAL日志的网络包头部包括第一日志文件的最新位置和最新时间戳。
(9)主机的应用线程判断是否需要切换第一日志文件,当需要切换第一日志文件时,将第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,切换所述第一日志文件,继续执行步骤(10);当不需要切换第一日志文件时,继续执行步骤(10)。
(10)主机的应用线程等待备机收到日志的响应。
(11)备机的IO线程从网络上获取主机的第一WAL日志,第一WAL日志的网络包头部包括第一日志文件的最新位置和最新时间戳。
(12)备机的IO线程获取并更新第一日志文件的最新位置和最新时间戳,获取第一WAL日志,将第一WAL日志写入同步日志文件WAL日志中,更新同步日志文件的最新位置和最新时间戳。
(13)备机的IO线程判断是否需要切换同步日志文件,当判断出需要切换同步日志文件时,将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info,切换同步日志文件,继续执行步骤(14);当判断出不需要切换同步日志文件时,继续执行步骤(14)。
(14)备机的IO线程向主机的wal_send线程返回日志已同步响应。
(15)主机的wal_send线程通知应用线程。
(16)主机新事务提交结束,向客户端返回响应。
(17)备机的IO线程唤醒worker线程回放同步日志文件relaylog。
(18)备机的worker线程从同步日志文件中读取一个新事务,执行新事务,回放完毕主机上的新事务,将新事务产生的第二WAL日志写入第二日志文件中,即第二WAL日志落盘。
(19)备机的worker线程更新已回放日志的最新位置和最新时间戳。
(20)备机的worker线程判断是否需要切换第二日志文件,当判断出需要切换第二日志文件时,将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info,切换第二日志文件,继续读取同步日志文件的步骤;当判断出不需要切换第二日志文件时,继续读取同步日志文件的步骤。
(21)登录备机查询同步日志的位置延迟和时间延迟、回放日志的位置延迟和时间延迟。
(22)主机的应用线程去等待下一个客户端请求。
(23)备机的IO线程去等待下一个WAL日志网络包。
(24)备机的worker线程去回放relaylog的下一个事务。
参见图6,本发明另一个实施例提出了一种数据库主备复制延迟监控装置(如主机),包括:
第一更新模块601,用于将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;
通信模块602,用于将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机。
在本发明实施例中,第一更新模块601可以通过第一线程将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;其中,第一线程包括应用线程。
在本发明实施例中,第一更新模块601接收客户端请求,开启事务,执行事务,执行事务完成后提交事务,在提交事务时产生第一预定日志。
其中,第一更新模块601可以通过第一线程接收客户端请求,开启事务,执行事务,执行事务完成后提交事务,在提交事务时产生第一预定日志。
在本发明实施例中,第一预定日志记录了事务具体的操作内容。例如,删除了哪张表的哪条记录、更新了哪张表的哪条记录的哪个字段、向哪张表中插入哪条记录等等。
在本发明实施例中,第一预定日志包括以下任意一个:第一二进制日志(binlog,binary log)、第一日志先行(WAL,Write Ahead Log)日志。
在本发明实施例中,第一更新模块601具体用于采用以下方式实现更新第一日志文件的最新位置和最新时间戳:
将第一日志文件的最新位置更新为上一次更新的第一日志文件的最新位置和第一预定日志的长度之和;将第一日志文件的最新时间戳更新为将第一预定日志写入第一日志文件完成时的当前系统时间。
在本发明实施例中,第一更新模块601在内存中更新所述第一日志文件的最新位置和最新时间戳。具体的,将内存中的第一日志文件的最新位置更新为上一次更新的第一日志文件的最新位置和第一预定日志的长度之和;将内存中的第一日志文件的最新时间戳更新为将第一预定日志写入第一日志文件完成时的当前系统时间。本发明实施例第一更新模块601在内存中更新所述第一日志文件的最新位置和最新时间戳,不会影响数据库的性能。
其中,第一次更新第一日志文件的最新位置时,上一次更新的第一日志文件的最新位置为0。
在本发明实施例中,通信模块602可以通过第二线程将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机;其中,第二线程包括以下任意一个:复制线程、dump线程、wal_send线程。
其中,第二线程可以由第一线程唤醒。
本发明实施例中,第一更新模块601和通信模块602通过不同的线程来实现,提高了实现效率。
在本发明实施例中,通信模块602具体用于采用以下方式实现将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机包括:将第一日志文件的最新位置和最新时间戳包括在第一预定日志的网络包头部中发送给备机;当然,通信模块602也可以采用其他的形式将第一日志文件的最新位置和最新时间戳发送给备机,本发明实施对具体的发送形式不作限定,具体的发送形式也不用于限定本发明实施例的保护范围。
本发明实施例将提交事务时产生的第一预定日志写入第一日志文件中,并更新第一日志文件的最新位置和最新时间戳,将第一日志文件的最新位置和最新时间戳连同第一预定日志发送给备机,使得备机在同步时实时获得准确的同步延迟和回放延迟。
在本发明另一个实施例中,通信模块602还用于:接收日志已同步响应。
在本发明实施例中,通信模块602可以通过第三线程或第二线程接收日志已同步响应;其中,第三线程包括以下任意一个:响应接收(ACK,Acknowledge)线程、wal_send线程。
在本发明实施例中,通信模块602通过第三线程或第二线程接收日志已同步响应后,通知第一线程。
在本发明实施例中,第一线程接收日志已同步响应时,主机事务提交结束,通过第一线程向客户端返回响应。
在本发明另一个实施例中,第一更新模块601还用于:
判断是否需要切换第一日志文件;
当判断出不需要切换第一日志文件时,继续执行接接收日志已同步响应的步骤。
在本发明另一个实施例中,第一更新模块601还用于:
当判断出需要切换第一日志文件时,将所述第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,切换所述第一日志文件,继续执行接接收日志已同步响应的步骤。
其中,第一更新模块601具体用于采用以下方式实现判断是否需要切换第一日志文件:
判断第一日志文件的长度是否大于或等于第一预设阈值;
当判断出第一日志文件的长度大于或等于第一预设阈值时,确定需要切换第一日志文件;当判断出第一日志文件的长度小于第一预设阈值时,确定不需要切换第一日志文件。
本发明实施例在切换第一日志文件时将所述第一日志文件的最新位置和最新时间戳写入第一系统表master_log_info中,即将第一日志文件的最新位置和最新时间戳落盘,使得第一日志文件的最新位置和最新时间戳得到永久性保存,从而第一日志文件的最新位置和最新时间戳不会因为数据库的异常而丢失。
在本发明实施例中,主机可以在初始化数据库时创建第一系统表master_log_info。
参见图7,本发明另一个实施例提出了一种数据库主备复制延迟监控装置(如备机),包括:
第二更新模块701,用于接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;
第三更新模块702,用于读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;
计算模块703,用于根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
在本发明实施例中,第二更新模块701可以通过第四线程接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件relaylog中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;其中,第四线程包括以下任意一个:接收线程、输入输出(IO,Input Output)线程。
在本发明实施例中,第一预定日志包括以下任意一个:第一二进制日志(binlog,binary log)、第一日志先行(WAL,Write Ahead Log)。
在本发明实施例中,第二更新模块701具体用于采用以下方式实现更新第一日志文件的最新位置和最新时间戳:
在内存中更新第一日志文件的最新位置和最新时间戳;
第二更新模块701具体用于采用以下方式实现更新同步日志文件的最新位置和最新时间戳:在内存中更新同步日志文件的最新位置和最新时间戳。
其中,第二更新模块701具体用于采用以下方式实现在内存中更新第一日志文件的最新位置和最新时间戳:
将内存中的第一日志文件的最新位置更新为接收的第一日志文件的最新位置,将内存中的第一日志文件的最新时间戳更新为接收的第一日志文件的最新时间戳。
本发明实施例第二更新模块701在内存中更新第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳,不会影响数据库的性能。
在本发明实施例中,第一日志文件的最新位置和最新时间戳包括在第一预定日志的网络包头部中,第二更新模块701接收第一预定日志,从第一预定日志的网络包头部中获取第一日志文件的最新位置和最新时间戳。
在本发明实施例中,第二更新模块701具体用于采用以下方式实现更新同步日志文件的最新位置和最新时间戳:
将同步日志文件的最新位置更新为上一次更新的同步日志文件的最新位置和接收的第一预定日志的长度之和,将同步日志文件的最新时间戳更新为第一预定日志中记录的第一预定日志的生成时间。
其中,第一次更新同步日志文件的最新位置时,上一次更新的同步日志文件的最新位置为0。
在本发明实施例中,第三更新模块702可以通过第五线程读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;其中,可以通过第四线程唤醒第五线程,第五线程包括以下任意一个:回放线程、工作线程(worker线程)。
在本发明实施例中,第三更新模块702具体用于采用以下方式实现更新已回放日志的最新位置和最新时间戳:
将已回放日志的最新位置更新为上一次更新的已回放日志的最新位置和本次执行的事务的长度之和,将已回放日志的最新时间戳更新为本次执行的事务对应的日志中记录的该事务对应的日志的生成时间。
在本发明实施例中,第三更新模块702还用于:
回放同步日志文件的过程中,将第五线程提交事务时产生的第二预定日志写入第二日志文件中,判断是否需要切换第二日志文件,当判断出需要切换第二日志文件时,将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info,切换第二日志文件,继续读取同步日志文件的步骤;当判断出不需要切换第二日志文件时,继续读取同步日志文件的步骤。
其中,第三更新模块702具体用于采用以下方式实现判断是否需要切换第二日志文件:
判断第二日志文件的长度是否大于或等于第三预设阈值;
当判断出第二日志文件的长度大于或等于第三预设阈值时,确定需要切换第二日志文件;当判断出第二日志文件的长度小于第三预设阈值时,确定不需要切换第二日志文件。
本发明实施例在切换第二日志文件时将已回放日志的最新位置和最新时间戳写入第二系统表slave_log_info中,即将已回放日志的最新位置和最新时间戳落盘,使得已回放日志的最新位置和最新时间戳得到永久性保存,从而已回放日志的最新位置和最新时间戳不会因为数据库的异常而丢失。
在本发明实施例中,计算模块703接收备机复制延迟查询指令时,继续执行所述根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟的步骤。
在本发明实施例中,同步延迟包括同步位置延迟和同步时间延迟,计算模块703具体用于采用以下方式实现根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟:
将第一日志文件的最新位置和同步日志文件的最新位置之差作为所述同步位置延迟,将同步日志文件的最新时间戳和第一日志文件的最新时间戳之差作为所述同步时间延迟。
在本发明实施例中,回放延迟包括回放位置延迟和回放时间延迟,计算模块703具体用于采用以下方式实现根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟:
将第一日志文件的最新位置和已回放日志的最新位置之差作为所述回放位置延迟,将已回放日志的最新时间戳和第一日志文件的最新时间戳之差作为所述回放时间延迟。
本发明实施例基于第一日志文件的最新位置和最新时间戳计算同步延迟和回放延迟,准确的获得了备机的同步延迟、回放延迟,从而保证了系统运行和故障切换的相关要求。
在本发明另一个实施例中,第二更新模块701还用于:
向主机返回日志已同步响应。
在本发明另一个实施例中,第二更新模块701还用于:
判断是否需要切换同步日志文件,当判断出需要切换同步日志文件时,将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info,切换同步日志文件,向主机返回日志已同步响应;当判断出不需要切换同步日志文件时,向主机返回日志已同步响应。
其中,第二更新模块701具体用于采用以下方式实现判断是否需要切换同步日志文件:
判断同步日志文件的长度是否大于或等于第二预设阈值;
当判断出同步日志文件的长度大于或等于第二预设阈值时,确定需要切换同步日志文件;当判断出同步日志文件的长度小于第二预设阈值时,确定不需要切换同步日志文件。
本发明实施例在切换同步日志文件时将同步日志文件的最新位置和最新时间戳写入第二系统表slave_log_info中,即将同步日志文件的最新位置和最新时间戳落盘,使得同步日志文件的最新位置和最新时间戳得到永久性保存,从而同步日志文件的最新位置和最新时间戳不会因为数据库的异常而丢失。
在本发明实施例中,备机在初始化数据库时创建第二系统表slave_log_info。
本发明另一个实施例提出了一种数据库主备复制延迟监控装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任一种数据库主备复制延迟监控方法。
本发明另一个实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种数据库主备复制延迟监控方法的步骤。
参见图8,本发明另一个实施例提出了一种数据库主备复制延迟监控系统,包括:
主机801,用于将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机;
备机802,用于接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
上述主机801和备机802的具体实现过程与前述实施例相同,这里不再赘述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
虽然本发明实施例所揭露的实施方式如上,但所述的内容仅为便于理解本发明实施例而采用的实施方式,并非用以限定本发明实施例。任何本发明实施例所属领域内的技术人员,在不脱离本发明实施例所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明实施例的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (26)

1.一种数据库主备复制延迟监控方法,其特征在于,应用于主机,包括:
将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;
将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机,使得备机在同步时实时获得同步延迟和回放延迟;
其中,所述更新第一日志文件的最新位置和最新时间戳包括:
将所述第一日志文件的最新位置更新为上一次更新的第一日志文件的最新位置和所述第一预定日志的长度之和;将所述第一日志文件的最新时间戳更新为将所述第一预定日志写入所述第一日志文件完成时的当前系统时间。
2.根据权利要求1所述的数据库主备复制延迟监控方法,其特征在于,该方法还包括:接收日志已同步响应。
3.根据权利要求2所述的数据库主备复制延迟监控方法,其特征在于,所述接收日志已同步响应之前,该方法还包括:
判断是否需要切换第一日志文件;
当判断出不需要切换第一日志文件时,继续执行所述接收日志已同步响应的步骤。
4.根据权利要求3所述的数据库主备复制延迟监控方法,其特征在于,当判断出需要切换第一日志文件时,继续执行所述接收日志已同步响应的步骤之前,该方法还包括:
将所述第一日志文件的最新位置和最新时间戳写入第一系统表中,切换所述第一日志文件。
5.根据权利要求4所述的数据库主备复制延迟监控方法,其特征在于,所述将提交事务时产生的第一预定日志写入第一日志文件中之前,该方法还包括:在初始化数据库时创建所述第一系统表。
6.根据权利要求1~5任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述更新第一日志文件的最新位置和最新时间戳包括:
在内存中更新所述第一日志文件的最新位置和最新时间戳。
7.根据权利要求1~5任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机包括:
将所述第一日志文件的最新位置和最新时间戳包括在所述第一预定日志的网络包头部中发送给备机。
8.一种数据库主备复制延迟监控方法,其特征在于,包括:
接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;
读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;
根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
9.根据权利要求8所述的数据库主备复制延迟监控方法,其特征在于,所述将第一预定日志写入同步日志文件中后,该方法还包括:
向主机返回日志已同步响应。
10.根据权利要求8所述的数据库主备复制延迟监控方法,其特征在于,所述将第一预定日志写入同步日志文件中后,该方法还包括:
判断是否需要切换所述同步日志文件;
当判断出不需要切换所述同步日志文件时,向主机返回日志已同步响应。
11.根据权利要求10所述的数据库主备复制延迟监控方法,其特征在于,当判断出需要切换所述同步日志文件时,向主机返回日志已同步响应之前,该方法还包括:
将所述同步日志文件的最新位置和最新时间戳写入第二系统表,切换所述同步日志文件。
12.根据权利要求11所述的数据库主备复制延迟监控方法,其特征在于,所述接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳之前,该方法还包括:在初始化数据库时创建所述第二系统表。
13.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述更新第一日志文件的最新位置和最新时间戳包括:
在内存中更新所述第一日志文件的最新位置和最新时间戳;
所述更新同步日志文件的最新位置和最新时间戳包括:
在内存中更新所述同步日志文件的最新位置和最新时间戳。
14.根据权利要求13所述的数据库主备复制延迟监控方法,其特征在于,其中,所述在内存中更新第一日志文件的最新位置和最新时间戳包括:
将内存中的第一日志文件的最新位置更新为接收的第一日志文件的最新位置,将内存中的第一日志文件的最新时间戳更新为接收的第一日志文件的最新事件戳。
15.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述更新同步日志文件的最新位置和最新时间戳包括:
将所述同步日志文件的最新位置更新为上一次更新的同步日志文件的最新位置和接收的第一预定日志的长度之和,将所述同步日志文件的最新时间戳更新为所述第一预定日志中记录的所述第一预定日志的生成时间。
16.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述更新已回放日志的最新位置和最新时间戳包括:
将所述已回放日志的最新位置更新为上一次更新的已回放日志的最新位置和本次执行的事务的长度之和,将所述已回放日志的最新时间戳更新为本次执行的事务对应的日志中记录的所述事务对应的日志的生成时间。
17.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,接收备机复制延迟查询指令时,继续执行所述根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟的步骤。
18.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述同步延迟包括同步位置延迟和同步时间延迟,所述根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟包括:
将所述第一日志文件的最新位置和所述同步日志文件的最新位置之差作为所述同步位置延迟,将所述同步日志文件的最新时间戳和所述第一日志文件的最新时间戳之差作为所述同步时间延迟。
19.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,其中,所述回放延迟包括回放位置延迟和回放时间延迟,所述根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟包括:
将所述第一日志文件的最新位置和所述已回放日志的最新位置之差作为所述回放位置延迟,将所述已回放日志的最新时间戳和所述第一日志文件的最新时间戳之差作为所述回放时间延迟。
20.根据权利要求8~12任一项所述的数据库主备复制延迟监控方法,其特征在于,该方法还包括:
每执行完一个事务时将提交事务时产生的第二预定日志写入第二日志文件中;
判断是否需要切换所述第二日志文件;
当判断出不需要切换所述第二日志文件时,继续所述读取同步日志文件的步骤。
21.根据权利要求20所述的数据库主备复制延迟监控方法,其特征在于,当判断出需要切换所述第二日志文件时,继续所述读取同步日志文件的步骤之前,该方法还包括:
将所述已回放日志的最新位置和最新时间戳写入第二系统表,切换所述第二日志文件。
22.一种数据库主备复制延迟监控装置,其特征在于,应用于主机,包括:
第一更新模块,用于将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;
通信模块,用于将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机,使得备机在同步时实时获得同步延迟和回放延迟;
其中,所述第一更新模块具体用于采用以下方式实现更新第一日志文件的最新位置和最新时间戳:
将所述第一日志文件的最新位置更新为上一次更新的第一日志文件的最新位置和所述第一预定日志的长度之和;将所述第一日志文件的最新时间戳更新为将所述第一预定日志写入所述第一日志文件完成时的当前系统时间。
23.一种数据库主备复制延迟监控装置,其特征在于,包括:
第二更新模块,用于接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;
第三更新模块,用于读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;
计算模块,用于根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
24.一种数据库主备复制延迟监控装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令被所述处理器执行时,实现如权利要求1~21任一项所述的数据库主备复制延迟监控方法。
25.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~21任一项所述的数据库主备复制延迟监控方法的步骤。
26.一种数据库主备复制延迟监控系统,其特征在于,包括:
主机,用于将提交事务时产生的第一预定日志写入第一日志文件中,更新第一日志文件的最新位置和最新时间戳;将第一预定日志、第一日志文件的最新位置和最新时间戳发送给备机;
备机,用于接收主机的第一预定日志、第一日志文件的最新位置和最新时间戳,将第一预定日志写入同步日志文件中,更新第一日志文件的最新位置和最新时间戳,更新同步日志文件的最新位置和最新时间戳;读取同步日志文件,执行同步日志文件的内容,每执行完一个事务更新已回放日志的最新位置和最新时间戳;根据第一日志文件的最新位置和最新时间戳、同步日志文件的最新位置和最新时间戳计算同步延迟,根据第一日志文件的最新位置和最新时间戳、已回放日志的最新位置和最新时间戳计算回放延迟。
CN201811619133.1A 2018-12-28 2018-12-28 一种数据库主备复制延迟监控方法、装置和系统 Active CN111382024B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811619133.1A CN111382024B (zh) 2018-12-28 2018-12-28 一种数据库主备复制延迟监控方法、装置和系统
PCT/CN2019/113464 WO2020134480A1 (zh) 2018-12-28 2019-10-25 一种数据库主备复制延迟监控方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811619133.1A CN111382024B (zh) 2018-12-28 2018-12-28 一种数据库主备复制延迟监控方法、装置和系统

Publications (2)

Publication Number Publication Date
CN111382024A CN111382024A (zh) 2020-07-07
CN111382024B true CN111382024B (zh) 2023-07-14

Family

ID=71126957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811619133.1A Active CN111382024B (zh) 2018-12-28 2018-12-28 一种数据库主备复制延迟监控方法、装置和系统

Country Status (2)

Country Link
CN (1) CN111382024B (zh)
WO (1) WO2020134480A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069018B (zh) * 2020-07-21 2024-05-31 上海瀚银信息技术有限公司 一种数据库高可用方法及系统
CN113626517B (zh) * 2021-06-28 2023-08-15 苏州浪潮智能科技有限公司 PostgreSQL数据库流复制异常处理方法及装置
CN116775727A (zh) * 2023-06-20 2023-09-19 深圳市科力锐科技有限公司 数据延迟统计方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101710332A (zh) * 2009-11-13 2010-05-19 广州从兴电子开发有限公司 一种事务日志通知内存数据库内容变化的方法及系统
CN103560906A (zh) * 2013-10-22 2014-02-05 珠海多玩信息技术有限公司 数据复制的方法及装置
CN106933703A (zh) * 2015-12-30 2017-07-07 阿里巴巴集团控股有限公司 一种数据库数据备份的方法、装置及电子设备
CN108183957A (zh) * 2017-12-29 2018-06-19 北京奇虎科技有限公司 主从同步方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9020463B2 (en) * 2011-12-29 2015-04-28 The Nielsen Company (Us), Llc Systems, methods, apparatus, and articles of manufacture to measure mobile device usage
CN103970620B (zh) * 2013-01-24 2017-03-22 杭州宏杉科技股份有限公司 一种准连续性数据复制方法及装置
CN104268274B (zh) * 2014-10-14 2019-02-12 华为技术有限公司 一种记录数据库日志的方法、装置及系统
CN105589797B (zh) * 2015-09-17 2018-06-22 中国银联股份有限公司 主从数据库间数据同步延时检测的方法
CN105912628B (zh) * 2016-04-07 2019-05-28 北京奇虎科技有限公司 主从数据库的同步方法及装置
CN108228397A (zh) * 2016-12-22 2018-06-29 深圳市优朋普乐传媒发展有限公司 一种集群间跨机房同步的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101710332A (zh) * 2009-11-13 2010-05-19 广州从兴电子开发有限公司 一种事务日志通知内存数据库内容变化的方法及系统
CN103560906A (zh) * 2013-10-22 2014-02-05 珠海多玩信息技术有限公司 数据复制的方法及装置
CN106933703A (zh) * 2015-12-30 2017-07-07 阿里巴巴集团控股有限公司 一种数据库数据备份的方法、装置及电子设备
CN108183957A (zh) * 2017-12-29 2018-06-19 北京奇虎科技有限公司 主从同步方法及装置

Also Published As

Publication number Publication date
WO2020134480A1 (zh) 2020-07-02
CN111382024A (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
US9575849B2 (en) Synchronized backup and recovery of database systems
US11256715B2 (en) Data backup method and apparatus
WO2019154394A1 (zh) 分布式数据库集群系统、数据同步方法及存储介质
US8214612B1 (en) Ensuring consistency of replicated volumes
US9740572B1 (en) Replication of xcopy command
US9710177B1 (en) Creating and maintaining clones in continuous data protection
US9471579B1 (en) Replicating selected snapshots from one storage array to another, with minimal data transmission
US8380885B1 (en) Handling abort commands in replication
US8271447B1 (en) Mirroring metadata in a continuous data protection environment
US8959054B1 (en) Methods and apparatus for optimal journaling for continuous data replication
US7039661B1 (en) Coordinated dirty block tracking
JP5295263B2 (ja) 再同期化中に更新されるデータを格納するのにリポジトリを用いるかどうかの判定法
US9582382B1 (en) Snapshot hardening
CN111382024B (zh) 一种数据库主备复制延迟监控方法、装置和系统
US8706700B1 (en) Creating consistent snapshots across several storage arrays or file systems
US8332687B1 (en) Splitter used in a continuous data protection environment
US8996461B1 (en) Method and apparatus for replicating the punch command
US10365978B1 (en) Synchronization of snapshots in a distributed consistency group
US9229970B2 (en) Methods to minimize communication in a cluster database system
WO2022170938A1 (en) Distributed database remote backup
US10726042B2 (en) Replication control using eventually consistent meta-data
JP2007183930A (ja) 異なるコピー技術を用いてデータをミラーリングするときの整合性の維持
US20240028568A1 (en) Data migration method and apparatus, device, distributed system and storage medium
US10235145B1 (en) Distributed scale-out replication
CN104750755A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220209

Address after: 100176 floor 18, building 8, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing (Yizhuang group, high-end industrial area of Beijing Pilot Free Trade Zone)

Applicant after: Jinzhuan Xinke Co.,Ltd.

Address before: 518057 Ministry of justice, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen, Guangdong

Applicant before: ZTE Corp.

GR01 Patent grant
GR01 Patent grant