首页 > 数据库 >MYSQL POLARDB 学习系列之 拆解 POLARDB 7 (终结) 失败恢复与可靠性

MYSQL POLARDB 学习系列之 拆解 POLARDB 7 (终结) 失败恢复与可靠性

时间:2023-06-22 13:01:12浏览次数:32  
标签:RW POLARDB 拆解 内存 MYSQL REDO 节点 页面


随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是 POSTGRESQL, MYSQL ,MONGODB ,POLARDB ,REDIS,SQL SERVER 等,期待你的加入,

MYSQL  POLARDB  学习系列之  拆解 POLARDB 7  (终结) 失败恢复与可靠性_数据

学习POLARDB 已经有3-4个月的时间了,当然大部分还是在理论方面,实际上POLARDB 在实际的操作中,有一部分是我还没有深入,另一部分是POLARDB 的 SERIVCE guy 的服务方式有些太主观,当然有客观的原因,但是作为一个数据库,想拥有FANS ,各种在内部进行展示的系统性能或一些小心思的开关,还是会吸引到 死忠粉的,建议不要冷冰冰的说,这些都是内部XX, 或者说你看 monitor  web  page  来打发一些想“进步” 的同学,终究我们也是看 MYSQL 的文档,并在里面找 有意思东西的一群人。另外一些服务的同学,你们这样做,真心是在浪费 技术同学的努力创造POLARDB 的好形象。

本篇是POLARDB 的翻译,并学习理论的最后一篇

5  Reliability and failure recovery 

在POLARDB SERVERLESS,自身的结构是允许节点可以独立的进行failover, 所以我们有针对每种失败后的恢复的方法,大部分恢复的方法都是针对POLARDB 本身设计的,所有的代理节点都属于无状态的,当代理节点失败了,他能够很容易的被替代,用户可以重新连接其他存活的节点,POLARDB SERVERLESS 会至少保持两个与存储节点的复制,这些都被分布式协议parallel raft 来保证数据的一致性,这里我们保证没有任何单点的服务。

下面我们将关注复杂处理数据库节点recovery 的机制,内存节点机制,和集群恢复等

5.1  DATABASE NODE RECOVERY 

PolarDB SERVERLESS 采用了 ARIES-STYLE 恢复逻辑,RW 和 RO 节点都有不同的恢复过程和程序的支持。一个失败的RO节点能够被很容易的替换掉,通过一个新的节点,这个新的节点的信息使用share memory 中的页面。基于节点的失效是有计划的还是突然的,恢复的方式也是不同的。

非计划的节点失败:当写节点是吧,集群的管理CM发现并记录这个时间通过heartbeat 信号,并且初始化一个RO节点来提升成主节点,这里面经历了如下的过程

1 CM 通告所有的存储节点的内存拒绝来自于RW 节点的写请求

2  CM 选择一个RO节点,并且通知他将要被提升

3 这个将要被提升的节点收集最后的LSN 版本信息,通过polarfs的页面chunk,并且获得CHECKPOINT最后一次的最小的LSN号。

4  RW提升的节点读取REDO LOG 的记录,并且持久化信息在POLARFS 日志CHUNK,同时等待这段REDO LOG的 LSN 信息被应用完毕,然后等待这些页面被消化完全写入到页面中。

5 RW 提升的节点会扫描远程内存池,并且清理超过刚才在REDO 中重做后的页面信息,保证页面的一致性。

6  RW提升节点是否从原来失败节点中获得的PL锁

7  RW 提升节点扫描在RW 节点失败这段期间的所有的活跃的事务的页面的页头

8 RW 提升的节点已经准备好接受写的请求,在CM 节点完成提升的工作

9  RW 节点去应用UNDO LOG 要进行回滚的那些uncommited 事务

这里要提及的是在 3-4 中的REDO 的重做的过程不是和MYSQL一样的单机模式,而是并发的在不同的页面中进行进行的,步骤5 中的页面的清理是在远程的内存中,并且清理的页面是版本信息不一致的页面,这里重点是内存页面的信息一定不能低于磁盘中的信息。另一方面RW是可以写脏页到远程的内存中的,并且在REDO LOG 被刷新的POLARFS 之前,所有远程内存页面的信息是有可能高于POLARFS存储中的信息的。

