7. ClustrixDB 集群管理
一、 ALTER CLUSTER ADD (Flex Up): 添加节点以增加集群大小
添加节点过程:
步骤1、准备节点
提供节点并在每个节点上安装ClustrixDB,使用相同的版本和安装配置。
如果正在使用区域,请确保目标配置在每个区域中具有相同数量的节点。
如果您正在使用加密连接,请确保密钥中的证书在具有正确权限的同一位置出现。
步骤2、将节点添加到集群中
sql> ALTER CLUSTER ADD 'ip' [, 'ip'] ...;
Clustrix建议在非高峰期间或计划维护窗口期间运行此命令。
在添加节点时,服务将短暂中断。
您还可能注意到,在Rebalancer将数据移动到新节点时,性能略有下降。
步骤3、验证添加节点成功
sql> SELECT * FROM system.nodeinfo ORDER BY nodeid;shell> /opt/clustrix/bin/clx status
您应该看到所有节点在显示中都显示正常。如果使用区域,则所有节点都应该分配一个非零区域。如果没有使用区域,则将所有节点分配给区域0。
您可能会注意到,节点之间的数据分布还不平衡。要有耐心。很快就会的。
如果您试图添加的节点没有出现在上面的列表中,请参阅下面有关Flex Up期间错误的部分。
步骤4、监控rebalance状态
您的新节点已经成功地添加到ClustrixDB集群中,但是它们还不包含数据。
Rebalancer现在将自动在后台工作,将数据转移到新的节点。要监视此过程,请参阅有关管理Rebalancer的说明。
集群添加节点报错信息:
- ERROR 1 (HY000): [26633] Bad parameter.: Host "xxx" already in cluster
如果您试图添加已经是集群一部分的节点,则会发生此错误。 - ERROR 1 (HY000): [55300] Multiple nodes cannot be added when an existing addition is pending
由于下列原因,节点添加可能处于挂起状态:
节点仍在添加过程中
运行不同版本ClustrixDB的节点被添加到集群中
一个具有不同多端口设置的节点被添加到集群中
解决办法:
sql> SELECT * FROM system.pending_invites;sql> DELETE FROM system.pending_invites;sql> SELECT * FROM system.problem_nodes;
Here is the list of reasons provided in system.problem_nodes and how to resolve those issues:
Reason |
Resolution |
---|---|
Software binaries differ | Make sure all nodes are running the same version of ClustrixDB |
Multiport settings mismatched |
See Modifying Startup Configuration Options for instructions on how to disable Multiport. Network Security with ClustrixDB contains information relative to enabling Multiport ports. |
二、ALTER CLUSTER SOFTFAIL (Flex Down): 从集群中删除节点
ALTER CLUSTER SOFTFAIL nodeid [, nodeid] ...
ALTER CLUSTER UNSOFTFAIL nodeid [, nodeid] ...
ALTER CLUSTER REFORM
ALTER CLUSTER SOFTFAIL:软剔除,指示Rebalancer将所有数据从指定节点移动到集群中的活动节点,以确保保留副本。
ALTER CLUSTER UNSOFTFAIL:取消先前的软剔除请求。节点再次可用,Rebalancer将重新将数据定位到节点。
ALTER CLUSTER REFORM:从集群中删除软失败节点并执行组更改。
软剔除之后监控节点状态:
一旦标记为softfailed, Rebalancer将从softfailed节点移动数据。Rebalancer进程在后台运行,而前台处理继续为您的生产工作负载服务。
监察软件故障的进展:确认您指定的节点确实被标记为要删除。
sql> SELECT * FROM system.softfailed_nodes;
system.softfailing_containers表将显示将作为SOFTFAIL操作的一部分移动的容器列表。当此查询返回0行时,数据迁移就完成了。
sql> SELECT * FROM system.softfailing_containers;
此查询显示准备删除的软剔除节点的列表。
sql> SELECT * FROM system.softfailed_nodes
WHERE nodeid NOT IN
(SELECT DISTINCT nodeid
FROM system.softfailing_containers);
一旦softfailed在所有节点完成之后,clustrix.log会记录日志:
softfailing nodes are ready to be removed: <list of node ids>
执行命令进行剔除:
sql> ALTER CLUSTER REFORM;
三、ALTER CLUSTER DROP: 强制从集群中删除节点。
使用ALTER CLUSTER DROP立即从集群中删除一个节点,而不需要确保所有数据都有足够的副本。这应该只在紧急情况下使用。
应该谨慎使用ALTER CLUSTER DROP,因为这个操作无法撤消。在重新保护完成之前删除多个节点可能导致永久性的数据丢失。如果可能,使用Flex Down过程而不是ALTER CLUSTER DROP。
四、ALTER CLUSTER RESIZE DEVICES: 增加分配给永久数据库存储的文件的大小。该命令只能增加不能减少
sql> ALTER CLUSTER RESIZE DEVICES 50g;
减少devices的方法:
参考: http://docs.clustrix.com/display/CLXDOC/Decreasing+device1+Size
五、ALTER CLUSTER SET MAX_FAILURES: 指定可以安全容忍的并发故障数量。
max_failure是一个只读的全局变量,只能使用ALTER CLUSTER来设置。
Name |
Description |
Default Value |
---|---|---|
max_failures | 在保持事务解析的同时,集群能够承受的并发故障数量,并且不会造成数据丢失。 | 1 |
sql> ALTER CLUSTER SET MAX_FAILURES = 2;
更改max_failure的值:
增加max_failure的值会增加所创建的副本的数量,这会对写操作产生显著的性能影响,并需要额外的磁盘空间。由于高性能开销,Clustrix不建议超过max_failure = 2。
要更改全局max_failure的值,请执行以下步骤。在这个示例中,允许的故障数量从默认值1修改为2。这将导致使用REPLICAS = 3创建所有新表和索引。
步骤1:确保有足够的磁盘空间
确保集群有足够的磁盘空间用于其他副本。有关如何确定所需磁盘空间的详细信息,请参阅为容错和可用性分配磁盘空间。
步骤2:设置集群MAX_FAILURES
sql> ALTER CLUSTER SET MAX_FAILURES = 2;
步骤3:更改现有的表
更新max_failure值之后创建的表将自动具有足够的副本。但是,在更新max_failure之前创建的表可能没有足够的副本,需要修改。此查询为所有未得到充分保护的表示生成ALTER语句。
MySQL [system]> SELECT concat ('ALTER TABLE ',`database`, '.', `Table`, ' REPLICAS = 3;') FROM system.table_replicas where database not in ('system', 'clustrix_dbi', 'clustrix_statd', '_replication') GROUP BY `table`, `database` having (count(1) / count(distinct slice)) < 2 + 1;
+--------------------------------------------------------------------+
| concat ('ALTER TABLE ',`database`, '.', `Table`, ' REPLICAS = 3;') |
+--------------------------------------------------------------------+
| ALTER TABLE scloud.sbtest1 REPLICAS = 3; |
+--------------------------------------------------------------------+MySQL [system]> ALTER TABLE scloud.sbtest1 REPLICAS = 3;
最新文章
- apache解析多个域名
- Java Map排序
- struts2拦截器源码分析
- 搭建typescript开发环境最详细的全过程
- Java集合类小结-思维导图
- 201521123016 《Java程序设计》第7周学习总结
- 《java.util.concurrent 包源码阅读》07 LinkedBlockingQueue
- Thymeleaf中each标签遍历list如何获取index
- 【转】手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)
- C“控制”Lua
- 两台Linux服务器之间复制文件
- vue计算属性(通过计算得来的属性)
- 电脑用HDMI线分屏后,耳机或音箱没声音之完美解决!
- AngularJS学习 之 UI以及逻辑生成
- solr开发从查询结果集中获取对象数据
- s3cmd在配置后使用时提示ERROR: S3 error: 403 (InvalidAccessKeyId): The AWS Access Key Id you provided does not exist in our records.
- 使用pt-query-digest,找到不是很合适的sql
- srpingboot2 session过期时间设置
- Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)
- collection.toArray(new String[0])中new String[0]的作用