10. ClustrixDB 故障恢复管理
一、前端网络故障
如果节点无法在其前端以太网网络端口上进行通信,例如,由于意外的电缆拉拔、交换机配置错误或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通过后加入
|
|---|---|
|
|
使用此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过程同时合并替换。高层次的步骤是:
- 通过安装ClustrixDB并使用ALTER cluster ADD将它们添加到集群中来提供替换节点
- 使用ALTER CLUSTER SOFTFAIL将有问题的节点标记为softfailed
- 软剔除操作完成后,执行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 故障恢复管理的更多相关文章
- 【翻译】《深入解析windows操作系统第6版下册》第10章:内存管理
[翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第一部分) [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第二部分) [翻译] ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ( ...
- Linux课程---10、权限管理(权限有哪几种)
Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x--- 2 root root 4096 Jan 20 19:39 mnt ...
- 10 MySQL--权限管理
权限管理 1.创建账号 # 本地账号 create user '; # mysql -uegon1 -p123 # 远程帐号 create user '; # mysql -uegon2 -p123 ...
- 17. ClustrixDB 日志管理
ClustrixDB记录关于重要和有问题的查询的详细信息.这些日志有助于确定以下事项: 慢速查询 资源争用 SQL错误 读取意外数量行的查询 模式变化 全局变量的修改 集群的改变 默认情况下,查询日志 ...
- 10、会话管理/编程实战分析/Jsp
1 会话管理回顾 会话管理 1)会话管理: 管理浏览器和服务器之间的会话过程中产生的会话数据 2)Cookie技术: 会话数据保存在浏览器客户端. Cookie核心的API: 2.1 在服务器端创建C ...
- 安装ArcGIS License 10.1 许可管理器 破解版 服务启动又失败的解决办法
安装破解文件的提示执行 替换许可管理器Bin下面的service.txt 文件,之后会发现,许可管理器启动不了(有时候又可以,挺郁闷), 经过多次的试验,我找到了一种折中解决的方法,供大家参考 解决 ...
- 10.5Djang admin 管理工具
2018-10-5 17:30:57 Django admin 管理工具 参考连接: https://www.cnblogs.com/yuanchenqi/articles/8323452.html ...
- 5.10 C++内存管理操作符重载
参考:http://www.weixueyuan.net/view/6388.html 注意: 内存管理操作符new.new[].delete和delete[]同样也可以进行操作符重载,其重载形式既可 ...
随机推荐
- python学习之那些由print引起的困惑
该文索所起之因:在练习列表的操作时,要输出一波操作后的列表,但是一直让本人耿耿于怀的时下边的这个现象: 红色框框里是字符串,黄色框框里是列表,同样是只对一个元素进行的操作,为啥输出时字符串是作为一个整 ...
- k8s-kubernetes-configmap存储
存储 configMap configMap描述信息 ConfigMap功能在Kubernetes1.2版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息. ConfigMap ...
- Redis 3主-3从集群的搭建(CentOS 7)
注意ip地址为: 虚拟机ip设置 TYPE="Ethernet"BOOTPROTO="static"NAME="enp0s3"DEVICE= ...
- 条件运算符在GUN C中的特殊用法.
在阅读内核源码的时候,发现了条件表达式的奇怪用法,一时没有反应过来.下面的内容是从wiki转载而来,用作回顾和备忘. 转载链接:https://zh.wikipedia.org/wiki/%E6%9D ...
- Python 入门之 内置模块 -- re模块
Python 入门之 内置模块 -- re模块 1.re 模块 (1)什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类 ...
- 将ShellCode注入进程内存
内存注入ShellCode的优势就在于被发现的概率极低,甚至可以被忽略,这是因为ShellCode被注入到进程内存中时,其并没有与之对应的硬盘文件,从而难以在磁盘中取证,但也存在一个弊端由于内存是易失 ...
- Jquery复习(二)之stop()易忘点
jQuery stop() 方法 jQuery stop() 方法用于停止动画或效果,在它们完成之前. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. 语法:$ ...
- 【三】Django模版的使用
作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用 ...
- 机器学习及scikit-learn
一.机器学习以及scikit-learn 1. 机器学习基本步骤: (1)定义一系列函数 => (2)定义函数的优劣 => (3)选择最优函数 2.什么是scikit-learn ...
- JS Unicode转中文,中文转Unicode,ASCII转Unicode,Unicode转ASCII
在线转换工具https://oktools.net/unicode Unicode转中文 function decodeUnicode(str) { return unescape(str.repla ...