CN107016087A - 基于哨兵模型的层级数据库高可用系统 - Google Patents

基于哨兵模型的层级数据库高可用系统 Download PDF

Info

Publication number
CN107016087A
CN107016087A CN201710216849.6A CN201710216849A CN107016087A CN 107016087 A CN107016087 A CN 107016087A CN 201710216849 A CN201710216849 A CN 201710216849A CN 107016087 A CN107016087 A CN 107016087A
Authority
CN
China
Prior art keywords
sentry
master library
node
storehouse
module
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
Application number
CN201710216849.6A
Other languages
English (en)
Other versions
CN107016087B (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.)
Hangzhou Mingshitang Digital Technology Co ltd
Original Assignee
Hangzhou Ming Shitang Education And Science Development 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 Hangzhou Ming Shitang Education And Science Development Co Ltd filed Critical Hangzhou Ming Shitang Education And Science Development Co Ltd
Priority to CN201710216849.6A priority Critical patent/CN107016087B/zh
Publication of CN107016087A publication Critical patent/CN107016087A/zh
Application granted granted Critical
Publication of CN107016087B publication Critical patent/CN107016087B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing

Abstract

本发明公开了一种基于哨兵模型的层级数据库高可用系统,该系统包含客户端、哨兵单元、驱动单元和数据库集群。客户端通过配置哨兵单元的哨兵节点信息与驱动单元交互,从而访问数据库集群。哨兵单元包括为客户端提供服务,同时实时监控主库和从库存活状态,如果主库宕机实现主库故障自动切换,并且在切换过程中补偿差异数据,从而保证在主库故障时不丢失数据。驱动单元接收客户端传入的哨兵节点信息,解析后返回主库连接给客户端。数据库集群为层级数据库主从复制集群。本发明基于哨兵思想,并结合层级数据库特点对传统的哨兵进行了改进,不但可以实现主库故障自动切换,同时可以保证不丢失数据,最大限度保障服务的可用性和完整性。

Description

