CN110825763B - 基于共享存储的MySQL数据库高可用系统及其高可用方法 - Google Patents
基于共享存储的MySQL数据库高可用系统及其高可用方法 Download PDFInfo
- Publication number
- CN110825763B CN110825763B CN202010015995.4A CN202010015995A CN110825763B CN 110825763 B CN110825763 B CN 110825763B CN 202010015995 A CN202010015995 A CN 202010015995A CN 110825763 B CN110825763 B CN 110825763B
- Authority
- CN
- China
- Prior art keywords
- database
- slave
- master
- nonce
- shared storage
- 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
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库技术领域,提供一种基于共享存储的MySQL数据库系统高可用系统,包括:主数据库、从数据库、数据库运维中心和共享存储服务器,其中,所述主数据库和所述从数据库在所述数据库运维中心的控制下,直接复制数据;所述共享存储服务器中设有与所述主数据库和所述从数据库一一对应的分区,所述分区用于存储相应数据库的binlog文件。本发明只将一直在刷新的日志文件binlog存储在共享存储服务器中,工作正常时,不同数据库只能操作与本数据库相对应的binlog文件,当主数据库出现异常时,主数据库的binlog文件被推送给从数据库,该从数据库可升级为主数据库,并继承主数据库中的所有内容,而当共享存储服务器出现异常时,并不影响各数据库中保存的数据本身。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种基于共享存储的MySQL数据库高可用系统及其高可用方法。
背景技术
当前主流的MySQL数据库高可用方法通常包括如下几种方式:
1.基于MySQL主从复制进行数据异步复制;
2.基于MySQL主从复制进行数据半同步复制;
3.基于MySQL组复制机制进行复制分布式协调;
4.基于DRBD(Distributed Replicated Block Device,分布式复制块设备)进行存储层的数据复制;
5.基于共享存储进行数据文件的复制。
但是上述方式都存在各自的缺陷。例如,方式1有很高概率产生主、从数据库之间的数据延迟,且数据容易丢失;方式2最大的缺点在于是能保障客户端看到的数据不会丢失,而不能保障写入磁盘的数据不会丢失;方式3的缺点在于部署和维护比较复杂,且对于客户端有限制,不能使用较大的事务;方式4的缺点在于复制性能较低,且当DRBD发生错误时,修复过程复杂,存在较大失败概率;方式5的缺点在于,若共享存储器发生故障,则其中的数据无法保全,且存在数据库各节点间发生“脑裂”的可能,这将导致各节点抢夺共享存储器控制权的情况。
发明内容
本发明的目的在于提供一种基于共享存储的MySQL数据库高可用系统及相应的高可用方法,用于进一步提高MySQL数据库系统的可用性。
共享存储是指两个或多个处理机(在数据库系统中可理解为主/从数据库)共用一个主存储器的并行体系结构。每一个处理机都可以把信息存入主存储器,或从中取出信息。处理机之间的通信通过访问共享存储器来实现。
在MySQL数据库中,binlog是一个二进制的日志文件,用于记录所有更新了数据或者已经潜在更新了数据(比如DELETE语句执行删除而实际并没有符合条件的数据)的所有语句。因为有了表示数据更新的binlog,在主数据库和从数据库的复制过程中,就可以通过查看binlog中的事件(例如通过语句show binlog events in 'binlogfile'实现)来实现实时备份。因此,binlog文件对于保持主、从数据库之间数据同步具有重大意义。
基于上述的特点,发明人认为,基于共享存储的数据库并不需要将所有数据、文件都保存在共享存储器(或者说共享存储服务器)中。将所有数据、文件都保存在一个存储器中相当于“将所有鸡蛋放在一个篮子中”,这样的做法风险高度集中,将导致背景技术中所述的数据无法保全的缺点。发明人认为,并通过实践证明,可以只将日志文件binlog保存在共享存储服务器中,而其他的数据和文件依旧分别保存在主、从数据库本地的存储器中,这样,无论主数据库、从数据库还是共享存储服务器三个网络节点中的任何一个节点出现故障时,都可以通过其他两个节点的数据和文件恢复出最完整的数据。
本发明首先提供了一种基于共享存储的MySQL数据库系统高可用系统,包括:主数据库、从数据库、数据库运维中心和共享存储服务器,其中,
所述主数据库和所述从数据库在所述数据库运维中心的控制下,直接复制数据;
所述共享存储服务器中设有与所述主数据库和所述从数据库一一对应的分区,所述分区用于存储相应数据库的binlog文件。
上述的基于共享存储的MySQL数据库高可用系统,其中,一主一从的数据库系统进行主从切换时,将主数据库的binlog文件推送给从数据库,所述从数据库根据所述主数据库的binlog文件补齐本地数据,并升级为新的主数据库。
上述的基于共享存储的MySQL数据库高可用系统,其中,一主多从的数据库系统进行主从切换时,将主数据库的binlog文件推送给一从数据库,所述从数据库根据所述主数据库的binlog文件补齐本地文件,并升级为新的主数据库;其余从数据库在所述数据库运维中心的控制下,直接复制所述新的主数据库中的数据。
本发明还提供了一种基于共享存储的MySQL数据库的高可用系统的高可用方法,所述数据库系统正常运行时,包括如下步骤:
所述主数据库与所述从数据库分别将自己的binlog文件存储在所述共享存储服务器的相应分区中;
在所述主数据库和所述从数据库之间直接复制数据。
上述的高可用方法,其中,所述主、从数据库之间的复制方法包括同步复制/半同步复制/异步复制。
上述的高可用方法,其中,在切换主、从数据库时,包括如下步骤:
所述从数据库读取并执行所述主数据库的binlog文件,生成的从数据库binlog文件写入与所述从数据库相对应的分区中。
本发明还提供了一种基于上述的高可用系统的fence方法,在主从切换过程中,结合数据库心跳和一fence状态字调整切换的流程,包括如下步骤:
A1、在所述主、从数据库中分别设置一个fence状态字,并初始化为不可fence对端(false);
A2、当所述高可用系统正常运行后,所述的fence状态字均更新为可fence对方(true);
A3、当所述主数据库检测到所述从数据库的心跳异常且状态无法确定时,若所述主数据库的fence状态字为可fence对方(true),则对所述从数据库进行fence操作,然后所述主数据库的fence状态字自动更新为不可fence对端(false);
A4、当所述从数据库检测到所述主数据库的心跳异常且状态无法确定时,若所述从数据库的fence状态字为可fence对方(true),则对所述主数据库进行fence操作,当所述从数据库提升为新的主数据库后,将所述新的主数据库的fence状态字更新为不可fence对端(false)。
上述的fence方法,其中,被fence的数据库将自身的fence状态持久化在磁盘中,使其不因重启而改变。
上述的fence方法,其中,在步骤A3或A4之后,当心跳恢复正常后,所述被fence的数据库退出持久化状态,同时,对端数据库中的fence状态字再次更新为可fence对方(true)。
上述的fence方法,其中,对SCSI操作的保留权的抢夺包括如下步骤:
B1、主、从数据库分别以标识自身的标识key M和key S注册对方的分区;
B2、主、从数据库分别检查各自分区中是否有对方的key S或key M;
B3、若B2的检查结果为否,则可抢夺对方分区的PR,进而读取对方的binlog文件,实现主从切换;
B4、若B2的检查结果为是,则进一步检查本分区中的PR显示的标识是否已不是自身的标识;
B5、若B4的检查结果为是,则说明已经发生了竞态,则睡眠随机时间后执行B1;若连续14次维持B4的检查结果为是,则执行B6;
B6、若B4的检查结果为否,则说明本数据库已进入被fence状态。
与现有技术相比,本发明将数据库系统中的文件予以区别,只将一直在刷新的日志文件binlog存储在共享存储服务器中,数据还是保存在各数据库的本地存储器中,并通过现有方式进行同步。不同数据库的binlog文件保存在共享存储服务器的不同分区中,在正常工作的情况下,不同数据库只能操作与本数据库相对应的binlog文件,当主数据库出现异常需要进行主从切换时,主数据库的binlog文件被推送给从数据库,从而该从数据库可升级为主数据库,并继承主数据库中的所有内容;当共享存储服务器出现异常时,并不影响各数据库中保存的数据本身。
而当数据库系统发生脑裂时,本发明又通过fence机制和持久化(PersistReservation)操作将工作状态异常的数据库隔离,保留工作正常的数据库作为主数据库。当异常的数据库恢复正常心跳后,才将其纳入数据库系统中作为从数据库开展正常工作,从而保证了系统中有且仅有一个数据库作为主数据库,进一步提高了数据库系统的稳定性,即高可用性。
附图说明
图1是共享存储服务器与数据库系统的架构图;
图2是本发明一实施例的系统示意图;
图3是本发明一实施例的流程图;
图4是本发明中抢夺保留权的流程图。
具体实施方式
为使本发明的目的、特征更明显易懂,下面结合附图对本发明的具体实施方式作进一步的说明。然而,本发明可以用不同的形式实现,不应只是局限在所述的实施例。且,在不冲突的情况下,本申请中的实施例及实施例中的特征允许相互组合或替换。结合以下的说明,本发明的优点和特征将更清楚。
需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
还需声明的是,本发明中对步骤编号的目的在于便于引用,而非限定先后顺序。对于个别需强调顺序的步骤,文中将以专门文字进行特别说明。
高可用集群(High Availability Cluster)是一种服务器集群技术,是提高系统服务可用性、保障业务系统连续性的有效解决方案。如背景技术所述,保证系统高可用的方法有多种,各有利弊。图1示出的是最简单的基于共享存储的高可用数据库系统。在具有一主一从两个数据库的系统中,主数据库负责向各网络节点提供数据库服务,而从数据库则处于监控和准备的状态。当主数据库服务不可用时,数据库运维中心(图中未示出)将检测到这一情况,并指示从数据库接管数据库服务,从数据库可以在不需要人工干预的情况下自动保证系统持续对各网络节点提供服务。在这一交接过程中,为了保障主、从数据库提供的数据的一致性,所述数据库系统通过共享存储的方式来进行数据访问。也就是说,当主数据库对外提供服务时,数据、文件等都保存在共享存储服务器中,从数据库与所述共享存储服务器不发生数据交换。在发现主数据库异常后,数据库运维中心停止主数据库对所述共享存储服务器的操作权限,通知从数据库建立与所述共享存储服务器的连接,进而实现资源转移,使从数据库成为主数据库,对各网络节点提供服务。在使用HA集群系统部署高可用数据库服务时,数据库的数据文件存储在共享存储系统(共享存储服务器)上,数据库实例运行在集群服务器(即运行主、从数据库的主机)上。当一个数据库实例或集群服务器出现异常,并不能影响到共享存储,系统可以顺利实现主从切换,避免了单点故障造成数据库服务的不可用。
但是,图1所示的系统中,当共享存储服务器出现异常时,数据库系统将不能持续提供服务。
根据发明内容部分所提出的思路,本发明提出了如图2所示的一种基于共享存储的MySQL数据库系统高可用系统。图2所示的系统可以说是图1所示系统的改进,改进点在于:主、从数据库之间建立单独的通道,用于复制数据;而共享存储服务器中只存储日志文件binlog文件,也就是说,共享存储服务器中只保存数据的更新情况。如此一来,共享存储服务器的故障将无法影响数据库本地保存的数据,相对传统的共享存储,本发明进一步保证了数据库的高可用性。
具体地,如图2所示,所述高可用系统包括主数据库、从数据库、数据库运维中心和共享存储服务器。所述主数据库和所述从数据库在所述数据库运维中心的控制下直接复制数据,在正常工作的流程下,数据流是从主数据库向从数据库复制。复制的方式包括多种,可按现有的数据库复制方式进行同步/半同步/异步复制。
而共享存储服务器的存储空间划分为多个分区,所述分区以逻辑分区为佳。一个所述binlog文件占据一个分区。所述分区与主、从数据库一一对应,即系统中有一个数据库,共享存储服务器中就有一个分区,且该分区在正常工作时只能由相应的数据库操作(读/写),其他数据库不能操作这一分区。由于binlog文件记录了更新数据或者潜在更新数据的所有语句,在主从切换过程中能一定程度补充数据完整性;而当共享存储服务器本身工作出现异常时,对存储在主数据库或从数据库的数据并不能产生任何影响。
综上,图2所示的系统在主从切换时,能做到RPO=0(其中,RPO的含义为:RecoveryPoint Object,恢复点目标);而当共享存储服务器发生故障时,数据库系统数据完全得以保全。
同时,本领域技术人员应知,上述的系统模型还可扩展应用到一主多从的数据库系统中,具体细节本文不多赘述。
基于图2所示的系统,本发明还提供了一种数据库系统高可用方法,具体地,所述方法包括:
当所述数据库系统正常运行时,所述主数据库与所述从数据库分别将自己的binlog文件存储在所述共享存储服务器的相应分区中;而数据则在主、从数据库之间直接复制。复制的方式包括同步复制、半同步复制和异步复制。
当所述数据库系统需要进行切换时,在数据库运维中心的控制下,主数据库停止向binlog(M)文件(保存在图2所示的分区1中)中写入数据,同时,如图2中虚线箭头所示,最新的那一版本的binlog(M)文件被推送到从数据库中,所述从数据库结合本地的数据和新接收到的binlog(M)文件更新本地数据并将更新后的binlog(S)文件写入共享存储服务器(保存在图2所示的分区2中)中。之后,数据库运维中心确认从数据库可升级为主数据库则可进入切换流量入口的流程。
进一步地,在切换主、从数据库时,包括如下步骤:所述从数据库读取并执行所述主数据库的binlog文件,生成的从数据库binlog文件写入与所述从数据库相对应的分区中。
之后,当数据库系统中包括一主多从多个数据库时,其余的从数据库在主从数据库切换成功后与新的主数据库进行数据复制。
更进一步地,以一主一从的数据库系统为例,在主从切换过程中,当链路已经断开,但是处于脑裂状态中的主数据库仍向共享存储服务器中写入(写入binlog(M)),而此时由于从数据库需要提升,因此该从数据库需要读出完整、正确的binlog(M)文件,那么此时共享存储服务器的读写就出现了竞争。所谓完整、正确的文件是指:当从数据库开始读取binlog(M)文件时,主数据库不能再对binlog(M)文件进行写操作,否则从数据库读取的是不正确的文件,从数据库永远无法不全数据。
为了使从数据库读取到完整、正确的binlog(M)文件,本发明提出,在切换的过程中,结合fence机制和PR(Persist Reservation,持久保留)操作实现对“脑裂”状态的数据库系统的隔离和恢复。fence机制的作用在于,隔离工作异常的数据库,使其不能再操作任何文件。以fence主数据库为例,在主从切换过程中,关闭主数据库(实例),或者关闭主数据库使用存储的链路,或者关闭主数据库使用的存储资源(即对主数据库关闭分区1的读写权)。后期,待主数据库恢复正常后,再申请重新加入数据库系统中,作为一个从数据库存在。
首先,需在所述数据库系统中可以引入心跳检测机制。所谓心跳检测机制指的是系统中所有数据库在空闲时段定时发送“心跳”脉冲,以表示自己仍“活着”。在一主一从的系统中,所述“心跳”脉冲可简单的在主从机之间相互发送,也可以由运维中心统一管理。在一主多从的数据库系统中,一般采用由数据库运维中心统一管理的模式,即所有数据库都向数据库运维中心发送所述“心跳”脉冲,数据库运维中心能够及时获知各数据库是否“活着”。如发现有“心跳”不正常的数据库,则做出相应应对。
在心跳检测机制的基础上,本发明公开了一种检测出“心跳”不正常后的fence方法。所述方法的特点在于:通过fence机制隔离“心跳”异常的数据库,使其不能再参与数据库系统的工作。Fence一词的本意是栅栏,在本发明中,fence机制可理解为一种隔离机制,即先通过心跳检测机制分辨工作异常的数据库,然后通过fence机制将所述数据库隔离,待该数据库恢复正常后再自行申请恢复工作。具体的,可以通过硬件或软件的方式,多渠道的实现隔离异常数据库的目的。例如,通过关掉异常数据库的电源来实现隔离;或者,通过关断异常数据库的接口操作权限的方式来实现隔离。
进一步地,为了防止出现数据库恢复过程中的重启或刷新之类的操作影响(主要指复位)到fenced的状态,本发明还提出了通过SCSI(Small Computer System Interface,小型计算机系统接口)的访问控制来“固化”fence状态的方案。即,各数据库都通过SCSI接口协议注册对共享存储服务器的保留权(Persist Reservation,PR)。当异常数据库被fence后,其对SCSI接口操作的PR也被取消,从而达到“双保险”的效果。
具体的,图3示出了一实际fence过程的步骤:
A1、在所述主、从数据库中分别设置一个状态字:FenceAbility,并初始化为false。其中,FenceAbility的含义为:当前节点是否可以fence对端节点。从另一个角度来说,在一主一从的数据库系统中,FenceAbility显示了对方节点是否能够正常工作。
A2、当所述高可用系统正常运行后,FenceAbility=true。
A3、当所述主数据库检测到所述从数据库的心跳异常且状态无法确定时,若所述主数据库的FenceAbility=true,则对所述从数据库进行fence操作,然后将所述主数据库FenceAbility=false。
A4、当所述从数据库检测到所述主数据库的心跳异常且状态无法确定时,若所述从数据库的FenceAbility=true,则对所述主数据库进行fence操作,当所述从数据库提升为新的主数据库后,将所述新的主数据库FenceAbility=false。
步骤A3和A4中所述的状态无法确定是指,无法明确对方数据库的工作状态,即不能确认对方在正常工作,也无法确定对方已处在异常状态。这一状态通常在系统脑裂时出现。
进一步的,在步骤A3和A4中,被fence的数据库将自身的fence状态持久化在本地磁盘中,使其不因重启而改变,以免在试图恢复该数据库的过程中因重启而误改变了fence的状态。
当然,FenceAbility持久化也存在失败的可能,此时可以重启本机的管理软件(或者说运维中心)。重启后存在两种可能:FenceAbility=true失败和FenceAbility=false失败。
如果是FenceAbility=false失败,则进一步存在如下两种情况:
其一,主数据库fence从数据库后持久化失败,那么,重启主数据库,如果主从之间的心跳尚未恢复,则主数据库再次进入fence从数据库的流程;
其二,从数据库提升成功,但是持久化失败,那么,重启提升后的从数据库,接着再次进入fence主数据库的流程。
如果是FenceAbility=true失败,则后续还将出现双主的情况,但此种情况在本发明中不再进一步做智能化处理。
进一步的,在步骤A3或A4之后,当心跳恢复正常后,原先被fence的数据库将fence状态的持久化声明取消,而对端的数据库则令状态字FenceAbility=true,从而使被fence的数据库具备恢复工作的条件。
具体的,在fence状态持久化过程中,由于存在以下竞态:主数据库对从数据库进行fence,要抢夺从数据库的写盘权(即要剥夺从数据库对共享存储服务器的PR);而同时,从数据库提升时,要抢夺主数据库的写盘权,以供自己读取主数据库的binlog文件。为了避免这个竞态一起双向fence,主、从数据库对SCSI操作的保留权的抢夺包括如下步骤,如图4所示:
B1、主、从数据库分别以标识自身的标识key M和key S注册对方的分区;
B2、主、从数据库分别检查各自分区中是否有对方的key S或key M;
B3、若B2的检查结果为否,则可抢夺对方分区的PR,进而读取对方的binlog文件,实现主从切换;
B4、若B2的检查结果为是,则进一步检查本分区中的PR显示的标识是否已不是自身的标识;
B5、若B4的检查结果为是,则说明已经发生了竞态,则睡眠随机时间后执行B1;若连续14次维持B4的检查结果为是,则执行B6;
B6、若B4的检查结果为否,则说明本数据库已进入被fence状态,需要人工干预。
事实上,步骤B4~B6为SCSI PR操作失败后的一个补偿动作。一方面,当主数据库用key M注册了从数据库后,由于PR失败,主数据库无法主动撤销该注册。此后,从数据库如果需要提升为主数据库,或者说,需要fence主数据库,则会等待一段时间,在此期间可反复尝试fence。这段时间在本实施例中为Random(1-4)*14秒。超过这一时间后,从数据库强制夺取主数据库的PR,继而进行fence、主从切换等后续步骤。如果是从数据库无法主动撤销注册,则过程类似。
另一方面,当主数据库持有从数据库注册的key S无法释放时,从数据库如果需要抢夺分区1,则从数据库需要等待一段时间(例如2*promote_limit_time时间)后判断主数据库是否仍持有从数据库注册的key S无法释放,若是,则认为主数据库无法主动释放keyS,可以尝试进行抢夺流程。
上述步骤以图2所示的系统架构而进行说明,事实上,本领域技术人员可知,若将上述步骤中的“分区”替换为磁盘或存储器,则上述的对保留权的抢夺步骤完全可移植到其他多存储的系统中。
上述的基于共享存储的高可用系统及高可用方法提出了将binlog文件存储在共享存储服务器中的方案,解决了现有的基于共享存储的高可用系统无法负担共享存储崩溃带来的后果的缺陷,进一步提高了数据库系统的可用性。
在高可用方法中细化的fence方法和PR争夺则降低了fence过程中竞态的风险,更进一步提高了数据库系统的可用性。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种基于共享存储的MySQL数据库高可用系统,其特征在于,包括:主数据库、从数据库、数据库运维中心和共享存储服务器,其中,
所述主数据库和所述从数据库在所述数据库运维中心的控制下,直接复制数据;
所述共享存储服务器只用于保存binlog文件,其中设有与所述主数据库和所述从数据库一一对应的分区,所述分区用于存储相应数据库的binlog文件;在切换主、从数据库时,所述从数据库接受所述数据库运维中推送的所述主数据库的binlog文件并执行,生成的从数据库binlog文件写入与所述从数据库相对应的分区中。
2.如权利要求1所述的基于共享存储的MySQL数据库高可用系统,其特征在于,一主一从的数据库系统进行主从切换时,将主数据库的binlog文件推送给从数据库,所述从数据库根据所述主数据库的binlog文件补齐本地数据,并升级为新的主数据库。
3.如权利要求1所述的基于共享存储的MySQL数据库高可用系统,其特征在于,一主多从的数据库系统进行主从切换时,将主数据库的binlog文件推送给一从数据库,所述从数据库根据所述主数据库的binlog文件补齐本地文件,并升级为新的主数据库;其余从数据库在所述数据库运维中心的控制下,直接复制所述新的主数据库中的数据。
4.一种基于如权利要求1-3任一项所述的高可用系统的高可用方法,其特征在于,所述数据库系统正常运行时,包括如下步骤:
所述主数据库与所述从数据库分别将自己的binlog文件存储在所述共享存储服务器的相应分区中;
在所述主数据库和所述从数据库之间直接复制数据。
5.如权利要求4所述的高可用方法,其特征在于,所述主、从数据库之间的复制方法包括同步复制/半同步复制/异步复制。
6.一种基于如权利要求2所述的高可用系统的fence方法,其特征在于,在主从切换过程中,结合数据库心跳和一fence状态字调整切换的流程,包括如下步骤:
A1、在所述主、从数据库中分别设置一个fence状态字,并初始化为不可fence对方;
A2、当所述高可用系统正常运行后,所述的fence状态字均更新为可fence对方;
A3、当所述主数据库检测到所述从数据库的心跳异常且状态无法确定时,若所述主数据库的fence状态字为可fence对方,则对所述从数据库进行fence操作,然后所述主数据库的fence状态字自动更新为不可fence对方;
A4、当所述从数据库检测到所述主数据库的心跳异常且状态无法确定时,若所述从数据库的fence状态字为可fence对方,则对所述主数据库进行fence操作,当所述从数据库提升为新的主数据库后,将所述新的主数据库的fence状态字更新为不可fence对方。
7.如权利要求6所述的fence方法,其特征在于,被fence的数据库将自身的fence状态持久化在磁盘中,使其不因重启而改变。
8.如权利要求7所述的fence方法,其特征在于,在步骤A3或A4之后,当心跳恢复正常后,所述被fence的数据库退出持久化状态,同时,对端数据库中的fence状态字再次更新为可fence对方。
9.如权利要求6所述的fence方法,其特征在于,同时还叠加对小型计算机系统接口SCSI操作的保留权的抢夺,包括如下步骤:
B1、主、从数据库分别以标识自身的标识key M和key S注册对方的分区;
B2、主、从数据库分别检查各自分区中是否有对方的key S或key M;
B3、若B2的检查结果为否,则抢夺对方分区的保留权PR,进而读取对方的binlog文件,实现主从切换;
B4、若B2的检查结果为是,则进一步检查本分区中的保留权PR显示的标识是否已不是自身的标识;
B5、若B4的检查结果为是,则说明已经发生了竞态,进一步判断,
若连续14次维持B4的检查结果为否,则睡眠随机时间后执行B1;
若连续14次维持B4的检查结果为是,则执行B6;
B6、若B4的检查结果为否,则说明本数据库已进入被fence状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010015995.4A CN110825763B (zh) | 2020-01-08 | 2020-01-08 | 基于共享存储的MySQL数据库高可用系统及其高可用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010015995.4A CN110825763B (zh) | 2020-01-08 | 2020-01-08 | 基于共享存储的MySQL数据库高可用系统及其高可用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825763A CN110825763A (zh) | 2020-02-21 |
CN110825763B true CN110825763B (zh) | 2020-05-19 |
Family
ID=69546543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010015995.4A Active CN110825763B (zh) | 2020-01-08 | 2020-01-08 | 基于共享存储的MySQL数据库高可用系统及其高可用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825763B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522880B (zh) * | 2020-04-24 | 2023-08-08 | 桂林电子科技大学 | 一种基于mysql数据库集群的提升数据读写性能的方法 |
CN112286729B (zh) * | 2020-11-03 | 2023-02-21 | 浪潮云信息技术股份公司 | 一种指定时间恢复的方法 |
CN113849351A (zh) * | 2021-09-30 | 2021-12-28 | 紫光云技术有限公司 | 一种MySQL高可用性的实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038157A (zh) * | 2017-12-05 | 2018-05-15 | 北京星河星云信息技术有限公司 | 主从数据库读写方法、系统、存储装置和服务器 |
CN108319617A (zh) * | 2017-01-17 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 确定数据库主从差异的方法、装置及切换控制方法、装置 |
CN108984569A (zh) * | 2017-06-05 | 2018-12-11 | 中兴通讯股份有限公司 | 数据库切换方法、系统和计算机可读存储介质 |
CN110019484A (zh) * | 2018-01-04 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 数据库系统及实现方法、管理设备、数据接口设备和介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019066A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据库处理方法及装置、系统 |
-
2020
- 2020-01-08 CN CN202010015995.4A patent/CN110825763B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319617A (zh) * | 2017-01-17 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 确定数据库主从差异的方法、装置及切换控制方法、装置 |
CN108984569A (zh) * | 2017-06-05 | 2018-12-11 | 中兴通讯股份有限公司 | 数据库切换方法、系统和计算机可读存储介质 |
CN108038157A (zh) * | 2017-12-05 | 2018-05-15 | 北京星河星云信息技术有限公司 | 主从数据库读写方法、系统、存储装置和服务器 |
CN110019484A (zh) * | 2018-01-04 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 数据库系统及实现方法、管理设备、数据接口设备和介质 |
Non-Patent Citations (1)
Title |
---|
mysql高可用;时光浅夏WK;《博客园:http://www.cnblogs.com/wangke2017/p/9754022.html》;20181022;第1-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110825763A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825763B (zh) | 基于共享存储的MySQL数据库高可用系统及其高可用方法 | |
CN109729129B (zh) | 存储集群系统的配置修改方法、存储集群及计算机系统 | |
Burrows | The Chubby lock service for loosely-coupled distributed systems | |
US9984140B1 (en) | Lease based leader election system | |
US7543181B2 (en) | Recovery from failures within data processing systems | |
WO2017128764A1 (zh) | 基于缓存集群的缓存方法和系统 | |
EP1179770B1 (en) | File system | |
JP4301849B2 (ja) | 情報処理方法及びその実施システム並びにその処理プログラム並びにディザスタリカバリ方法およびシステム並びにその処理を実施する記憶装置およびその制御処理方法 | |
US7613740B2 (en) | Control of a data replication engine using attributes associated with a transaction | |
US8086661B2 (en) | Method for resolving collisions in a database replication system by relaxing a constraint that contributes to collisions, or removing the cause of the constraint that contributes to the collisions | |
US7032089B1 (en) | Replica synchronization using copy-on-read technique | |
US10242027B2 (en) | Three phase commit for a distributed file system | |
US8667490B1 (en) | Active/active storage and virtual machine mobility over asynchronous distances | |
US20070220059A1 (en) | Data processing node | |
WO2016070375A1 (zh) | 一种分布式存储复制系统和方法 | |
US20070185924A1 (en) | Storage control method for storage system having database | |
US20100114817A1 (en) | Replication of operations on objects distributed in a storage system | |
US20040221149A1 (en) | Storage system and cluster maintenance | |
CN108958984B (zh) | 基于ceph的双活同步在线热备方法 | |
JP2005196683A (ja) | 情報処理システム、情報処理装置、及び情報処理システムの制御方法 | |
GB2484086A (en) | Reliability and performance modes in a distributed storage system | |
Oriani et al. | From backup to hot standby: High availability for hdfs | |
CN113646749B (zh) | Iot分区管理和负载平衡 | |
CN106325768B (zh) | 一种双机存储系统及方法 | |
CN113254275A (zh) | 一种基于分布式块设备的MySQL高可用架构方法 |
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 |