因此这些页面也需要被清理掉,在 3 4 5 操作完毕后,REDO LOG 在POLARFS, 数据页面在POLARFS,以及远程内存中的页面,应该就一致了,数据库就达到了一致性的状态。此时如果没有SMO的工作,那么所有PL锁被释放是安全的(这一段不明白的,看上一篇SMO 解释),同时此时大部分活跃的数据还是在REMOTE MEMORY的内存池中的,这样就避免了CACHE 数据不一致的问题,虽然REDO 重做在单机是一个普通的工作,但是基于POALRDB 的硬件体系,REDO 的工作也将是一个复杂的工作,需要重新的设计和安排。

Planned node  down

MYSQL  POLARDB  学习系列之  拆解 POLARDB 7  (终结) 失败恢复与可靠性_学习_02

标签:RW,POLARDB,拆解,内存,MYSQL,REDO,节点,页面
From: https://blog.51cto.com/u_14150796/6534695

相关文章

  • Mysql 8 VS Mariadb 10.6 他们有多不一样 (声译)
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql ,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。首先要说明一点的,Mariadb不是MySQL,虽然他们有同一个历史的渊源,以及曾经类似的底层的代码,功能等等。但是MYSQL<> Mariadb......
  • MYSQL 删除数据是非多,8.030 还是有死锁
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。我这个人说问题愿意是感性+理性,首先需要感性认知,我们先来看一个下面的问题,在说这个问题之前,我们先将一些问题说明。1数据库版本......
  • Polardb 如何替换MYSQL 之 IMCI 列式(1)建立一个列式引擎
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。讲了那么多期,都是在力量上进行论述,本期开始进入到正式的POALRDB的内部操作中,POLARDB与MYSQL在登录中最大的不同是,你可以通过代......
  • Polardb 如何替换MYSQL 之 IMCI 列式攻略
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。MYSQL是ORACLE后面经常被提到要替换的数据库,MYSQL为什么要被替换,嗯这点是一言难尽,但是可以说明的是,替换MYSQL的数据库类型还......
  • MYSQL 5.7 升级 8.0 后的 由于字符集导致的大问题 ?
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。MYSQL8.0已经很多年了,但是,但是,但是,还有很多公司和业务项目在MYSQL5.6,5.7上继续奋斗,这还不是一个重要的问题,重要的问题是早期......
  • 诶,你为啥最近和 POLARDB 较劲, 要不咱杠杠
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。最近一直在学习POALRDB以及POLARDB周边的东西,这就引起私信我的一个问题,问:你不是弄POSTGRESQL,MYSQL,MONGODB的吗,怎么又搅和......
  • POSTGRESQL 和 MYSQL 到底应该不应该控制活跃连接
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql ,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。最近群里某个同学的提问,引起的本篇文章,关于数据库连接的部分,没有废话,我们先针对MYSQL来说说数据库连接的部分。首先MYSQL的客......
  • 我也不知道该怎么回答这个问题,还学MYSQL 吗?
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题最近一个同学偶然问了我一个这样的问题,实话说我不知道该怎么回答这个问题。但我知道问这个问题的同学,他思考了,不是在追风,一会儿MYSQ......
  • MYSQL collation 选好还能换吗
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。Collation 主要的作用是什么,排序。 数据库中的字符众多,而在这里很多的查询中都对这些符号进行一些比对的工作,如A=a,B>B......
  • MySQL
    初识MySQLJavaEE:企业级Java开发、Web前端(页面:展示——数据);后端(连接点:连接数据库JDBC,连接前端——控制视图跳转和给前端传递数据);数据库(存数据,Txt,Excel,world)。程序员等级:只会写代码,没学好数据库,基本混饭吃。操作系统,数据结构预算法!当一个不错的程序员!离散数学、数字电路......