一、 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;

最新文章

  1. apache解析多个域名
  2. Java Map排序
  3. struts2拦截器源码分析
  4. 搭建typescript开发环境最详细的全过程
  5. Java集合类小结-思维导图
  6. 201521123016 《Java程序设计》第7周学习总结
  7. 《java.util.concurrent 包源码阅读》07 LinkedBlockingQueue
  8. Thymeleaf中each标签遍历list如何获取index
  9. 【转】手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)
  10. C“控制”Lua
  11. 两台Linux服务器之间复制文件
  12. vue计算属性(通过计算得来的属性)
  13. 电脑用HDMI线分屏后,耳机或音箱没声音之完美解决!
  14. AngularJS学习 之 UI以及逻辑生成
  15. solr开发从查询结果集中获取对象数据
  16. s3cmd在配置后使用时提示ERROR: S3 error: 403 (InvalidAccessKeyId): The AWS Access Key Id you provided does not exist in our records.
  17. 使用pt-query-digest,找到不是很合适的sql
  18. srpingboot2 session过期时间设置
  19. Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)
  20. collection.toArray(new String[0])中new String[0]的作用

热门文章

  1. SYN攻击源码
  2. predis操作redis方法大全
  3. 从入门到自闭之Python时间模块
  4. Threadlocal线程本地变量理解
  5. The Party and Sweets CodeForces - 1159C (拓排)
  6. EJS学习(一)之特性、安装、工作原理
  7. 03 Linux下运行Django项目
  8. Axure(二)
  9. Exited too quickly (process log may have details)-配置问题
  10. Docker架构及其三要素