基于哨兵模型的层级数据库高可用系统
技术领域
本发明属于层级数据库技术领域,具体涉及一种基于哨兵模型的层级数据库高可用系统。
背景技术
层级数据库是基于LSM算法,数据按照不同层级(level)存储在硬盘上的高性能数据库。该数据库支持主从复制架构,分为主库节点和从库节点,主库实时产生增量日志,从库实时同步主库增量日志,增量日志的当前位置称之为同步偏移量;主库上未同步到从库的数据,称之为差异数据,可以通过层级数据库自身接口获取到;一般情况下,主库和从库的同步偏移量是一致的。
在生产环境中,常见的层级数据库使用方式如下:
一、直连方式
客户端在配置文件里设置主库的IP和端口以及用户名密码等信息。
缺点:
1)无任何高可用
这种方式下,一旦主库宕机,客户端读写请求全部失败,服务全部中断,并且服务恢复时间取决于人工处理的速度。
2)人工处理操作复杂
主库一旦宕机,需要人工处理,包括选择新主库,补偿差异数据,恢复新集群,修改客户端配置,操作步骤繁多复杂,时间较长。
3)数据丢失
在人工处理时,为了加快处理速度,缩短主库故障时间,往往忽略主库上的差异数据,造成部分数据丢失。
二、虚拟IP方式
客户端配置虚拟IP,虚拟IP后端挂载层级数据库主库IP和端口,如果主库宕机,需要修改虚拟IP配置,人工重新建立主库,然后将新主库配置到虚拟IP下面。
缺点:
1)主库故障无法自动切换
一旦主库故障,需要人工介入处理,无法实现故障自动切换,可用性比较低
2)操作复杂
需要人工处理,包括选择新主库,修改其他从库配置,以及虚拟IP配置,操作比较复杂,风险较大
3)依赖虚拟IP服务
虚拟IP服务自身存在高可用问题,增加维护成本,如果虚拟IP服务不稳定,同样影响数据库可用性。
4)数据丢失
主库宕机时,未同步到从库的这部分数据会丢失。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于哨兵模型的层级数据库高可用系统,基于哨兵思想,并结合层级数据库特点,对传统的哨兵进行了改进,设计的高可用方案,不但可以实现主库故障自动切换,同时可以保证不丢失数据,最大限度保障服务的可用性和完整性。
本发明的目的是通过以下技术方案来实现的:一种基于哨兵模型的层级数据库高可用系统,该系统包含客户端、哨兵单元、驱动单元和数据库集群四个部分。
所述客户端通过配置哨兵单元的哨兵节点信息,与驱动单元交互,从而访问数据库集群。所述哨兵节点信息包括哨兵节点的IP、端口、用户名密码、主库标识符。
所述哨兵单元包括至少三个哨兵节点,主库和从库节点必须部署哨兵节点;哨兵单元可以为客户端提供服务,同时实时监控主库和从库存活状态,如果主库宕机,可以实现主库故障自动切换,并且在切换过程中,补偿差异数据,从而保证在主库故障时不丢失数据。
所述驱动单元接收客户端传入的哨兵节点信息,解析后返回主库连接给客户端。
所述数据库集群为层级数据库主从复制集群,主库处理读写请求,从库可以作为备库,也可以接收读请求。
所述哨兵单元包含以下模块:
(1)哨兵节点初始化模块
启动每个哨兵节点时,需要传入以下参数:哨兵端口,主库IP和端口,用户名密码以及主库标识符;
启动后,根据数据库自身接口,该哨兵节点和主库建立通信,获取到主库和从库节点信息,分别保存在主库列表和从库列表里。其中,主库列表保存了主库IP,端口,主库标识符,状态和增量日志文件名;从库列表保存了从库的IP,端口,从库标识符,状态,增量日志文件名和同步偏移量。
(2)初始化哨兵集群模块
需要传入的参数为:所有哨兵节点的IP和端口;
哨兵节点初始化模块运行结束后,在任意一个节点上执行如下操作:根据传入的所有哨兵节点的IP和端口信息,和其他哨兵节点通信,在指定时间内收到回复,表示状态为存活,否则为故障;同时,保存哨兵节点的IP,端口,状态和角色到哨兵列表里,角色分为领导哨兵和从哨兵,一般情况下,与主库同机部署的哨兵节点,角色设置为领导哨兵,否则设置为从哨兵。
(3)管理哨兵集群模块
需要传入的参数:一个哨兵节点IP和端口;
功能:如果哨兵集群需要加入新的节点,首先根据哨兵节点初始化模块启动该节点,然后在哨兵集群中任意一个节点上执行如下操作:将新哨兵节点信息加入到哨兵列表里,同时,发送到其他哨兵节点,更新哨兵列表。这样,该节点就加入到了该集群;如果需要从该集群中去掉某个节点,首先停止该节点服务,然后发送这个节点信息到所有哨兵节点里,从哨兵列表里删除该节点信息。
(4)哨兵节点状态检测模块
根据哨兵列表,每个哨兵节点周期性检测其他哨兵节点状态,并更新哨兵列表,检测方式是执行PING命令,在限定时间内返回成功结果,表示存活,否则表示故障。
(5)选择领导哨兵模块
功能:首先调用哨兵节点状态检测模块,检测和主库同机部署的哨兵的存活状态,如果状态为存活,那么该哨兵的角色就是领导哨兵;否则,从哨兵列表里选择第一个存活哨兵节点,作为领导哨兵,如果没有获取到领导哨兵,返回错误;否则返回领导哨兵节点的IP和端口。
(6)管理主库节点模块
需要传入参数:主库标识符;
功能:首先调用选择领导哨兵模块,得到领导哨兵,然后,领导哨兵周期性执行该模块,比对主库节点和主库列表,如果不一致,则更新主库信息。如果主库状态为存活,返回成功,否则调用选举新主库模块,选择新主库。
(7)管理从库节点模块
需要传入参数:主库标识符和领导哨兵IP、端口;
领导哨兵周期性执行该模块,该模块功能如下:该模块首先调用管理主库节点模块,获取主库IP和端口信息,然后根据层级数据库自身的接口,获取到所有从库的IP和端口,状态和同步偏移量信息,并比对从库列表,如果不一致,则更新从库列表信息;从库列表里未匹配到的从库节点,将其从列表里删除。
(8)选举新主库模块
需要传入参数:主库标识符;
功能:领导哨兵调用管理从库节点模块,在从库列表中选择同步偏移量最大的那个从库,如果多个从库的同步偏移量都等于最大同步偏移量,选择从库列表的第一个符合条件的从库,作为新主库,然后调用补偿差异数据模块,否则返回错误。
(9)获取差异数据模块
需要传入的参数:领导哨兵IP和端口,主库标识符;
如果领导哨兵和故障主库的IP不一样,表示故障主库所在服务器宕机,或者该服务器上哨兵节点宕机,这种情况下,跳过此模块,调用重建从库服务模块;否则,领导哨兵根据主库列表中增量日志文件名,获取其最新的偏移量,比对新主库的最大同步偏移量,如果一样,表示不需要补偿增量日志,返回空值;否则,解析最大同步偏移量和故障主库最新偏移量之间的增量日志,称之为差异增量日志,返回差异增量日志信息。
(10)补偿差异数据模块
需要传入的参数:领导哨兵IP和端口,主库标识符和新主库IP以及端口;
功能:调用获取差异数据模块,如果存在差异数据,那么,调用层级数据库自身接口,同步这部分数据到新主库;否则跳过此模块,调用重建从库服务模块。
(11)重建从库服务模块
需要传入的参数:领导哨兵IP和端口,主库标识符和新主库IP以及端口;
领导哨兵调用补偿差异数据模块后,根据层级数据库自身接口,所有从库重新指向新主库,重新同步新主库的数据。故障主库自动切换过程完成。
所述驱动单元包换如下模块:
(1)建立哨兵连接模块
需要客户端传入参数如下:所有哨兵节点IP和端口,主库标识符和用户名密码等信息;
功能:遍历传入的哨兵节点,并扫描哨兵列表,获取到所有哨兵节点,扫描哨兵连接管理器,如果存在,继续遍历下一个哨兵节点;如果不存在,建立该哨兵对应的哨兵连接,添加到哨兵连接管理器里;遍历结束后,采用随机算法选择哨兵连接管理器中的一个哨兵连接,判断是否存活,如果存活,返回给客户端;否则,将其从连接管理器中删除,重新选择哨兵连接,如果所有哨兵连接均是故障,返回错误给客户端。
也就是说,第一次客户端访问哨兵节点,需要建立所有哨兵节点对应的哨兵连接,后续的客户端请求,不需要再建立哨兵连接,这样可以提高访问性能。
2)建立主库连接函数
需要传入的参数为:哨兵连接、主库标识符、用户名密码;
功能:扫描主库列表,选择主库标识符对应的主库IP和端口,如果状态为故障,返回错误给客户端;否则,与主库建立连接,如果身份验证通过,建立主库连接并返回给客户端;否则,返回错误给客户端。
本发明的有益效果是:
1)架构相对简单可靠:采用哨兵模型,技术成熟可靠,多个哨兵节点,避免了哨兵自身的高可用问题;
2)主库故障自动切换:哨兵集群实时监控主库,一旦发现主库故障,立即触发故障切换,在很短时间内完成主库自动切换切换过程不需要人工介入;
3)数据不丢失:哨兵获取故障主库未同步到从库的数据,补偿到新主库和从库中,保证数据不丢失,最大限度保证数据完整性;
4)操作自动化:主库故障切换,从库恢复,补偿差异数据,整个过程自动化,不需要人工干预;
5)可用性高:不需要人工处理,不需要修改客户端配置文件,在最短时间内自动恢复主库服务;
6)负载均衡:所有的哨兵,均可以同时承担客户端请求,从而实现负载均衡,提高吞吐量。
附图说明
图1是本发明系统整体架构图;
图2是本发明中哨兵单元的主要逻辑图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
图1是本发明系统整体架构图,客户端是指应用程序,配置哨兵集群中所有节点的IP和端口,用户名密码和主库标识符信息;驱动单元提供哨兵接口,可以通过哨兵节点获取到数据库集群(DB集群)的主节点和从节点,哨兵和数据库集群交互,最终,客户端得到主库连接,接下来就可以处理读写请求。
图2是本发明中哨兵单元的主要逻辑图。首先,哨兵节点周期性探测主节点状态,如果主节点状态正常,继续探测;如果主节点宕机,那么哨兵单元将选择领导哨兵,如果主节点服务器宕机或者主节点服务器上哨兵节点宕机,那么从其他哨兵节点中选择一个作为领导哨兵,然后执行重建数据库集群;如果主节点服务器上的哨兵节点存活,那么该哨兵节点被选举为领导节点,然后执行补偿差异数据操作,此时,宕机主节点上的差异数据将补偿到所有从节点,保证数据不丢失,然后再执行重建数据库集群,从而恢复数据库集群服务。
本发明系统的具体实现方式如下:本发明系统包含客户端、哨兵单元、驱动单元和数据库集群四个部分。
所述客户端通过配置哨兵单元的哨兵节点信息,与驱动单元交互,从而访问数据库集群。所述哨兵节点信息包括哨兵节点的IP、端口、用户名密码、主库标识符。
所述哨兵单元包括至少三个哨兵节点,主库和从库节点必须部署哨兵节点;哨兵单元可以为客户端提供(中间层)服务,同时实时监控主库和从库存活状态,如果主库宕机,可以实现主库故障自动切换,并且在切换过程中,补偿差异数据,从而保证在主库故障时不丢失数据。
所述驱动单元接收客户端传入的哨兵节点信息,解析后返回主库连接给客户端。
所述数据库集群为层级数据库主从复制集群(一主一从或者一主多从结构),主库处理读写请求,从库可以作为备库,也可以接收读请求。
本发明主要针对哨兵单元和驱动单元这两部分,具体描述如下:
一、哨兵单元包含以下模块:
(1)哨兵节点初始化模块
启动每个哨兵节点时,需要传入以下参数:哨兵端口,主库IP和端口,用户名密码以及主库标识符;
启动后,根据数据库自身接口,该哨兵节点和主库建立通信,获取到主库和从库节点信息,分别保存在主库列表和从库列表里。其中,主库列表保存了主库IP,端口,主库标识符,状态和增量日志文件名;从库列表保存了从库的IP,端口,从库标识符,状态,增量日志文件名和同步偏移量。
(2)初始化哨兵集群模块
需要传入的参数为:所有哨兵节点的IP和端口;
哨兵节点初始化模块运行结束后,在任意一个节点上执行如下操作:根据传入的所有哨兵节点的IP和端口信息,和其他哨兵节点通信,在指定时间内收到回复,表示状态为存活,否则为故障;同时,保存哨兵节点的IP,端口,状态和角色到哨兵列表里,角色分为领导哨兵和从哨兵,一般情况下,与主库同机部署的哨兵节点,角色设置为领导哨兵,否则设置为从哨兵。
(3)管理哨兵集群模块
需要传入的参数:一个哨兵节点IP和端口(如果是多个哨兵节点,则多次调用该模块);
功能:如果哨兵集群需要加入新的节点,首先根据哨兵节点初始化模块启动该节点,然后在哨兵集群中任意一个节点上执行如下操作:将新哨兵节点信息加入到哨兵列表里,同时,发送到其他哨兵节点,更新哨兵列表。这样,该节点就加入到了该集群;如果需要从该集群中去掉某个节点,首先停止该节点服务,然后发送这个节点信息到所有哨兵节点里,从哨兵列表里删除该节点信息。
说明:以上三个模块均为人工操作。
(4)哨兵节点状态检测模块
根据哨兵列表,每个哨兵节点周期性检测其他哨兵节点状态,并更新哨兵列表,检测方式是执行PING命令,在限定时间内返回成功结果,表示存活,否则表示故障。
(5)选择领导哨兵模块
功能:首先调用哨兵节点状态检测模块,检测和主库同机部署的哨兵的存活状态,如果状态为存活,那么该哨兵的角色就是领导哨兵;否则,从哨兵列表里选择第一个存活哨兵节点,作为领导哨兵,如果没有获取到领导哨兵,返回错误;否则返回领导哨兵节点的IP和端口。
(6)管理主库节点模块
需要传入参数:主库标识符;
功能:首先调用选择领导哨兵模块,得到领导哨兵,然后,领导哨兵周期性执行该模块,比对主库节点和主库列表,如果不一致,则更新主库信息。如果主库状态为存活,返回成功,否则调用选举新主库模块,选择新主库。
(7)管理从库节点模块
需要传入参数:主库标识符和领导哨兵IP、端口;
领导哨兵周期性执行该模块,该模块功能如下:该模块首先调用管理主库节点模块,获取主库IP和端口信息,然后根据层级数据库自身的接口,获取到所有从库的IP和端口,状态和同步偏移量信息,并比对从库列表,如果不一致,则更新从库列表信息;从库列表里未匹配到的从库节点,将其从列表里删除。
(8)选举新主库模块
需要传入参数:主库标识符;
功能:领导哨兵调用管理从库节点模块,在从库列表中选择同步偏移量最大的那个从库,如果多个从库的同步偏移量都等于最大同步偏移量,选择从库列表的第一个符合条件的从库,作为新主库,然后调用补偿差异数据模块,否则返回错误。
(9)获取差异数据模块
需要传入的参数:领导哨兵IP和端口,主库标识符;
如果领导哨兵和故障主库的IP不一样,表示故障主库所在服务器宕机,或者该服务器上哨兵节点宕机,这种情况下,跳过此模块,调用重建从库服务模块;否则,领导哨兵根据主库列表中增量日志文件名,获取其最新的偏移量,比对新主库的最大同步偏移量,如果一样,表示不需要补偿增量日志,返回空值;否则,解析最大同步偏移量和故障主库最新偏移量之间的增量日志,称之为差异增量日志,返回差异增量日志信息。
(10)补偿差异数据模块
需要传入的参数:领导哨兵IP和端口,主库标识符和新主库IP以及端口;
功能:调用获取差异数据模块,如果存在差异数据,那么,调用层级数据库自身接口,同步这部分数据到新主库;否则跳过此模块,调用重建从库服务模块。
(11)重建从库服务模块
需要传入的参数:领导哨兵IP和端口,主库标识符和新主库IP以及端口;
领导哨兵调用补偿差异数据模块后,根据层级数据库自身接口,所有从库重新指向新主库,重新同步新主库的数据。故障主库自动切换过程完成。
二、驱动单元,该部分和客户端交互,包换如下模块:
(1)建立哨兵连接模块
需要客户端传入参数如下:所有哨兵节点IP和端口,主库标识符和用户名密码等信息;
功能:遍历传入的哨兵节点,并扫描哨兵列表,获取到所有哨兵节点,扫描哨兵连接管理器(保存哨兵节点对应的哨兵连接),如果存在,继续遍历下一个哨兵节点;如果不存在,建立该哨兵对应的哨兵连接,添加到哨兵连接管理器里;遍历结束后,采用随机算法选择哨兵连接管理器中的一个哨兵连接,判断是否存活,如果存活,返回给客户端;否则,将其从连接管理器中删除,重新选择哨兵连接,如果所有哨兵连接均是故障,返回错误给客户端。
也就是说,第一次客户端访问哨兵节点,需要建立所有哨兵节点对应的哨兵连接,后续的客户端请求,不需要再建立哨兵连接,这样可以提高访问性能。
2)建立主库连接函数
需要传入的参数为:哨兵连接、主库标识符、用户名密码;
功能:扫描主库列表,选择主库标识符对应的主库IP和端口,如果状态为故障,返回错误给客户端;否则,与主库建立连接,如果身份验证(用户名密码正确)通过,建立主库连接并返回给客户端;否则,返回错误给客户端。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (1)

