cassandra rebuild 种子节点

cassandra 2.2.6环境,有一台种子节点硬件故障,半年以后才修复重新上线。
其数据已经落后太多,而cassandra并不会在其重新上线后自动进行数据同步。
nodetool repair应该可以使其数据重新同步,但是那速度是无法忍受的,因此使用nodetool rebuild来重建其数据。

首先停止cassandra服务

$ sudo systemctl stop cassandra

或者

$ sudo service cassandra stop

然后删除掉数据目录下system和用户keyspace的所有数据

$ sudo rm -rf /var/lib/cassandra/data/system/*
$ sudo rm -rf /var/lib/cassandra/data/your_keyspaces/*

如果不清除用户的keyspace,rebuild的时候并不会自动清除,而且rebuild是全量而不是增量,所以那些数据会成为垃圾数据,如果数据量很大,应该提前清除掉。

启动cassandra服务,执行rebuild

$ sudo service cassandra start
$ nodetool rebuild -- name_of_existing_data_center

指定源数据中心时,要指定与当前节点所在数据中心不同的数据中心。

等nodetool rebuild结束重建就算完成了,其实这与添加新的节点差别不大,不过就是原来的环境,所有的配置都不用动罢了。

同步完成后可以看看用户表的统计信息:

$ nodetool tablestats keyspace_name.table_name

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.