IST不是SST用于节点重新加入吗?我们有解决方案!

鉴于上述痛点,我们将介绍 gcache.freeze_purge_at_seqno Percona XtraDB Cluster 5.7.20。
这可以控制gcache的清除,从而在节点重新加入时保留更多数据以便于IST。

Galera集群中的所有事务都被分配了唯一的全局序列号(seqno)。使用此seqno跟踪事件(例如wsrep_last_applied,wsrep_last_committed,wsrep_replicated,wsrep_local_cached_downto等等)。 wsrep_local_cached_downto表示gcache被清除的序列号。假设wsrep_local_cached_downto = N,则gcache具有来自[N,wsrep_replicated]的数据并且已从[1,N)中清除数据。

gcache.freeze_purge_at_seqno 有三个值:

-1(默认值):无冻结,清除操作正常。

x(在gcache中应该是有效的seqno):冻结写入集> = x。选择x的最佳方法是使用wsrep_last_applied值作为计划关闭的节点的指示符。 (wsrep_applied * 0.09。保留额外的10%来欺骗IST的安全间隙启发式算法。)

now:冻结写入集的清除> =当前在gcache中的最小seqno。即时冻结gcache-purge。 (如果跟踪x(上面)很困难,只需使用“now”就可以了。)

在集群的现有节点上设置它(它将继续作为集群的一部分,并可充当潜在的DONOR)。
此节点继续保留写集,从而允许重新启动节点使用IST重新加入。
(您可以在重新启动所述重新加入节点时通过wsrep_sst_donor将所述节点作为首选DONOR提供。)

一旦节点重新加入,请记住将其设置回-1。
这避免了在所述时间线之外占用捐赠者的空间。
在下一个清除周期中,所有旧的保留写入集也被释放(将空间回收回原始空间)。

IST donor选择

show status like 'wsrep_local_cached_downto';

假设我们有3个节点集群:N1,N2,N3。

首先,所有3个节点都是同步的(wsrep_last_committed对于所有3个节点都是相同的,假设为100)。

N3是维护计划并被取消。

同时,N1和N2处理工作量,从而将它们从100 -> 1100移动。

N1和N2也清除了gcache。假设N1和N2的 wsrep_local_cached_downto 分别为110和90。

现在N3重新启动并发现集群已从100 -> 1100进展,因此它需要来自(101,1100)的write-sets。

它开始寻找潜在的DONOR。
N1可以从(110,1100)服务数据,但请求是(101,1100),所以N1不能作为DONOR
N2可以从(90,1100)服务数据,并且请求是(101,1100),因此N2可以充当DONOR。

Safety gap及其如何影响DONOR的选择
到现在为止还挺好。但N2能否可靠地充当捐赠者?虽然N3正在评估潜在的捐赠者,但如果N2清除更多数据,现在N2上的wsrep_local_cached_downto是105,该怎么办?为了适应这种情况,N3算法增加了安全间隙。

Safety gap =(当前群集状态 - 来自群集的任何现有节点的最低可用seqno)* 0.008

因此,N2范围被认为是(90 +(1100-90)* 0.008,1100)=(98,1100)。

现在N2可以作为捐赠者吗?是:(98,1100)<(101,1100)

如果N2已经净化到95然后N3开始寻找潜在的捐赠者怎么办?

在这种情况下,N2范围将是(95 +(1100-95)* 0.008,1100)=(103,1100),从预期的捐赠者清单中排除N2。

转载于:https://www.cnblogs.com/kelvin19840813/p/10576436.html