1.一种基于哨兵模型的层级数据库高可用系统,其特征在于,该系统包含客户端、哨兵单元、驱动单元和数据库集群四个部分。
所述客户端通过配置哨兵单元的哨兵节点信息,与驱动单元交互,从而访问数据库集群。所述哨兵节点信息包括哨兵节点的IP、端口、用户名密码、主库标识符。
所述哨兵单元包括至少三个哨兵节点,主库和从库节点必须部署哨兵节点;哨兵单元可以为客户端提供服务,同时实时监控主库和从库存活状态,如果主库宕机,可以实现主库故障自动切换,并且在切换过程中,补偿差异数据,从而保证在主库故障时不丢失数据。
所述驱动单元接收客户端传入的哨兵节点信息,解析后返回主库连接给客户端。
所述数据库集群为层级数据库主从复制集群,主库处理读写请求,从库可以作为备库,也可以接收读请求。
所述哨兵单元包含以下模块:
(1)哨兵节点初始化模块
启动每个哨兵节点时,需要传入以下参数:哨兵端口,主库IP和端口,用户名密码以及主库标识符;
启动后,根据数据库自身接口,该哨兵节点和主库建立通信,获取到主库和从库节点信息,分别保存在主库列表和从库列表里。其中,主库列表保存了主库IP,端口,主库标识符,状态和增量日志文件名;从库列表保存了从库的IP,端口,从库标识符,状态,增量日志文件名和同步偏移量。
(2)初始化哨兵集群模块
需要传入的参数为:所有哨兵节点的IP和端口;
哨兵节点初始化模块运行结束后,在任意一个节点上执行如下操作:根据传入的所有哨兵节点的IP和端口信息,和其他哨兵节点通信,在指定时间内收到回复,表示状态为存活,否则为故障;同时,保存哨兵节点的IP,端口,状态和角色到哨兵列表里,角色分为领导哨兵和从哨兵,一般情况下,与主库同机部署的哨兵节点,角色设置为领导哨兵,否则设置为从哨兵。
(3)管理哨兵集群模块
需要传入的参数:一个哨兵节点IP和端口;
功能:如果哨兵集群需要加入新的节点,首先根据哨兵节点初始化模块启动该节点,然后在哨兵集群中任意一个节点上执行如下操作:将新哨兵节点信息加入到哨兵列表里,同时,发送到其他哨兵节点,更新哨兵列表。这样,该节点就加入到了该集群;如果需要从该集群中去掉某个节点,首先停止该节点服务,然后发送这个节点信息到所有哨兵节点里,从哨兵列表里删除该节点信息。
(4)哨兵节点状态检测模块
根据哨兵列表,每个哨兵节点周期性检测其他哨兵节点状态,并更新哨兵列表,检测方式是执行PING命令,在限定时间内返回成功结果,表示存活,否则表示故障。
(5)选择领导哨兵模块
功能:首先调用哨兵节点状态检测模块,检测和主库同机部署的哨兵的存活状态,如果状态为存活,那么该哨兵的角色就是领导哨兵;否则,从哨兵列表里选择第一个存活哨兵节点,作为领导哨兵,如果没有获取到领导哨兵,返回错误;否则返回领导哨兵节点的IP和端口。
(6)管理主库节点模块
需要传入参数:主库标识符;
功能:首先调用选择领导哨兵模块,得到领导哨兵,然后,领导哨兵周期性执行该模块,比对主库节点和主库列表,如果不一致,则更新主库信息。如果主库状态为存活,返回成功,否则调用选举新主库模块,选择新主库。
(7)管理从库节点模块
需要传入参数:主库标识符和领导哨兵IP、端口;
领导哨兵周期性执行该模块,该模块功能如下:该模块首先调用管理主库节点模块,获取主库IP和端口信息,然后根据层级数据库自身的接口,获取到所有从库的IP和端口,状态和同步偏移量信息,并比对从库列表,如果不一致,则更新从库列表信息;从库列表里未匹配到的从库节点,将其从列表里删除。
(8)选举新主库模块
需要传入参数:主库标识符;
功能:领导哨兵调用管理从库节点模块,在从库列表中选择同步偏移量最大的从库,如果多个从库的同步偏移量都等于最大同步偏移量,选择从库列表的第一个符合条件的从库作为新主库,然后调用补偿差异数据模块,否则返回错误。
(9)获取差异数据模块
需要传入的参数:领导哨兵IP和端口,主库标识符;
如果领导哨兵和故障主库的IP不一样,表示故障主库所在服务器宕机,或者该服务器上哨兵节点宕机,这种情况下,跳过此模块,调用重建从库服务模块;否则,领导哨兵根据主库列表中增量日志文件名,获取其最新的偏移量,比对新主库的最大同步偏移量,如果一样,表示不需要补偿增量日志,返回空值;否则,解析最大同步偏移量和故障主库最新偏移量之间的增量日志,称之为差异增量日志,返回差异增量日志信息。
(10)补偿差异数据模块
需要传入的参数:领导哨兵IP和端口,主库标识符和新主库IP以及端口;
功能:调用获取差异数据模块,如果存在差异数据,那么,调用层级数据库自身接口,同步这部分数据到新主库;否则跳过此模块,调用重建从库服务模块。
(11)重建从库服务模块
需要传入的参数:领导哨兵IP和端口,主库标识符和新主库IP以及端口;
领导哨兵调用补偿差异数据模块后,根据层级数据库自身接口,所有从库重新指向新主库,重新同步新主库的数据。故障主库自动切换过程完成。
所述驱动单元包换如下模块:
(1)建立哨兵连接模块
需要客户端传入参数如下:所有哨兵节点IP和端口,主库标识符和用户名密码等信息;
功能:遍历传入的哨兵节点,并扫描哨兵列表,获取到所有哨兵节点,扫描哨兵连接管理器,如果存在,继续遍历下一个哨兵节点;如果不存在,建立该哨兵对应的哨兵连接,添加到哨兵连接管理器里;遍历结束后,采用随机算法选择哨兵连接管理器中的一个哨兵连接,判断是否存活,如果存活,返回给客户端;否则,将其从连接管理器中删除,重新选择哨兵连接,如果所有哨兵连接均是故障,返回错误给客户端。
2)建立主库连接函数
需要传入的参数为:哨兵连接、主库标识符、用户名密码;
功能:扫描主库列表,选择主库标识符对应的主库IP和端口,如果状态为故障,返回错误给客户端;否则,与主库建立连接,如果身份验证通过,建立主库连接并返回给客户端;否则,返回错误给客户端。
CN201710216849.6A 2017-04-05 2017-04-05 基于哨兵模型的层级数据库高可用系统 Active CN107016087B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710216849.6A CN107016087B (zh) 2017-04-05 2017-04-05 基于哨兵模型的层级数据库高可用系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710216849.6A CN107016087B (zh) 2017-04-05 2017-04-05 基于哨兵模型的层级数据库高可用系统

