CN114816851A - mysql主备模式下应用层容错方法及系统 - Google Patents
mysql主备模式下应用层容错方法及系统 Download PDFInfo
- Publication number
- CN114816851A CN114816851A CN202210421010.7A CN202210421010A CN114816851A CN 114816851 A CN114816851 A CN 114816851A CN 202210421010 A CN202210421010 A CN 202210421010A CN 114816851 A CN114816851 A CN 114816851A
- Authority
- CN
- China
- Prior art keywords
- database
- service
- access control
- control system
- application layer
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000001360 synchronised effect Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 9
- 230000010076 replication Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/1448—Management of the data involved in backup or backup restore
-
- 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
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
- G06F21/1078—Logging; Metering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了mysql主备模式下应用层容错方法及系统,属于数据库容灾技术领域,本发明要解决的技术问题为mysql主备同步机制可能导致的数据不一致,采用的技术方案为:该方法具体如下:部署应用层数据库;部署未同步数据访问控制系统数据库表;应用层登录未同步数据访问控制系统;应用层写业务表。该系统包括部署模块一、部署模块二、登录模块及写模块,用于应用层写业务表。
Description
技术领域
本发明涉及数据库容灾技术领域,具体地说是一种mysql主备模式下应用层容错方法及系统。
背景技术
随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题,系统架构也在不断演进。传统的集中式系统已经逐渐无法满足要求,分布式系统被使用在更多的场景中。
对系统可用性以及数据可靠性的要求,决定了底层数据库需要提供备份,防止由于数据库故障造成整个系统的不可用或者数据丢失。然而,在分布式系统中,其环境的复杂度、网络的不确定性会给节点间的状态同步造成很大的困难。存在于集中式系统中的机器宕机、消息丢失等问题也会在分布式环境中变得更加复杂。这就对数据库多副本的数据一致性提出了更高的要求。
现实中很多业务场景比如金融系统对数据的可靠性以及系统可用性要求很高,根据CAP理论,系统必须要对可靠性、可用性和分区容忍性进行取舍,于是出现了很多适用于分布式系统的协议,例如paxos、raft等,可以比较理想的解决系统的可用性和可靠性。为了解决分布式节点数据一致性,出现了一些理论和方案,比如CAP理论、分布式一致性协议Paxos、Raft、Zab等。这些方法很好的解决了分布式系统数据一致性问题。
最强的一致性实现比如同步双写,虽然完全杜绝了数据副本的数据不一致问题,但是由于任何副本故障都导致系统无法正常提供服务,所以不满足大多数业务场景。而mysql提供了异步复制、半同步等主备节点之间同步方案,可以保证系统的可用性。但是异步复制模式下binlog通过异步的方式发送到备库,主库事务提交不关心binlog是否已经发送到备库。半同步复制下主库等待binlog发到备库relay_log后进行事务的提交。其中异步复制适用于低延迟并且对数据一致性性要求不高的场景,半同步复制适用于对一致性要求高一些的场景。但是两种同步方案,都不能保证故障时的数据一致性。
故如何解决mysql主备同步机制可能导致的数据不一致是目前现有技术中存在的技术问题。
发明内容
本发明的技术任务是提供一种mysql主备模式下应用层容错方法及系统,来解决mysql主备同步机制可能导致的数据不一致的问题。
本发明的技术任务是按以下方式实现的,一种mysql主备模式下应用层容错方法,该方法具体如下:
部署应用层数据库;
部署未同步数据访问控制系统数据库表;
应用层登录未同步数据访问控制系统;
应用层写业务表。
作为优选,部署应用层数据库具体如下:
开启mysql主备异步复制模式;
在业务表增加预写版本号字段,该预写版本号用于写入未同步数据库访问控制系统返回值。
更优地,未同步数据访问控制系统数据库表的字段包括业务ID、数据库ID、业务表名、主键列名、主键值及预写版本号;
其中,业务ID用于给业务层分配的ID,区分不同业务;
数据库ID是指业务数据库ID,在应用层登录时,把业务数据库部署信息注册到未同步数据库访问控制系统;
未同步数据访问控制系统数据库表的预写版本号用于核对业务备库里该未同步记录是否已同步。
作为优选,应用层登录未同步数据访问控制系统具体如下:
应用层向未同步数据库访问控制系统发送登录请求;
其中,应用层请求的内容包括用户名、登录时间戳、主库ID和/或主库连接信息、备库ID和/或连接信息列表以及摘要信息;
未同步数据库访问控制系统响应的内容包括返回码、业务ID以及Token;业务ID表示唯一标识该用户;未同步数据库访问控制系统响应的Token表示(用户名|登录时间戳|主库ID|备库ID列表|业务ID)签名;
登录鉴权:未同步数据库访问控制系统通过本地数据库中该用户对应的密码,使用该用户对应的密码对请求消息进行加密,获得摘要信息,与请求里的摘要信息进行比对,判断是否相同:
若相同,则鉴权通过。
作为优选,应用层写业务表具体如下:
预先请求未同步数据访问控制系统,查看是否允许写入;
请求方收到允许写入响应消息后,应用层请求写业务数据库并把返回的预写版本号更新到业务表;
由于业务表所在的mysql集群开启了主备异步复制,正常情况很短的时间内该写入操作包括该记录的预写版本号会被同步到各个备库;
未同步数据访问控制系统根据预写版本号周期核对该写入操作是否已同步到各个备库;
根据登录信息中的各个数据库节点连接信息,去对应的备库查询该条记录预写版本号,与本地预写版本号进行对比,判断预写版本号是否相同:
若相同,则从未同步数据访问控制系统数据库表(UNSYNC_TABLE表)擦除对应的记录;
当mysql单点故障并发生主备切换时,应用层需要重新登录,并携带最新的主备数据库信息;并且预写请求中需要携带最新的Header信息,同时根据是否允许写入判断逻辑,会自动启用该新主库的访问控制表,进行写入访问控制;
当mysql故障恢复后,根据各个备库的未同步数据访问控制系统数据库表(UNSYNC_TABLE表),从故障节点恢复数据。
更优地,是否允许写入判断如下:
通过Header中业务ID、主库ID信息以及请求参数,查询未同步数据访问控制系统数据库表(UNSYNC_TABLE表)是否为空:
若查询到结果不为空,则表示未同步数据访问控制系统数据库表(UNSYNC_TABLE表)的这条记录上次的写操作还未同步到本节点,本次不允许写入,并向应用层返回不允许写入;
若否,则生成预写版本号,并根据请求消息体中的业务表名、主键列名、主键值、Header中业务ID、业务备库ID列表(作为UNSYNC_TABLE表中的数据库ID字段,拆分成几条数据库ID)和预写版本号向未同步数据访问控制系统数据库表(UNSYNC_TABLE表)插入几条记录;再给请求方返回允许写入响应消息;
其中,请求方请求的内容包括Header{用户名|登录时间戳|主库ID|备库ID列表|业务ID+登录token}、业务表名、主键列表、主键值以及业务回调数据;登录token是在登录时由未同步数据访问控制系统下发;未同步数据访问控制系统根据Header中的信息校验token是否合法:若不合法,则忽略该请求;请求方请求的业务回调数据是由请求方填写,用于唯一标识该请求,方便返回后触发对应的逻辑;
请求方响应的内容包括是否允许写入、预写版本号以及业务回调数据;请求方响应的预写版本号是由未同步数据访问控制系统生成,用于标识该条业务数据的写版本;请求方响应的业务回调数据用于透传字段,由请求端填写。
作为优选,未同步数据库访问控制系统的节点部署具体如下:
未同步数据访问控制系统采用主备多节点部署,主备多节点连接同一个数据库,正常情况下仅有主节点提供服务;
当主节点故障时,屏蔽主节点,备用节点升级为主节点,从数据库拉取全量未同步列表至缓存后,开始提供服务;
当数据库节点故障时,写操作降级为预写日志加写缓存,等数据库节点回复后,将全量缓存刷入数据库节点。
一种mysql主备模式下应用层容错系统,该系统包括,
部署模块一,用于部署应用层数据库;
部署模块二,用于部署未同步数据访问控制系统数据库表;
登录模块,用于应用层登录未同步数据访问控制系统;
写模块,用于应用层写业务表。
一种电子设备,包括:存储器和至少一个处理器;
其中,所述存储器上存储有计算机程序;
所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如上述的mysql主备模式下应用层容错方法。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如上述的mysql主备模式下应用层容错方法。
本发明的mysql主备模式下应用层容错方法及系统具有以下优点:
(一)本发明提供一种简单的mysql主备同步模式下未同步数据访问控制机制,主要解决mysql主备同步机制可能导致的数据不一致问题;
(二)本发明只额外实现未同步数据访问控制逻辑,不需要实现分布式一致性协议,实现简单,并且由于不是采用传统quorum机制,不需要过半节点存活,提高了系统的可用性;
(三)本发明引入了一种未同步数据访问控制系统,保证数据在主备切换前后的数据可靠性;在mysql单点故障发生主备切换时屏蔽个别不一致记录的访问,在故障恢复后重新同步不一致记录;上层应用在数据库单点故障时不需要停止对外服务,保证了系统的基本可用以及数据的可靠性;
(四)本发明借助mysql自身同步机制,增加未同步数据访问控制,逻辑相对简单,易于实现稳定的服务,提升了服务可用性及可靠性;
(五)由于大部分时候,数据是正常同步的,未同步数据访问控制系统的未同步记录列表为空,额外存储开销很小;
(六)本发明不需要quorum机制那样需要过半节点存活,极端情况只剩一个mysql节点也可提供对外服务,提高了系统的可用性;
(七)本发明通过引入未同步数据访问控制机制,牺牲故障时小部分数据访问可用性,换取系统总体的可用性以及数据的一致性。
附图说明
下面结合附图对本发明进一步说明。
附图1为mysql主备模式下应用层容错方法的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的mysql主备模式下应用层容错方法及系统作以下详细地说明。
实施例1:
如附图1所示,本发明的mysql主备模式下应用层容错方法,该方法具体如下:
S1、部署应用层数据库;
S2、部署未同步数据访问控制系统数据库表;
S3、应用层登录未同步数据访问控制系统;
S4、应用层写业务表。
本实施例步骤S1中的部署应用层数据库具体如下:
S101、开启mysql主备异步复制模式;
S102、在业务表增加预写版本号字段,该预写版本号用于写入未同步数据库访问控制系统返回值,如下表所示:
主键 | 字段1 | 字段2… | 预写版本号 |
本实施例中的未同步数据访问控制系统数据库表的字段包括业务ID、数据库ID、业务表名、主键列名、主键值及预写版本号;如下表所示:
业务ID | 数据库ID | 业务表名 | 主键列名 | 主键值 | 预写版本号 |
其中,业务ID用于给业务层分配的ID,区分不同业务;
数据库ID是指业务数据库ID,在应用层登录时,把业务数据库部署信息注册到未同步数据库访问控制系统;
未同步数据访问控制系统数据库表的预写版本号用于核对业务备库里该未同步记录是否已同步。
本实施例步骤S3中的应用层登录未同步数据访问控制系统具体如下:
S301、应用层向未同步数据库访问控制系统发送登录请求;
其中,应用层请求的内容包括用户名、登录时间戳、主库ID和/或主库连接信息、备库ID和/或连接信息列表以及摘要信息;如下表所示:
未同步数据库访问控制系统响应的内容包括返回码、业务ID以及Token;业务ID表示唯一标识该用户;未同步数据库访问控制系统响应的Token表示(用户名|登录时间戳|主库ID|备库ID列表|业务ID)签名;如下表所示:
返回码 | 业务ID | Token |
S302、登录鉴权:未同步数据库访问控制系统通过本地数据库中该用户对应的密码,使用该用户对应的密码对请求消息进行加密,获得摘要信息,与请求里的摘要信息进行比对,判断是否相同:
若相同,则鉴权通过。
本实施例步骤S4中的应用层写业务表具体如下:
S401、预先请求未同步数据访问控制系统,查看是否允许写入;
S402、请求方收到允许写入响应消息后,应用层请求写业务数据库并把返回的预写版本号更新到业务表;
S403、由于业务表所在的mysql集群开启了主备异步复制,正常情况很短的时间内该写入操作包括该记录的预写版本号会被同步到各个备库;
S404、未同步数据访问控制系统根据预写版本号周期核对该写入操作是否已同步到各个备库;
S405、根据登录信息中的各个数据库节点连接信息,去对应的备库查询该条记录预写版本号,与本地预写版本号进行对比,判断预写版本号是否相同:
若相同,则从UNSYNC_TABLE表擦除对应的记录;
S406、当mysql单点故障并发生主备切换时,应用层需要重新登录,并携带最新的主备数据库信息;并且预写请求中需要携带最新的Header信息,同时根据是否允许写入判断逻辑,会自动启用该新主库的访问控制表,进行写入访问控制;
S407、当mysql故障恢复后,根据各个备库的UNSYNC_TABLE表,从故障节点恢复数据。
本实施例步骤S401中的是否允许写入判断如下:
S40101、通过Header中业务ID、主库ID信息以及请求参数,查询UNSYNC_TABLE表是否为空:
若查询到结果不为空,则表示UNSYNC_TABLE表的这条记录上次的写操作还未同步到本节点,本次不允许写入,并向应用层返回不允许写入;
若否,则生成预写版本号,并根据请求消息体中的业务表名、主键列名、主键值、Header中业务ID、业务备库ID列表(作为UNSYNC_TABLE表中的数据库ID字段,拆分成几条数据库ID)和预写版本号向UNSYNC_TABLE表插入几条记录;再给请求方返回允许写入响应消息;
其中,请求方请求的内容包括Header{用户名|登录时间戳|主库ID|备库ID列表|业务ID+登录token}、业务表名、主键列表、主键值以及业务回调数据;登录token是在登录时由未同步数据访问控制系统下发;未同步数据访问控制系统根据Header中的信息校验token是否合法:若不合法,则忽略该请求;请求方请求的业务回调数据是由请求方填写,用于唯一标识该请求,方便返回后触发对应的逻辑;如下表所示:
请求方响应的内容包括是否允许写入、预写版本号以及业务回调数据;请求方响应的预写版本号是由未同步数据访问控制系统生成,用于标识该条业务数据的写版本;请求方响应的业务回调数据用于透传字段,由请求端填写;如下表所示:
是否允许写入 | 预写版本号 | 业务回调数据 |
本实施例中的未同步数据库访问控制系统的节点部署具体如下:
(1)、未同步数据访问控制系统采用主备多节点部署,主备多节点连接同一个数据库,正常情况下仅有主节点提供服务;
(2)、当主节点故障时,屏蔽主节点,备用节点升级为主节点,从数据库拉取全量未同步列表至缓存后,开始提供服务;
(3)、当数据库节点故障时,写操作降级为预写日志加写缓存,等数据库节点回复后,将全量缓存刷入数据库节点。
实施例2:
本实施例提供了一种mysql主备模式下应用层容错系统,该系统包括,
部署模块一,用于部署应用层数据库;
部署模块二,用于部署未同步数据访问控制系统数据库表;
登录模块,用于应用层登录未同步数据访问控制系统;
写模块,用于应用层写业务表。
实施例3:
本实施例还提供了一种电子设备,包括:存储器和处理器;
其中,存储器存储计算机执行指令;
处理器执行所述存储器存储的计算机执行指令,使得处理器执行本发明任一实施例中的mysql主备模式下应用层容错方法。
处理器可以是中央处理单元(,CPU),还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通过处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可用于储存计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现电子设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器还可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,只能存储卡(SMC),安全数字(SD)卡,闪存卡、至少一个磁盘存储期间、闪存器件、或其他易失性固态存储器件。
实施例4:
本发明实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的mysql主备模式下应用层容错方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RYM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种mysql主备模式下应用层容错方法,其特征在于,该方法具体如下:
部署应用层数据库;
部署未同步数据访问控制系统数据库表;
应用层登录未同步数据访问控制系统;
应用层写业务表。
2.根据权利要求1所述的mysql主备模式下应用层容错方法,其特征在于,部署应用层数据库具体如下:
开启mysql主备异步复制模式;
在业务表增加预写版本号字段,该预写版本号用于写入未同步数据库访问控制系统返回值。
3.根据权利要求2所述的mysql主备模式下应用层容错方法,其特征在于,未同步数据访问控制系统数据库表的字段包括业务ID、数据库ID、业务表名、主键列名、主键值及预写版本号;
其中,业务ID用于给业务层分配的ID,区分不同业务;
数据库ID是指业务数据库ID,在应用层登录时,把业务数据库部署信息注册到未同步数据库访问控制系统;
未同步数据访问控制系统数据库表的预写版本号用于核对业务备库里该未同步记录是否已同步。
4.根据权利要求1所述的mysql主备模式下应用层容错方法,其特征在于,应用层登录未同步数据访问控制系统具体如下:
应用层向未同步数据库访问控制系统发送登录请求;
其中,应用层请求的内容包括用户名、登录时间戳、主库ID和/或主库连接信息、备库ID和/或连接信息列表以及摘要信息;
未同步数据库访问控制系统响应的内容包括返回码、业务ID以及Token;业务ID表示唯一标识该用户;未同步数据库访问控制系统响应的Token表示(用户名|登录时间戳|主库ID|备库ID列表|业务ID)签名;
登录鉴权:未同步数据库访问控制系统通过本地数据库中该用户对应的密码,使用该用户对应的密码对请求消息进行加密,获得摘要信息,与请求里的摘要信息进行比对,判断是否相同:
若相同,则鉴权通过。
5.根据权利要求1所述的mysql主备模式下应用层容错方法,其特征在于,应用层写业务表具体如下:
预先请求未同步数据访问控制系统,查看是否允许写入;
请求方收到允许写入响应消息后,应用层请求写业务数据库并把返回的预写版本号更新到业务表;
写入操作包括该记录的预写版本号会被同步到各个备库;
未同步数据访问控制系统根据预写版本号周期核对该写入操作是否已同步到各个备库;
根据登录信息中的各个数据库节点连接信息,去对应的备库查询该条记录预写版本号,与本地预写版本号进行对比,判断预写版本号是否相同:
若相同,则从未同步数据访问控制系统数据库表擦除对应的记录;
当mysql单点故障并发生主备切换时,应用层需要重新登录,并携带最新的主备数据库信息;并且预写请求中需要携带最新的Header信息,同时根据是否允许写入判断逻辑,会自动启用该新主库的访问控制表,进行写入访问控制;
当mysql故障恢复后,根据各个备库的未同步数据访问控制系统数据库表,从故障节点恢复数据。
6.根据权利要求5所述的mysql主备模式下应用层容错方法,其特征在于,是否允许写入判断如下:
通过Header中业务ID、主库ID信息以及请求参数,查询未同步数据访问控制系统数据库表是否为空:
若查询到结果不为空,则表示未同步数据访问控制系统数据库表的这条记录上次的写操作还未同步到本节点,本次不允许写入,并向应用层返回不允许写入;
若否,则生成预写版本号,并根据请求消息体中的业务表名、主键列名、主键值、Header中业务ID、业务备库ID列表和预写版本号向未同步数据访问控制系统数据库表插入记录;再给请求方返回允许写入响应消息;
其中,请求方请求的内容包括Header{用户名|登录时间戳|主库ID|备库ID列表|业务ID+登录token}、业务表名、主键列表、主键值以及业务回调数据;登录token是在登录时由未同步数据访问控制系统下发;未同步数据访问控制系统根据Header中的信息校验token是否合法:若不合法,则忽略该请求;请求方请求的业务回调数据是由请求方填写,用于唯一标识该请求,方便返回后触发对应的逻辑;
请求方响应的内容包括是否允许写入、预写版本号以及业务回调数据;请求方响应的预写版本号是由未同步数据访问控制系统生成,用于标识该条业务数据的写版本;请求方响应的业务回调数据用于透传字段,由请求端填写。
7.根据权利要求1所述的mysql主备模式下应用层容错方法,其特征在于,未同步数据库访问控制系统的节点部署具体如下:
未同步数据访问控制系统采用主备多节点部署,主备多节点连接同一个数据库,正常情况下仅有主节点提供服务;
当主节点故障时,屏蔽主节点,备用节点升级为主节点,从数据库拉取全量未同步列表至缓存后,开始提供服务;
当数据库节点故障时,写操作降级为预写日志加写缓存,等数据库节点回复后,将全量缓存刷入数据库节点。
8.一种mysql主备模式下应用层容错系统,其特征在于,该系统包括,
部署模块一,用于部署应用层数据库;
部署模块二,用于部署未同步数据访问控制系统数据库表;
登录模块,用于应用层登录未同步数据访问控制系统;
写模块,用于应用层写业务表。
9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;
其中,所述存储器上存储有计算机程序;
所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如权利要求1至7任一项所述的mysql主备模式下应用层容错方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1至7中任一项所述的mysql主备模式下应用层容错方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210421010.7A CN114816851A (zh) | 2022-04-21 | 2022-04-21 | mysql主备模式下应用层容错方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210421010.7A CN114816851A (zh) | 2022-04-21 | 2022-04-21 | mysql主备模式下应用层容错方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816851A true CN114816851A (zh) | 2022-07-29 |
Family
ID=82505023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210421010.7A Pending CN114816851A (zh) | 2022-04-21 | 2022-04-21 | mysql主备模式下应用层容错方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816851A (zh) |
-
2022
- 2022-04-21 CN CN202210421010.7A patent/CN114816851A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6687701B2 (en) | Namespace management in a distributed file system | |
US7240114B2 (en) | Namespace management in a distributed file system | |
EP3435604B1 (en) | Service processing method, device, and system | |
US9690679B2 (en) | Transaction commitment and replication in a storage system | |
KR101915826B1 (ko) | 분산 저장 환경에서의 동기 복제 기법 | |
Burrows | The Chubby lock service for loosely-coupled distributed systems | |
US20220019575A1 (en) | System And Method For Augmenting Database Applications With Blockchain Technology | |
Aguilera et al. | The impact of RDMA on agreement | |
US20130110781A1 (en) | Server replication and transaction commitment | |
US20100169289A1 (en) | Two Phase Commit With Grid Elements | |
CN113010549B (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN110402429B (zh) | 复制用于管理基于云的资源的存储表以抵挡存储账户中断 | |
US5740348A (en) | System and method for selecting the correct group of replicas in a replicated computer database system | |
CN110121694B (zh) | 一种日志管理方法、服务器和数据库系统 | |
US20190196918A1 (en) | Methods and systems of operating a database management system dmbs in a strong consistency mode | |
CN115443457A (zh) | 事务处理方法、分布式数据库系统、集群及介质 | |
CN110555317B (zh) | 一种应用文件更改处理方法、装置及系统 | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN115495495A (zh) | 事务处理方法、分布式数据库系统、集群及介质 | |
US11693844B2 (en) | Processing delete requests based on change feed of updates | |
CN114816851A (zh) | mysql主备模式下应用层容错方法及系统 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
Ahamad et al. | Replicated data management in distributed systems | |
Koçi et al. | ADLMCC–Asymmetric distributed lock management in cloud computing | |
US8805886B1 (en) | Recoverable single-phase logging |
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 |