使用IST重新加入节点(5.7.20)相关推荐

  1. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...

    数据结构可以说是编程的内功心法,掌握好数据结构真的非常重要.目前基本上流行的数据结构都是c和c++版本的,我最近在学习python,尝试着用python实现了二叉树的基本操作.写下一篇博文,总结一下, ...

  2. JDK8 HashMap--removeNode()移除节点方法

    1 /*删除节点*/ 2 final Node<K,V> removeNode(int hash, Object key, Object value, 3 boolean matchVal ...

  3. 二叉树:叶节点的一些操作

    目录 1.求叶子节点之和 2.求叶子节点的父节点之和 3.求左叶子节点 leetcode404 4.层数最深叶子节点之和leetcode1302 5.层数最浅叶子节点之和 6.删除给定值的叶子节点le ...

  4. k8s1.20二进制安装

    一 安装说明 部署说明 本次部署采用的系统版本为Centos7.9 内核版本为4.19.12 K8S版本为v1.20.0 docker版本为20.10.12 etcd版本为3.4.13 二 集群安装 ...

  5. BP神经网络隐层节点的个数设置方法

    文章转载,请说明来自<老饼讲解-BP神经网络>:bp.bbbdata.com 哦~! 目录 一.原理指导 二. 经验公式 三. 建模师经验 四.试凑法优化 五. 实际操作参考 本文主要讲解 ...

  6. 美图DPOS共识机制ETH节点网络启动和测试

    源码 https://github.com/meitu/go-ethereum 节点网络启动 1.简单测试起见,需要将节点最大验证器数修改为最小数 consensus/dpos/dpos.go max ...

  7. Kubernetes K8S节点选择(nodeName、nodeSelector、nodeAffinity、podAffinity、Taints以及Tolerations用法)

    感谢以下文章的支持: 容器编排系统K8s之Pod Affinity - Linux-1874 - 博客园 容器编排系统K8s之节点污点和pod容忍度 - Linux-1874 - 博客园 Kubern ...

  8. Arnold材质节点篇-凹凸 法线贴图 圆角/置换曲面细分

    [凹凸 & 法线贴图 & 圆角] 凹凸可以模拟表面的磨损,如纹理 添加节点:bump 节点,输出到几何体法线:noise 增加嗓波节点,绽放20,20,20,可以看到物体光滑表面有了效 ...

  9. Zookeeper节点个数设置

    zookeeper有个特点就是选举,选举出Leader才能正常使用, 集群中的zookeeper需要超过半数,整个集群对外才可用. 这里所谓的整个集群对外才可用,是指整个集群还能选出一个Leader来 ...

最新文章

  1. mysql引擎层存储层_MySQL存储底层技术:InnoDB底层原理解读
  2. java浮点数误差_浮点数运算的误差
  3. 中国计算机学会CCF招聘-信息系统项目管理/技术支持
  4. Python入门教程丨1300多行代码,让你轻松掌握基础知识点
  5. Jquery之AJAX用户注册表单验证(Vancl版)
  6. BC26接入电信云平台流程
  7. 360浏览器Linux版内核,360浏览器推出Linux版下载,主要特性解说
  8. 一文详述 Python 中的 property 语法
  9. vuex报错TypeError: sub is not a function
  10. for 循环打印直角三角形、正三角形、棱形
  11. Android Studio将html5网址封装成APP
  12. 皓月战地3不显示服务器,【求助】登录皓月服出错。。
  13. springboot天气预报系统 php气象百事通系统java
  14. O-flocking: 一种自动生成的群体自组织区域移动模型
  15. VBA写入公式(3):身份证公式集
  16. 只为用户而生:轻松集团6周年开启健康保障新征途
  17. 网络爬虫之网页数据解析(bs4)
  18. OpenHarmony#深入浅出学习eTs#(六)编写eTs第一个控件
  19. android 模仿uc标签页,仿uc浏览器菜单实现【原创】
  20. 用petalinux工具制作linux系统启动映像

热门文章

  1. RSS接触 - 实战RSS文档输出
  2. dhl: js判断网页对象是否存在
  3. poi写入Excel
  4. UA MATH564 概率论VI 数理统计基础3 卡方分布中
  5. 关于数据存储的经典题
  6. VC++格式化输出单个字符和格式化输出十六进制的不同形式
  7. win32 临界区和简单实例Demo(win32版)
  8. 第一次使用Winhex直接修改文件二进制数据
  9. VS2010重构学习总结
  10. 《你的误区》《少有人走过的路》下载doc格式