Publications (2)

Publication Number Publication Date
CN107016087A true CN107016087A (zh) 2017-08-04
CN107016087B CN107016087B (zh) 2018-05-22

Family

ID=59446076

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710216849.6A Active CN107016087B (zh) 2017-04-05 2017-04-05 基于哨兵模型的层级数据库高可用系统

Country Status (1)

Country Link
CN (1) CN107016087B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107968847A (zh) * 2017-11-13 2018-04-27 深圳市华阅文化传媒有限公司 高可用id生成器及其id生成方法和装置
CN108200157A (zh) * 2017-12-29 2018-06-22 北京奇虎科技有限公司 主节点触发回退的日志同步方法及装置
CN109039773A (zh) * 2018-09-06 2018-12-18 掌阅科技股份有限公司 网络通信监控方法、电子设备、存储介质
CN109656753A (zh) * 2018-12-03 2019-04-19 上海电科智能系统股份有限公司 一种应用于轨道交通综合监控系统的冗余热备系统
WO2019090780A1 (zh) * 2017-11-13 2019-05-16 深圳市华阅文化传媒有限公司 高可用id生成器及其id生成方法和装置
CN110019500A (zh) * 2017-08-21 2019-07-16 东软集团股份有限公司 一种复制组状态监控方法、装置、设备及存储介质
CN111078666A (zh) * 2019-12-11 2020-04-28 中国建设银行股份有限公司 基于跨中心多数据库的自动化卸数供数的方法
CN111104290A (zh) * 2019-12-26 2020-05-05 紫光云(南京)数字技术有限公司 数据库实例的巡检方法、装置及计算机存储介质
CN111124757A (zh) * 2019-12-16 2020-05-08 上海热璞网络科技有限公司 一种分布式事务数据库的数据节点心跳检测算法
CN111460039A (zh) * 2020-04-07 2020-07-28 中国建设银行股份有限公司 关系型数据库处理系统、客户端、服务器及方法
CN111813856A (zh) * 2020-07-01 2020-10-23 浪潮云信息技术股份公司 一种PostgreSQL高可用性的实现方法
CN111831489A (zh) * 2020-06-23 2020-10-27 新浪网技术(中国)有限公司 一种基于哨兵机制的MySQL故障切换方法及装置
CN111913978A (zh) * 2020-09-02 2020-11-10 上海优扬新媒信息技术有限公司 一种区块删除方法、装置及系统
CN114900372A (zh) * 2022-07-07 2022-08-12 南京智人云信息技术有限公司 基于零信任安全哨兵体系的资源防护系统

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110019500A (zh) * 2017-08-21 2019-07-16 东软集团股份有限公司 一种复制组状态监控方法、装置、设备及存储介质
CN107968847A (zh) * 2017-11-13 2018-04-27 深圳市华阅文化传媒有限公司 高可用id生成器及其id生成方法和装置
WO2019090780A1 (zh) * 2017-11-13 2019-05-16 深圳市华阅文化传媒有限公司 高可用id生成器及其id生成方法和装置
CN108200157A (zh) * 2017-12-29 2018-06-22 北京奇虎科技有限公司 主节点触发回退的日志同步方法及装置
CN108200157B (zh) * 2017-12-29 2020-12-25 北京奇虎科技有限公司 主节点触发回退的日志同步方法及装置
CN109039773A (zh) * 2018-09-06 2018-12-18 掌阅科技股份有限公司 网络通信监控方法、电子设备、存储介质
CN109039773B (zh) * 2018-09-06 2019-08-09 掌阅科技股份有限公司 网络通信监控方法、电子设备、存储介质
CN109656753A (zh) * 2018-12-03 2019-04-19 上海电科智能系统股份有限公司 一种应用于轨道交通综合监控系统的冗余热备系统
CN109656753B (zh) * 2018-12-03 2023-02-28 上海电科智能系统股份有限公司 一种应用于轨道交通综合监控系统的冗余热备系统
CN111078666A (zh) * 2019-12-11 2020-04-28 中国建设银行股份有限公司 基于跨中心多数据库的自动化卸数供数的方法
CN111078666B (zh) * 2019-12-11 2023-06-27 中国建设银行股份有限公司 基于跨中心多数据库的自动化卸数供数的方法
CN111124757A (zh) * 2019-12-16 2020-05-08 上海热璞网络科技有限公司 一种分布式事务数据库的数据节点心跳检测算法
CN111104290A (zh) * 2019-12-26 2020-05-05 紫光云(南京)数字技术有限公司 数据库实例的巡检方法、装置及计算机存储介质
CN111104290B (zh) * 2019-12-26 2022-11-25 紫光云(南京)数字技术有限公司 数据库实例的巡检方法、装置及计算机存储介质
CN111460039A (zh) * 2020-04-07 2020-07-28 中国建设银行股份有限公司 关系型数据库处理系统、客户端、服务器及方法
CN111831489A (zh) * 2020-06-23 2020-10-27 新浪网技术(中国)有限公司 一种基于哨兵机制的MySQL故障切换方法及装置
CN111813856A (zh) * 2020-07-01 2020-10-23 浪潮云信息技术股份公司 一种PostgreSQL高可用性的实现方法
CN111913978A (zh) * 2020-09-02 2020-11-10 上海优扬新媒信息技术有限公司 一种区块删除方法、装置及系统
CN111913978B (zh) * 2020-09-02 2023-07-25 度小满科技(北京)有限公司 一种区块删除方法、装置及系统
CN114900372A (zh) * 2022-07-07 2022-08-12 南京智人云信息技术有限公司 基于零信任安全哨兵体系的资源防护系统

Also Published As

Publication number Publication date
CN107016087B (zh) 2018-05-22

Similar Documents

Publication Publication Date Title
CN107016087B (zh) 基于哨兵模型的层级数据库高可用系统
US10713134B2 (en) Distributed storage and replication system and method
US11894972B2 (en) System and method for data replication using a single master failover protocol
US11899684B2 (en) System and method for maintaining a master replica for reads and writes in a data store
US10282262B2 (en) Non-disruptive controller replacement in a cross-cluster redundancy configuration
US20200364119A1 (en) Techniques for lif placement in san storage cluster synchronous disaster recovery
CA2938768C (en) Geographically-distributed file system using coordinated namespace replication
US10248704B2 (en) System and method for log conflict detection and resolution in a data store
US9639437B2 (en) Techniques to manage non-disruptive SAN availability in a partitioned cluster
CN109729129A (zh) 存储集群的配置修改方法、存储集群及计算机系统
US20150172111A1 (en) Techniques for san storage cluster synchronous disaster recovery
CN105407117B (zh) 分布式备份数据的方法、装置和系统
CN104468163A (zh) 容灾网络组网的方法、装置及容灾网络
CN104410531B (zh) 冗余的系统架构方法
CN107147507A (zh) 一种软件定义网络的控制平面构架以及控制方法
CN105069152A (zh) 数据处理方法及装置
CN103220373B (zh) 一种分布式逻辑地址与物理地址互换方法、装置及设备
CN114363350A (zh) 一种服务治理系统及方法
CN110266795A (zh) 一种基于Openstack平台控制方法
CN107231308B (zh) 一种跨站点基础数据智能学习及链路预查找方法
CN104331754A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: 310000 room 801, 8th floor, building 1, No. 108 Xiangyuan Road, Gongshu District, Hangzhou City, Zhejiang Province

Patentee after: Hangzhou mingshitang Digital Technology Co.,Ltd.

Address before: 310019 room 507, floor 5, building A15, No. 9, Jiusheng Road, Jianggan District, Hangzhou, Zhejiang Province

Patentee before: HANGZHOU MISTONG EDUCATION SCIENCE & TECHNOLOGY DEVELOPMENT CO.,LTD.