一、前端网络故障

如果节点无法在其前端以太网网络端口上进行通信,例如,由于意外的电缆拉拔、交换机配置错误或NIC故障,则不需要人工干预。集群采取以下行动:

  • 没有将其他连接分配给失败的实例。
  • 如果失败的节点正在处理复制从属连接,则将连接移动到另一个节点。

二、后端网络故障

后端网络故障类似于节点故障(参见下面)。

三、磁盘故障

ClustrixDB默认维护数据的两个副本(副本)。当集群检测到磁盘故障时,系统将自动调度重新保护操作以生成新的数据副本。管理员不需要采取任何行动来重新保护数据集。当任何表的拷贝数低于指定数量时,以及在完成重新保护任务之后,集群还将发出数据库警报。
在某些情况下,系统可能会检测磁盘上的错误。但是,如果错误低于我们将驱动器标记为失败的阈值,一些用户查询可能会在试图从失败的设备读取数据时偶然出现错误。在这种情况下,管理员可以手动停用节点,而不减少可用副本的数量。系统将尝试安全地将这些设备上的所有数据移动到系统中的另一个设备上。要做到这一点,请遵循降低集群容量的步骤—向下伸缩。

四、节点故障

本节描述两种类型的节点故障:transient (即节点暂时脱机(例如,由于崩溃或电源故障))和永久故障(即节点完全失败,并且预期不会返回)(例如,由于硬件故障)。

Transient Node Failure and Rebalancer Reprotect

  • 当集群由于任何原因与单个节点失去联系时,集群中幸存的节点将形成一个没有该节点的新组,并继续为客户端提供服务。所有服务(如从库)都跨幸存的节点重新分配。分发到失败节点的客户机必须重新连接。直接连接到失败节点的客户端无法查询数据库。您将收到一封电子邮件警告,并在其中一个节点的clustrix.log中显示如下消息:
ALERT PROTECTION_LOST WARNING Full protection lost for some data; queueing writes for down node; reprotection will begin in  seconds if node has not recovered
  • 这条消息只是表明并非所有数据都有完整的副本可用。全局变量rebalancer_reprotect_queue_interval_s指定Rebalancer应该等待多长时间,直到某个节点重新加入集群,然后才开始创建其他副本
如果一个节点在rebalancer_reprotect_queue_interval_s内重新加入
如果节点在rebalancer_reprotect_queue_interval_s通过后加入
  • ClustrixDB回放自上次该节点处于quorum中以来所做的更改,从而使该节点能够快速重新加入集群。
  • 节点重新加入集群并开始接受工作。没有必要采取进一步的行动。
  • Rebalancer开始复制受保护不足的片,以便在幸存的节点中创建新的副本。
  • 集群执行组更改。
  • 假设有足够的磁盘空间,ClustrixDB将自动处理重新保护过程,不需要人工干预。

使用此sql查看未完成的Rebalancer重新保护任务。

sql> SELECT * FROM system.rebalancer_activity_log where finished is null;

一旦所有副本都有足够的副本(因为某个节点已经恢复,或者Rebalancer已经完成了复制),您将收到一个警告,并在其中一个节点的clustrix.log中显示如下消息:

ALERT PROTECTION_RESTORED WARNING Full protection restored for all data after  minutes and  seconds

五、软剔除一个节点

如果一个节点变得不可靠,而您希望将其从集群中删除,Clustrix建议将其标记为softfailed(使用Flex Down)过程。您可以使用Flex Up过程同时合并替换。高层次的步骤是:

  1. 通过安装ClustrixDB并使用ALTER cluster ADD将它们添加到集群中来提供替换节点
  2. 使用ALTER CLUSTER SOFTFAIL将有问题的节点标记为softfailed
  3. 软剔除操作完成后,执行ALTER CLUSTER REFORM删除软剔除节点

六、永久的节点故障

如果某个节点永久失败,则Rebalancer将自动创建如上所述的其他副本。在显式删除之前,丢失的节点仍被视为quorum参与者。

手动删除永久失败的节点

ALTER CLUSTER DROP nodeid;

在重新保护完成之前删除节点会使集群容易丢失数据。

要合并一个替换节点,请遵循扩展集群容量的说明—Flex Up。

七、多个节点故障

通过设置max_failure的值,可以将ClustrixDB配置为能够承受多次失败。

为了让集群能够容忍为max_failure配置的值:

  • 所有表必须有足够的副本。如果更新了max_failure,那么之前创建的所有表都必须手动更新其副本。
  • 必须有可用节点的仲裁(至少N/2+1)
  • Clustrix建议提供足够的磁盘空间,以便集群在发生意外故障后有足够的空间进行重新保护。有关容错和可用性,请参阅分配磁盘空间

八、区失败

配置了区域后,整个区域的故障与节点故障无关。ClustrixDB将从可用区域自动恢复对节点的操作并自动重新保护。要从集群中删除一个区域,请将该区域中的所有节点标记为softfailed。

九、当重新保护无法完成时

磁盘空间不足

