CN113535738A - MySQL数据库系统的故障转移方法、高可用系统及电子设备 - Google Patents
MySQL数据库系统的故障转移方法、高可用系统及电子设备 Download PDFInfo
- Publication number
- CN113535738A CN113535738A CN202111083664.5A CN202111083664A CN113535738A CN 113535738 A CN113535738 A CN 113535738A CN 202111083664 A CN202111083664 A CN 202111083664A CN 113535738 A CN113535738 A CN 113535738A
- Authority
- CN
- China
- Prior art keywords
- database
- slave
- master
- availability
- mysql
- 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.)
- Granted
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/2455—Query execution
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种MySQL数据库系统的故障转移方法、高可用系统及电子设备,应用于数据库集群技术领域。在本发明提供的MySQL数据库系统的故障转移方法中,在服务器上部署高可用软件之后,将根据实际需求编写的自定义高可用决策SQL语句内嵌到所述高可用软件的配置文件中,以通过设置和调用不同的自定义高可用决策SQL语句来实现MySQL数据库系统的主数据库发生不同的故障时,可用按需切换到预期的从数据库上,增加了MySQL数据库高可用软件在应对不同场景的通用性和灵活性,并降低了其使用成本,进而最终提高整个高可用集群的运行性能。
Description
技术领域
本发明涉及数据库集群技术领域,特别涉及一种MySQL数据库系统的故障转移方法、高可用系统及电子设备。
背景技术
当今,高可用集群,英文原文为HighAvailabilityCluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络高可用集群是指以减少服务中断时间为目的的服务器集群技术源。这些单个的计算机系统就是集群的节点(node)。高可用性集群(HAcluster)是指如单系统一样地运行并支持(计算机)持续正常运行的一个主机群。
高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备用节点将在几秒钟的时间内接管它的职责。例如,在现实环境中,为了保证数据的可用性,一个MySQL数据库服务一般都是冗余部署,通过主从复制技术将数据从主数据库同步到从数据库,主数据库负责对外提供服务。因此,一旦MySQL数据库系统中的主数据库发生故障,那么MySQL数据库系统的主从复制将无法实现故障转移,故此需要借助其他软件来实现。目前,通过采用数据库高可用软件将集群中某个从数据库设置为主数据库。
然而,现有的数据库高可用软件在将集群中某个从数据库设置为主数据库的工作中只能按照预定逻辑进行主从数据库的切换,即,利用预定逻辑确定出从数据库的优先级排序,然后,将优先级排序最靠前的从数据库作为预期的从数据库,显然,其不能保证切换到用户指定的某个从库上,例如:数据库集群部署在不同机房,某些从数据库部署的机房在其他城市作为灾难备份,此时若主数据库发送故障,则按照现有的预定逻辑进行主从数据库的切换的话,则其会将位于其他城市的作为灾难备份的机房中的从数据库作为主数据库,而无法根据特定的场景从多个从库中选择一个指定的从库作为主库,进而造成在当前主数据库失效至备用从数据库完全替代当前失效的主数据库之间的反应时间较长,导致业务切换连续性不高和使用成本高,进而最终影响了整个高可用集群的运行性能。
发明内容
本发明的目的在于提供一种MySQL数据库系统的故障转移方法、高可用系统及电子设备,使用外部编程的方式植入SQL语句进行高可用决策,以增加数据库高可用软件在应对不同场景的通用性,同时降低其使用成本,并最终提高整个MySQL数据库系统的运行性能。
第一方面,为解决上述技术问题,本发明提供一种MySQL数据库系统的故障转移方法,应用于与所述MySQL数据库系统连接的服务器,所述MySQL数据库系统包括至少一个主数据库和多个从数据库,所述服务器上部署有高可用软件。
所述故障转移方法包括:预先生成所述高可用软件的配置文件,所述配置文件包括所述数据库系统内每一数据库的第一标识和自定义高可用决策SQL语句。
实时检测所述数据库系统内的主数据库是否发生故障。
当检测到所述主数据库发生故障时,检测所述数据库系统内的所有从数据库的运行状态,并将所述运行状态作为每个所述从数据库的第二标识,其中,所述运行状态包括:从数据库是否发生故障、从数据库的事务数和从数据库的复制类型。
利用所述高可用软件分别生成包含所述主数据库的第一标识的第一数据库表格和包含所述从数据库的第一标识及其第二标识的第二数据库表格。
调用所述自定义高可用决策SQL语句对所述第一数据库表格和所述第二数据库表格执行查询操作,以在不同的主数据库故障场景下,从多个所述从数据库中按需选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库。
对所述MySQL数据库系统进行主从切换,将所述最佳可切换从数据库设置为主数据库,以完成所述MySQL数据库系统的故障转移。
进一步的,所述数据库系统内的主数据库和从数据库的第一标识和第二标识的结构均可以为kv结构形式,且所述主数据库和从数据库的第一标识为由用户提前配置的用于区别各数据库的数据信息。
进一步的,检测所述数据库系统内的所有从数据库的运行状态的步骤可以包括:定时向所述数据库系统内的每个从数据库发送数据库连接请求,并判断连接是否成功。
若连接成功,则对各所述从数据库执行状态采集SQL语句,并获取各从数据库的GTID大小数据和从数据库的复制类型,并根据所述GTID大小数据计算各所述从数据库的事务数;否则,则确定所述数据库系统中的该从数据库发生故障。
进一步的,检测所述主数据库发生故障的步骤,可以包括:定时向所述主数据库发送连接请求,并检测是否接收到所述主数据库发送的反馈信息,所述反馈信息包括所述主数据库的IP地址。
若检测结果为否,则确定所述主数据库发生故障。
进一步的,检测所述主数据库发生故障的步骤,可以包括:定时向所述主数据库发送连接请求,并检测是否接收到所述主数据库发送的反馈信息,所述反馈信息包括所述主数据库的IP地址。
若检测结果为是,则按照预设的探活SQL语句,进一步对所述MySQL数据库系统执行查询操作,并在未接收到所述主数据库发送的所述反馈信息的情况下,确定所述主数据库发生故障。
进一步的,所述第一标识可以包括所述数据库的ID,所述自定义高可用决策SQL语句由用户提前配置;
所述自定义高可用决策SQL语句的内容可以包括从所述第一数据库表格中和所述第二数据库表格中查找出至少一个所述从数据库的ID,并将所述从数据库的ID作为所述自定义高可用决策SQL语句的查询结果。
进一步的,所述利用所述高可用软件分别生成包含所述主数据库的第一标识的第一数据库表格和包含所述从数据库的第一标识及其第二标识的第二数据库表格的步骤,可以包括:利用所述高可用软件分别生成所述主数据库对应的第一数据库表格和所述从数据库对应的的第二数据库表格。
将所述主数据库的第一标识插入到所述第一数据库表格中,并将所述从数据库的第一标识及其第二标识插入到所述第二数据库表格中。
第二方面,基于如上所述的MySQL数据库系统的故障转移方法,本发明还提供了一种MySQL数据库系统的高可用系统,具体可以包括:至少一个主数据库、多个从数据库和服务器。
其中,所述主数据库和所述从数据库在所述服务器的控制下,直接复制数据,以使所述主数据库中和所述从数据库中存储有相同的数据信息。
所述服务器上部署有高可用软件,以用于在不同的主数据库故障场景下,通过所述高可用软件完成所述MySQL数据库系统的故障转移。
进一步的,所述高可用软件的配置文件中内嵌有自定义高可用决策SQL语句和每一数据库的第一标识,以使所述服务器通过调用所述自定义高可用决策SQL语句,从多个所述从数据库中选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库。
第三方面,基于如上所述的MySQL数据库系统的故障转移方法,本发明还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信。
存储器,用于存放计算机程序。
处理器,用于执行存储器上所存放的程序时,实现如上所述的MySQL数据库系统的故障转移方法。
与现有技术相比,本发明技术方案至少具有如下有益效果之一:
在本发明提供的MySQL数据库系统的故障转移方法中,在服务器上部署高可用软件之后,将根据实际需求编写的自定义高可用决策SQL语句内嵌到所述高可用软件的配置文件中,以通过设置和调用不同的自定义高可用决策SQL语句来实现MySQL数据库系统的主数据库发生不同的故障时,可用按需切换到预期的从数据库上,增加了MySQL数据库高可用软件在应对不同场景的通用性,缩短了当前主数据库失效至备用从数据库完全替代当前失效的主数据库之间的反应时间,并由于SQL语言是通用技术,因此,通过配置SQL语句的方式能够降低使用成本,进而最终提高整个高可用集群的运行性能。
附图说明
图1为本发明一实施例中提供的一种MySQL数据库系统的故障转移方法的流程示意图。
图2a-2c为本发明一实施例中提供的MySQL数据库系统的三种不同架构框图。
图3为本发明一实施例中提供的一种利用高可用软件形成的第一数据库表格的结构示意图。
图4为本发明一实施例中提供的一种利用高可用软件形成的第二数据库表格的结构示意图。
图5为本发明一实施例中提供的一种添加完主数据库信息的第一数据库表格的结构示意图。
图6为本发明一实施例中提供的一种添加完从数据库信息的第二数据库表格的结构示意图。
图7为本发明一实施例中一种电子设备的结构示意图。
具体实施方式
下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
承如背景技术所述,现有技术中,高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备用节点将在几秒钟的时间内接管它的职责。例如,在现实环境中,为了保证数据的可用性,一个MySQL数据库服务一般都是冗余部署,通过主从复制技术将数据从主数据库同步到从数据库,主数据库负责对外提供服务。因此,一旦MySQL数据库系统中的主数据库发生故障,那么MySQL数据库系统的主从复制将无法实现故障转移,故此需要借助其他软件来实现。目前,通过采用数据库高可用软件将集群中某个从数据库设置为主数据库。
然而,现有的数据库高可用软件在将集群中某个从数据库设置为主数据库的工作中只能按照预定逻辑进行主从数据库的切换,即,利用预定逻辑确定出从数据库的优先级排序,然后,将优先级排序最靠前的从数据库作为预期的从数据库,显然,其不能保证切换到用户指定的某个从库上,例如:数据库集群部署在不同机房,某些从数据库部署的机房在其他城市作为灾难备份,此时若主数据库发送故障,则按照现有的预定逻辑进行主从数据库的切换的话,则其会将位于其他城市的作为灾难备份的机房中的从数据库作为主数据库,而无法根据特定的场景从多个从库中选择一个指定的从库作为主库,进而造成在当前主数据库失效至备用从数据库完全替代当前失效的主数据库之间的反应时间较长,导致业务切换连续性不高和使用成本高,进而最终影响了整个高可用集群的运行性能。
为此,本发明提供了一种MySQL数据库系统的故障转移方法、高可用系统及电子设备,使用外部编程的方式植入SQL语句进行高可用决策,以增加数据库高可用软件在应对不同场景的通用性,同时降低其使用成本,并最终提高整个MySQL数据库系统的运行性能,以下分别进行详细说明。
下面首先对本发明实施例提供的一种MySQL数据库系统的故障转移方法进行介绍。
需要说明的是,在本发明实施例中,所述MySQL数据库系统可用包括至少一个主数据库和多个从数据库,而所述MySQL数据库系统的故障转移方法可用应用于与所述MySQL数据库系统连接的服务器,所述服务器上部署有高可用软件。
并且,为了实现数据传输,所述服务器与所述数据库是一一对应连接,其连接技术可以是蓝牙或者局域网等。当然,本发明实施例中的所述连接技术可以是任何可以将上述各服务器与数据库连接的连接技术,这里不做限定。
参见图1,图1为发明一实施例中提供的一种MySQL数据库系统的故障转移方法的流程示意图,如图1所示,所述方法包括如下步骤:
步骤S100,预先生成所述高可用软件的配置文件,所述配置文件包括所述数据库系统内每一数据库对应的第一标识和自定义高可用决策SQL语句。其中,所述第一标识为用于标识所述数据库且不随所述数据库的运行状态而改变的数据信息。
在本实施例中,目标用户可以根据实际情况中,MySQL数据库系统中的主数据库发生故障时,其预期想要将所述主数据库切换到的从数据库的的内容通过编程的方式,形成一条自定义高可用决策SQL语句;之后,再将该自定义高可用决策SQL语句内嵌到部署在所述服务器上的所述高可用软件的配置文件中。
并且,为了便于识别,目标用户还可以为所述MySQL数据库系统中的每个数据库,如主数据库或从数据库配置一个或多个第一标识(标签),例如,数据库A的第一标识可以为“zone”: “上海”等位置信息,数据库B 的第一标识为 “zone”: “上海”等位置信息,或者,数据库C的第一标识为 “zone”: “北京”等位置信息。再或者,所述主数据库或从数据库的第一标识还可以为所述数据库的ID,例如,所述数据库A的第一标识可以为“123456”。
示例性的,如图2a所示,本发明提供的所述MySQL数据库系统可以包括包含一个主数据库A,三个从数据库B、C、D,其中,所述主数据库A和所述从数据库B、C在上海机房,其第一标识可以为“zone”:“上海”,而所述从数据库D在北京机房,其第一标识可以为“zone”:“北京”。
作为一种具体示例,所述在高可用软件上配置的自定义高可用决策SQL语句的内容可以包括:
SELECT candidates.id
FROM candidates JOIN master
ON candidates.zone = master.zone
WHERE candidates.is_health = 1
ORDER BY gtid_count DESC
LIMIT 1。
其中,该SQL语句代表查找zone值和主数据库的zone值一样的从数据库中健康的节点(从数据库),即非故障状态且数据量最多的节点的 id 列。因此,当上海机房(主机房)的主数据库挂了之后会在上海机房的从数据库中进行故障转移,而不转移到北京机房(灾备机房)。
作为另一种示例,如图2b所示,本发明提供的所述MySQL数据库系统还可以是一个读写分离数据库集群,应对的是读多的场景。一般读写分离的架构数据库的写入在主节点(主数据库),读取在从节点(从数据库),因此,针对主节点要对所在服务器配置和数据库配置做写入的优化,保证写入的性能,针对从节点要对所在服务器配置和数据库配置做读取的优化,并对少数从节点也做写入优化,即绝大多数的从节点服务器配置不需要按主节点规格配置,节省部分资源。具体的,该数据库系统可以包含一个主数据库A,四个从数据库B,C,D,E,其中所述主数据库A为写入优化的数据库,其第一标识可以为“role”:“write”,所述从数据库B为写入优化的数据库,其第一标识可以为“role”:“write”,所述从数据库C,D,E为读取优化数据库,其第一标识可以为“role”:“read”。
此时,所述在高可用软件上配置的自定义高可用决策SQL语句的内容可以包括:
SELECT candidates.id
FROM candidates
WHERE candidates.is_health = 1
ORDER BY filed(role, “write”, “read”), gtid_count DESC
LIMIT 1。
其中,该SQL语句代表查找所有从数据库中健康的节点(从数据库)并且优先选择写入优化的节点再选择读取优化的节点,然后再从其中选择数据最多的节点。因此,当主数据库发生故障之后,会优先选择写入优化的从数据库进行故障转移,如果没有写入优化的从数据库,则选择读取优化的从数据库进行故障转移。
作为其他示例,如图2c所示,本发明提供的所述MySQL数据库系统可以是一个常见的数据库集群架构方式,采用一主两从,以提高主从架构的可用性。一般情况下,从数据库的服务器规格会相对主服务器规格低一些。对于该场景下的数据库集群要尽量保证性能好的数据库对外提供服务。具体的,该数据库系统包含一个主数据库A,两个从数据库B,C,其中所述主数据库A的服务器规格为16个处理器,32GB内存,2048GB存储,其第一标识可以为“cpu”:“16”、“memory”:“32”或“disk”:“2048”;所述从数据库B的服务器规格为16个处理器,32GB内存,2048GB存储,其第一标识可以为“cpu”:“16”、“memory”:“32”或“disk”:“2048”;所述从数据库C的服务器规格为8个处理器,16GB内存,2048GB存储,其第一标识可以为“cpu”:“8”、“memory”:“16”、“disk”:“2048”。
此时,所述在高可用软件上配置的自定义高可用决策SQL语句的内容可以包括:
SELECT candidates.id
FROM candidates
WHERE candidates.is_health = 1
ORDER BY cpu DESC, memory DESC, disk DESC, gtid_count DESC
LIMIT 1。
其中,该SQL语句代表查找所有从数据库中健康的节点(从数据库)并且,按优先级cpu、memory、disk、gitd_count 排序,即优先选择处理器最好、内存最好、存储最好、数据最多的节点。因此,当主数据库挂了之后会优先选择服务器性能最好的从数据库进行故障转移。
步骤S200,实时检测所述数据库系统内的主数据库是否发生故障。
步骤S300,当检测到所述主数据库发生故障时,检测所述数据库集群内所有从节点的运行状态,状态包含数据库是否故障,数据库事务数,复制类型。
在本实施例中,当服务器检测到预设的主数据库发生故障时,可以检测所述数据库系统内的所有从数据库的运行状态。示例性的,假设所述MySQL数据库系统当前包括三个从数据库,分别为从数据库B、从数据库C、从数据库D;那么,检测所有从数据库的运行状态的过程包括:检测到从数据库B的数据库连接正常非故障,则is_health为1,数据事务数为10000,即,gtid_count=10000,复制类型为半同步即replicate_type = semi_sync;检测到从数据库C的数据库连接正常非故障,则is_health为1,数据事务数为10001,即,gtid_count=10001,复制类型为半同步即replicate_type = semi_sync;检测到从数据库D的数据库连接正常非故障,则is_health为1,数据事务数为10002,即,gtid_count=10002,复制类型为异步即replicate_type = sync。
作为一种具体示例,在本发明的具体实施例中还提供了一种检测所述主数据库发生故障的步骤,包括:
首先,定时向所述主数据库发送连接请求,并检测是否接收到所述主数据库发送的反馈信息,所述反馈信息包括所述主数据库的IP地址。
其次,若检测结果为是,则确定所述主数据库未发生故障,若检测结果为否,则确定所述主数据库发生故障。
可选的方案,作为另一种具体示例,在本发明的具体实施例中还提供了检测所述主数据库发生故障的步骤,包括:
首先,定时向所述主数据库发送连接请求,并检测是否接收到所述主数据库发送的反馈信息,所述反馈信息包括所述主数据库的IP地址。
其次,若检测结果为是,则按照预设的探活SQL语句,进一步对所述MySQL数据库系统执行查询操作,并检测是否接收到所述主数据库发送的所述反馈信息,若无,则确定所述主数据库发生故障。
步骤S400,利用所述高可用软件分别生成包含所述主数据库的第一标识的第一数据库表格和包含所述从数据库的第一标识及其第二标识的第二数据库表格。
在本实施例中,可以利用所述高可用软件生成所述主数据库对应的第一数据库表格,如图3所示,所述第一数据库表格包括id和步骤S100中形成的用于标识不同主数据库的第一标识tag1~tagN,本例中tag仅为zone,其中,所述id为从或主数据库的ID(ID通常为一串标记数据库的唯一编码字符串)。同理,可以利用所述高可用软件生成所述从数据库对应的第二数据库表格,如图4所示,所述第二数据库表格包括id、如上步骤形成的用于标识不同主数据库的第一标识tag1到tagN,本例中tag仅为zone。之后,再将所述配置信息中的所述主数据库对应的第一标识插入到所述第一数据库表格中,如图5所示,并将所述从数据库对应的第一标识及其第二标识(运行状态)插入到所述第二数据库表格中,如图6所示。示例性的,如图5所示的主数据库对应的第一数据库表格具体可以如下:
如图6所示的从数据库对应的第二数据库表格具体可以如下:
或者,如图6所示的从数据库对应的第二数据库表格具体可以如下:
步骤S500,调用所述自定义高可用决策SQL语句对所述第一数据库表格和所述第二数据库表格执行查询操作,以在不同的主数据库故障场景下,从多个所述从数据库中按需选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库。
在本实施例中,所述高可用软件可以调用内嵌在其配置文件中的所述自定义高可用决策SQL语句,对所述包含有各所述从数据库信息(第一标识和第二标识)的第二数据库表格和所述第一数据表格执行查询操作,然后,得到所述SQL语句中指定的从数据库的从库的ID;换言之,所述自定义高可用决策SQL语句查询结果为指定一个从数据库的ID,所述的从数据库的ID为所指代的数据库系统中的从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库。示例性的,所述自定义高可用决策SQL语句决策出的所述从数据库为所述从数据库的位置信息与发生故障的所述主数据库的位置信息相同的从数据库,即从zone为shanghai的节点B,C中;且从数据库中健康的节点,即,非故障状态且数据量最多的节点的 id 列,即从节点C。
步骤S600,利用所述高可用软件对所述MySQL数据库系统进行主从切换,将所述最佳可切换从数据库设置为主数据库,以完成所述MySQL数据库系统的故障转移。
在本实施例中,在服务器上部署高可用软件之后,将根据实际需求编写的自定义高可用决策SQL语句内嵌到所述高可用软件的配置文件中,以通过设置和调用不同的自定义高可用决策SQL语句来实现MySQL数据库系统的主数据库发生不同的故障时,可用按需切换到预期的从数据库上,增加了MySQL数据库高可用软件在应对不同场景的通用性,缩短了当前主数据库失效至备用从数据库完全替代当前失效的主数据库之间的反应时间较长,并由于SQL语言是通用技术,因此,通过配置SQL语句的方式能够降低使用成本,进而最终提高整个高可用集群的运行性能。
基于相同的技术构思,相应于图1所示的方法实施例,本发明实施例还提供了一种MySQL数据库系统的高可用系统,具体的,所述高可用系统可以包括:至少一个主数据库、多个从数据库和服务器。
其中,所述主数据库和所述从数据库在所述服务器的控制下,直接复制数据,以使所述主数据库中和所述从数据库中存储有相同的数据信息。
所述服务器上部署有高可用软件,以用于在不同的主数据库故障场景下,通过所述高可用软件完成所述MySQL数据库系统的故障转移。
进一步的,所述高可用软件的配置文件中内嵌有自定义高可用决策SQL语句和每一数据库对应的第一标识,以使所述服务器通过调用所述自定义高可用决策SQL语句,从多个所述从数据库中选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库,其中,所述第一标识为用于标识所述数据库且不随所述数据库的运行状态而改变的数据信息。
综上所述,在本发明提供的MySQL数据库系统的故障转移方法中,在服务器上部署高可用软件之后,将根据实际需求编写的自定义高可用决策SQL语句内嵌到所述高可用软件的配置文件中,以通过设置和调用不同的自定义高可用决策SQL语句来实现MySQL数据库系统的主数据库发生不同的故障时,可用按需切换到预期的从数据库上,增加了MySQL数据库高可用软件在应对不同场景的通用性,缩短了当前主数据库失效至备用从数据库完全替代当前失效的主数据库之间的反应时间较长,并由于SQL语言是通用技术,因此,通过配置SQL语句的方式能够降低使用成本,进而最终提高整个高可用集群的运行性能。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现本发明实施例提供的一种MySQL数据库系统的故障转移方法。
具体的,上述一种MySQL数据库系统的故障转移方法,包括:预先生成所述高可用软件的配置文件,所述配置文件包括所述数据库系统内每一数据库对应的第一标识和自定义高可用决策SQL语句,其中,所述第一标识为用于标识所述数据库且不随所述数据库的运行状态而改变的数据信息。
实时检测所述数据库系统内的主数据库是否发生故障。
当检测到所述主数据库发生故障时,检测所述数据库系统内的所有从数据库的运行状态,并将所述运行状态作为每个所述从数据库的第二标识,其中,所述运行状态包括:从数据库是否发生故障、从数据库的事务数和从数据库的复制类型。
利用所述高可用软件分别生成包含所述主数据库的第一标识的第一数据库表格和包含所述从数据库的第一标识及其第二标识的第二数据库表格。
调用所述自定义高可用决策SQL语句对所述第一数据库表格和所述第二数据库表格执行查询操作,以在不同的主数据库故障场景下,从多个所述从数据库中按需选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库。
对所述MySQL数据库系统进行主从切换,将所述最佳可切换从数据库设置为主数据库,以完成所述MySQL数据库系统的故障转移。
另外,处理器701执行存储器703上所存放的程序而实现的MySQL数据库系统的故障转移方法的其他实现方式,与前述方法实施例部分所提及的实现方式相同,这里也不再赘述。
上述控制终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的MySQL数据库系统的故障转移方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备以及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种MySQL数据库系统的故障转移方法,应用于与所述MySQL数据库系统连接的服务器,所述MySQL数据库系统包括至少一个主数据库和多个从数据库,其特征在于,所述服务器上部署有高可用软件,所述故障转移方法包括:
预先生成所述高可用软件的配置文件,所述配置文件包括所述数据库系统内每一数据库对应的第一标识和自定义高可用决策SQL语句,其中,所述第一标识为用于标识所述数据库且不随所述数据库的运行状态而改变的数据信息;
实时检测所述数据库系统内的主数据库是否发生故障;
当检测到所述主数据库发生故障时,检测所述数据库系统内的所有从数据库的运行状态,并将所述运行状态作为每个所述从数据库的第二标识,其中,所述运行状态包括:从数据库是否发生故障、从数据库的事务数和从数据库的复制类型;
利用所述高可用软件分别生成包含所述主数据库的第一标识的第一数据库表格和包含所述从数据库的第一标识及其第二标识的第二数据库表格;
调用所述自定义高可用决策SQL语句对所述第一数据库表格和所述第二数据库表格执行查询操作,以在不同的主数据库故障场景下,从多个所述从数据库中按需选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库;
对所述MySQL数据库系统进行主从切换,将所述最佳可切换从数据库设置为主数据库,以完成所述MySQL数据库系统的故障转移。
2.如权利要求1所述的故障转移方法,其特征在于,所述数据库系统内的主数据库和从数据库的第一标识和第二标识的结构均为kv结构形式,且所述主数据库和从数据库的第一标识为由用户提前配置的用于区别各数据库的数据信息。
3.如权利要求2所述的故障转移方法,其特征在于,检测所述数据库系统内的所有从数据库的运行状态的步骤包括:
定时向所述数据库系统内的每个从数据库发送数据库连接请求,并判断连接是否成功;
若连接成功,则对各所述从数据库执行状态采集SQL语句,并获取各从数据库的GTID大小数据和从数据库的复制类型,并根据所述GTID大小数据计算各所述从数据库的事务数;否则,则确定所述数据库系统中的该从数据库发生故障。
4.如权利要求1所述的故障转移方法,其特征在于,检测所述主数据库发生故障的步骤,包括:
定时向所述主数据库发送连接请求,并检测是否接收到所述主数据库发送的反馈信息,所述反馈信息包括所述主数据库的IP地址;
若检测结果为否,则确定所述主数据库发生故障。
5.如权利要求1所述的故障转移方法,其特征在于,检测所述主数据库发生故障的步骤,包括:
定时向所述主数据库发送连接请求,并检测是否接收到所述主数据库发送的反馈信息,所述反馈信息包括所述主数据库的IP地址;
若检测结果为是,则按照预设的探活SQL语句,进一步对所述MySQL数据库系统执行查询操作,并在未接收到所述主数据库发送的所述反馈信息的情况下,确定所述主数据库发生故障。
6.如权利要求3所述的故障转移方法,其特征在于,所述第一标识包括所述数据库的ID,所述自定义高可用决策SQL语句由用户提前配置;
所述自定义高可用决策SQL语句的内容包括从所述第一数据库表格中和所述第二数据库表格中查找出至少一个所述从数据库的ID,并将所述从数据库的ID作为所述自定义高可用决策SQL语句的查询结果。
7.如权利要求6所述的故障转移方法,其特征在于,利用所述高可用软件分别生成包含所述主数据库的第一标识的第一数据库表格和包含各所述从数据库的第一标识及其第二标识的第二数据库表格的步骤包括:
利用所述高可用软件分别生成所述主数据库对应的第一数据库表格和所述从数据库对应的第二数据库表格;
将所述主数据库的第一标识插入到所述第一数据库表格中,并将所述从数据库的第一标识及其第二标识均插入到所述第二数据库表格中。
8.一种MySQL数据库系统的高可用系统,其特征在于,包括:至少一个主数据库、多个从数据库和服务器,其中,
所述主数据库和所述从数据库在所述服务器的控制下,直接复制数据,以使所述主数据库中和所述从数据库中存储有相同的数据信息;
所述服务器上部署有高可用软件,以用于在不同的主数据库故障场景下,通过所述高可用软件完成所述MySQL数据库系统的故障转移。
9.如权利要求8所述的MySQL数据库系统的高可用系统,其特征在于,所述高可用软件的配置文件中内嵌有自定义高可用决策SQL语句和每一数据库的第一标识,以使所述服务器通过调用所述自定义高可用决策SQL语句,从多个所述从数据库中选出至少一个从数据库作为当前主数据库故障场景下对应的最佳可切换从数据库,其中,所述第一标识为用于标识所述数据库且不随所述数据库的运行状态而改变的数据信息。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的MySQL数据库系统的故障转移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111083664.5A CN113535738B (zh) | 2021-09-16 | 2021-09-16 | MySQL数据库系统的故障转移方法、高可用系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111083664.5A CN113535738B (zh) | 2021-09-16 | 2021-09-16 | MySQL数据库系统的故障转移方法、高可用系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535738A true CN113535738A (zh) | 2021-10-22 |
CN113535738B CN113535738B (zh) | 2021-12-17 |
Family
ID=78093278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111083664.5A Active CN113535738B (zh) | 2021-09-16 | 2021-09-16 | MySQL数据库系统的故障转移方法、高可用系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535738B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933565A (zh) * | 2022-12-23 | 2023-04-07 | 广东职业技术学院 | 一种agv任务交换方法、装置、系统和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180260125A1 (en) * | 2017-03-10 | 2018-09-13 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
CN110413685A (zh) * | 2019-04-12 | 2019-11-05 | 财付通支付科技有限公司 | 数据库服务切换方法、装置、可读存储介质和计算机设备 |
CN110532278A (zh) * | 2019-10-30 | 2019-12-03 | 上海爱可生信息技术股份有限公司 | 声明式的MySQL数据库系统高可用方法 |
CN111209265A (zh) * | 2018-11-22 | 2020-05-29 | 华为技术有限公司 | 一种数据库切换方法和终端设备 |
CN111460039A (zh) * | 2020-04-07 | 2020-07-28 | 中国建设银行股份有限公司 | 关系型数据库处理系统、客户端、服务器及方法 |
CN112199356A (zh) * | 2020-12-09 | 2021-01-08 | 北京顺达同行科技有限公司 | 故障处理方法、装置、服务器以及存储介质 |
-
2021
- 2021-09-16 CN CN202111083664.5A patent/CN113535738B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180260125A1 (en) * | 2017-03-10 | 2018-09-13 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
CN111209265A (zh) * | 2018-11-22 | 2020-05-29 | 华为技术有限公司 | 一种数据库切换方法和终端设备 |
CN110413685A (zh) * | 2019-04-12 | 2019-11-05 | 财付通支付科技有限公司 | 数据库服务切换方法、装置、可读存储介质和计算机设备 |
CN110532278A (zh) * | 2019-10-30 | 2019-12-03 | 上海爱可生信息技术股份有限公司 | 声明式的MySQL数据库系统高可用方法 |
CN111460039A (zh) * | 2020-04-07 | 2020-07-28 | 中国建设银行股份有限公司 | 关系型数据库处理系统、客户端、服务器及方法 |
CN112199356A (zh) * | 2020-12-09 | 2021-01-08 | 北京顺达同行科技有限公司 | 故障处理方法、装置、服务器以及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933565A (zh) * | 2022-12-23 | 2023-04-07 | 广东职业技术学院 | 一种agv任务交换方法、装置、系统和介质 |
CN115933565B (zh) * | 2022-12-23 | 2023-10-20 | 广东职业技术学院 | 一种agv任务交换方法、装置、系统和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113535738B (zh) | 2021-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4648447B2 (ja) | 障害復旧方法、プログラムおよび管理サーバ | |
US10178168B2 (en) | Read-after-write consistency in data replication | |
CN109729129B (zh) | 存储集群系统的配置修改方法、存储集群及计算机系统 | |
US7191198B2 (en) | Storage operation management program and method and a storage management computer | |
US20100138687A1 (en) | Recording medium storing failure isolation processing program, failure node isolation method, and storage system | |
US20170293540A1 (en) | Failover of application services | |
US20020007470A1 (en) | File server storage arrangement | |
US20170206148A1 (en) | Cross-region failover of application services | |
CN106062717A (zh) | 一种分布式存储复制系统和方法 | |
CN105262633A (zh) | 一种应用级容灾方法及应用级容灾系统 | |
JP2005056392A (ja) | 地理的ミラーリングに関するリソースの妥当性検査およびランキングのための方法および装置 | |
CN104036043A (zh) | 一种mysql高可用的方法及管理节点 | |
CN106605217B (zh) | 用于将应用从一个站点移动到另一站点的方法和系统 | |
US20200125453A1 (en) | Systems and methods for cross-regional back up of distributed databases on a cloud service | |
CN113535738B (zh) | MySQL数据库系统的故障转移方法、高可用系统及电子设备 | |
EP3648405B1 (en) | System and method to create a highly available quorum for clustered solutions | |
US10169441B2 (en) | Synchronous data replication in a content management system | |
US20190079831A1 (en) | Providing consistency in a distributed data store | |
WO2015198449A1 (ja) | ストレージシステム | |
US10728326B2 (en) | Method and system for high availability topology for master-slave data systems with low write traffic | |
US10452321B2 (en) | Storage system and control method therefor | |
CN112202601B (zh) | 副本集模式运行的两物理节点mongo集群的应用方法 | |
JP2011081830A (ja) | サーバ切替方法、プログラムおよび管理サーバ | |
US7509302B2 (en) | Device, method and program for providing a high-performance storage access environment while issuing a volume access request including an address of a volume to access | |
WO2016046951A1 (ja) | 計算機システム及びそのファイル管理方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |