CN107016087A - 基于哨兵模型的层级数据库高可用系统 - Google Patents
基于哨兵模型的层级数据库高可用系统 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates 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和端口,如果状态为故障,返回错误给客户端;否则,与主库建立连接,如果身份验证通过,建立主库连接并返回给客户端;否则,返回错误给客户端。
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)
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 | 南京智人云信息技术有限公司 | 基于零信任安全哨兵体系的资源防护系统 |
-
2017
- 2017-04-05 CN CN201710216849.6A patent/CN107016087B/zh active Active
Cited By (20)
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. |