如果没有足够的磁盘空间用于所有副本,则重新保护进程将无法完成。考虑通过扩展集群的容量来增加额外的容量——Flex - Up。参见管理文件空间和数据库容量。

十、副本丢失

如果集群丢失的节点和/或区域比max_failure指定的多,则集群将无法重新保护。Rebalancer活动日志(system.rebalancer_activity_log)将显示“Representation not found”错误。

查看当前可用节点上没有的具有副本的表:

sql> SELECT `Database`, `Table`, `Index`, slice, status
FROM (SELECT `Database`, `Table`, `Index`, slice, MIN(status)
AS status FROM system.table_replicas
GROUP BY slice)
AS x
WHERE x.status > ;

如果无法恢复不可用的节点,则必须从备份中恢复这些表。

10. ClustrixDB 故障恢复管理的更多相关文章

  1. 【翻译】《深入解析windows操作系统第6版下册》第10章:内存管理

    [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第一部分) [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第二部分) [翻译] ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ( ...

  3. Linux课程---10、权限管理(权限有哪几种)

    Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x---  2 root root  4096 Jan 20 19:39 mnt ...

  4. 10 MySQL--权限管理

    权限管理 1.创建账号 # 本地账号 create user '; # mysql -uegon1 -p123 # 远程帐号 create user '; # mysql -uegon2 -p123 ...

  5. 17. ClustrixDB 日志管理

    ClustrixDB记录关于重要和有问题的查询的详细信息.这些日志有助于确定以下事项: 慢速查询 资源争用 SQL错误 读取意外数量行的查询 模式变化 全局变量的修改 集群的改变 默认情况下,查询日志 ...

  6. 10、会话管理/编程实战分析/Jsp

    1 会话管理回顾 会话管理 1)会话管理: 管理浏览器和服务器之间的会话过程中产生的会话数据 2)Cookie技术: 会话数据保存在浏览器客户端. Cookie核心的API: 2.1 在服务器端创建C ...

  7. 安装ArcGIS License 10.1 许可管理器 破解版 服务启动又失败的解决办法

    安装破解文件的提示执行 替换许可管理器Bin下面的service.txt  文件,之后会发现,许可管理器启动不了(有时候又可以,挺郁闷), 经过多次的试验,我找到了一种折中解决的方法,供大家参考 解决 ...

  8. 10.5Djang admin 管理工具

    2018-10-5 17:30:57 Django admin 管理工具  参考连接: https://www.cnblogs.com/yuanchenqi/articles/8323452.html ...

  9. 5.10 C++内存管理操作符重载

    参考:http://www.weixueyuan.net/view/6388.html 注意: 内存管理操作符new.new[].delete和delete[]同样也可以进行操作符重载,其重载形式既可 ...

随机推荐

  1. Unity3D中的SendMessage使用(消息传递的三种方法)

    概述 Unity提供的消息推送机制可以非常方便我们的脚本开发,它实现的是一种伪监听者模式,利用的是反射机制. 常用函数 关于消息推送,常用的函数有三个:”SendMessage“.”SendMessa ...

  2. Unity中的动画系统和Timeline(3) 混合树和动画匹配

    混合树 前面我们通过在Animation界面添加单独的动作来控制动画,这样做比较麻烦,每个单独的属性,比如站立,奔跑等,都需要单独的代码来控制.现在我们可以通过使用混合树,其基本思想是将相近的动画混合 ...

  3. 运行RGB-DSLAM的一些报错及处理方法

    part 4 报错‘create’ is not a menber of 'CV::FeatureDetector::create(detector.c_str()); 查看opencv版本 修改Cm ...

  4. 线性模型-线性回归、Logistic分类

    线性模型是机器学习中最简单的,最基础的模型结果,常常被应用于分类.回归等学习任务中. 回归和分类区别: 回归:预测值是一个连续的实数: 分类:预测值是离散的类别数据. 1.     线性模型做回归任务 ...

  5. Yarn-本地获取任务日志

    Yarn-本地获取任务日志 yarn logs -applicationId application_1517538889175_2550 > logs.txt

  6. [转帖]SUN/Oracle JDK还是OpenJDK?

    你安装的是 https://www.cnblogs.com/shoufeng/p/9719995.html 目录 1 如何查看你安装的JDK版本 1.1 要用到的命令行工具 1.2 查看JDK的版本 ...

  7. Luogu P1631 序列合并

    题目 开一个堆,先把所有\(a[i]+b[1]\)压进优先队列. 然后每次把最小的取出来,把对应的\(a[i]\)的下一个\(b[j]\)拿出来加进去. #include<bits/stdc++ ...

  8. D - 秋实大哥与快餐店

    秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  9. 修改文件夹的所有者为www

    切换到root用户:su - root 修改文件所属用户和用户组:chown 用户:用户组 文件名如果用户和用户组是www,那么需要执行命令如下:chown www:www filename -R ( ...

  10. python全栈开发教程目录

    python入门到进阶 Python基础2——数据类型的操作 Python基础——函数入门 Python基础——函数进阶 Python基础——函数的装饰器 Python基础——函数的装饰器 Pytho ...