五、CASSANDRA集群节点缩扩容

随着业务发展,经常会遇到cassandra集群的扩容及缩容维护,cassandra提供了非常强大的功能,不停机不影响业务的情况下实现集群的阔缩容能力,具体操作如下:

扩容

步骤如下:

 	1、 准备一个新节点:见《cassandra集群安装》
 	2、 关闭所有节点压缩(可选)
 	       nodetool disableautocompaction
 	       nodetool stop COMPACTION
              迁移完毕之后,再放开压缩功能
           nodetool enableautocompaction
           注:根据我们的经验,以上关闭压缩的步骤多余,反而会因为未及时压缩产生大量SSTABLE而影响性能。
             
    3、 评估扩容时间:
         	生产数据扩容,一般都是T级别的数据迁移,耗时数小时,一般都需要选择晚上或周末,具体视迁移的数据量多少、CPU性能等决定。 若数据量少或机器性能强劲,基本任何时候都可扩容,否则选择晚上或周末。
 	4、 限制集群所有节点数据迁移流量
 	     	nodetool setstreamthroughput 32 (注:32Mb/s = 4MB/s)
 	      	nodetool getstreamthroughput 
          一般,若集群性能好,出流可以设置为8MB/s, 入流可设置70MB/s,  生产迁移过程中可从小到大调整,观察对性能是否有影响,没影响就适当调大。
    5、session超时设置(若已设置,忽略此步)
          	根据同步数据量计算需要大概多少时间能迁移完成。
          	如:60G,传输速率4MB/s,大约需要4.26小时完成。
          	配置:cassandra.ymal
          	streaming_socket_timeout_in_ms值,默认3600000(1H,生产环境明显不够),改成172800000(48H),保证有足够时间完成数据迁移
    6、数据迁移完成后清理数据
        	 nodetool cleanup
        	 节点一个个的清理,一个完成后再清理下一个。
         注:清理数据会大量消耗集群性能,对twcs,不必删除,经过一段时间后冗余数据会自动清理;
    7、监控迁移情况
          nodetool netstats   数据迁移情况
          nodetool compactionstats -H   SSTABLE压缩情况
          nodetool status      集群情况,UJ:未完成,UN:已完成
    8、遇到的问题(物化视图慎用,否则无法扩容)
    	  报表使用物化视图,物化视图迁移数据使用的批量提交Batchlog,引起内存溢出。
    	  新增节点一两分钟内既会报错:
    	  java.lang.IllegalArgumentException:Mutation of 34.309MiB is too large for the maximum size of 16.000MiB
    	  限流之后,上面异常会消失,随后会出现内存溢出报错
    	  java.lang.OutOfMemoryError:Java heap space
          最后我们把物化视图功能取消,数据迁移一切正常。

正常缩容

步骤如下:

    1、选择一个要下线的节点实例
    2、选择下线时间,见扩容。
    3、限制集群所有节点数据迁移流量
          	nodetool setstreamthroughput 32 (注:32Mb/s = 4MB/s)
 	      	nodetool getstreamthroughput 
 	      	一般,若集群性能好,出流可以设置为70MB/s, 入流可设置8MB/s,  生产迁移过程中可从小到大调整,观察对性能是否有影响,没影响就适当调大。
 	4、执行下线命令
 			nodetool decommission
    5、监控迁移情况
          	nodetool netstats   数据迁移情况
          	nodetool compactionstats -H   SSTABLE压缩情况
          	nodetool status    删除节点状态为UL

强制删除节点

强制删除节点一般用在节点宕机的情况下使用

nodetool removenode hostid    (force)

如:nodetool removenode 8b6dbd89-a4ed-479c-9fc2-9f92712bf48a  force;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cassandra 是一个开源的分布式数据库系统,它被设计成高度可扩展、高性能的系统,用于处理大规模数据集。在 Cassandra 中,数据分布在整个集群中的多个节点上,每个节点都具有相同的功能和数据副本。 下面是一些关于 Cassandra 集群的常见操作和概念: 1. 节点(Node):Cassandra 集群中的每个服务器都被称为节点。每个节点都可以独立地处理读写请求,并且都存储了部分数据的副本。 2. 数据中心(Datacenter):Cassandra 集群可以由多个数据中心组成。数据中心是逻辑上划分的部分,每个数据中心可以包含一个或多个节点。 3. 复制因子(Replication Factor):复制因子是指每个数据中心中为每个数据副本存储的节点数量。它决定了数据在集群中的冗余程度和可靠性。 4. 键空间(Keyspace):键空间是 Cassandra 中存储数据的顶层容器,类似于传统数据库中的数据库。它定义了数据的复制策略、复制因子等。 5. 分区(Partition):Cassandra 使用分区键将数据分布在不同的节点上。分区键是用于确定数据在集群中哪个节点存储的关键属性。 6. 一致性级别(Consistency Level):一致性级别定义了读写操作需要满足的数据一致性要求。Cassandra 提供了不同的一致性级别供选择,例如 ONE、QUORUM、ALL 等。 7. 启动和管理节点:要启动和管理 Cassandra 集群的节点,可以使用 Cassandra 提供的命令行工具 `cassandra`、`nodetool` 和 `cqlsh`。些工具提供了管理节点、执行查询和维护集群的功能。 请注意,Cassandra 集群的部署和管理是一个复杂的主题,涉及到许多方面的配置和调优。在实际应用中,建议参考官方文档或专业资源来进行详细了解和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值