1.查看集群是否使用了vnodes
用途:使用了virtual nodes,删除了节点之后它会自动均衡数据,不要你手动处理。
主要看你的cassandra.yml配置文件中,是否配置了initial_token,如果没有配置,就是使用了vnodes。
cassandra/conf$ less cassandra.yaml
# initial_token allows you to specify tokens manually. While you can use # it with
# vnodes (num_tokens > 1, above) -- in which case you should provide a
# comma-separated list -- it's primarily used when adding nodes # to legacy clusters
# that do not have vnodes enabled.
# initial_token:
发现这一行注释了,所以使用了virtual nodes
2.查看replication_factor
主要是运维一个比较生疏的集群,尤其在删除节点的时候,尤其要注意是不是会造成数据的丢失,所以需要看一下。
有两种方式:
a. desc keyspace_name
$desc
这个命令会把这个keyspace_name以及下面所有的column family都desc一下。
cqlsh> desc keyspace example;
CREATE KEYSPACE ad WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '3'} AND durable_writes = true;
...desc other column families
b.在system keyspace里面查看
cqlsh> use system;
cqlsh:system> select * from schema_keyspaces;
keyspace_name | durable_writes | strategy_class | strategy_options
---------------+----------------+------------------------------------------------------+----------------------------
OpsCenter | False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"DC1":"1","DC2":"1"}
system | True | org.apache.cassandra.locator.LocalStrategy | {}
example | True | org.apache.cassandra.locator.NetworkTopologyStrategy | {"DC1":"3"}
可以看到ad这个keyspace的Strategy是NetworkTopologyStrategy,{"DC1":"3"}
3.查看当前集群状态
/cassandra/bin$ ./nodetool status
Datacenter: DC1
===================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
DN 10.6.120.11 502.91 GB 256 ? 11299fbb-627e-4453-838a-2af2e7e06b29 R07
UN 10.6.120.12 489.04 GB 256 ? 19185573-6f3e-431d-bf60-5c10691c85b6 R07
UN 10.6.120.13 482.92 GB 256 ? 524182a1-771c-4f0a-b904-ce1b7c24b48f R07
UN 10.6.120.14 500.63 GB 256 ? e288eb41-b151-4d03-9fe3-3508dfd77ed7 R07
...
4.添加节点,删除节点
主要是nodetool命令的使用。
/cassandra/bin$ ./nodetool removenode host_id
/cassandra/bin$ ./nodetool removenode host_id force
# Decommission the *node I am connecting to*
/cassandra/bin$ ./nodetool decommission
# for more command, use help
/cassandra/bin$ ./nodetool help
删除节点官方步骤:
第一步:先每个机器都修复下每个keyspace
$nodetool repair -h ip_address_of_node keyspace_name
第二步:如果要删除的机器是UP状态的机器,没有宕机
在要删除的机器上执行nodetool decommission
. 就直接结束了,否则继续下面的步骤。
第三步:在活的节点上执行删除操作
$ nodetool removenode host_id
它会自己均衡数据,这里就直接结束了,否则继续。
第四步:查看是否删除成功
5.查看key在哪个endpoint
/cassandra/bin$ ./nodetool getendpoint keyspace_name columnfamily_name key
6.待续
7.other: nodetool help
/cassandra/bin$ ./nodetool help
usage: nodetool [(-u <username> | --username <username>)]
[(-pw <password> | --password <password>)] [(-h <host> | --host <host>)]
[(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
[(-p <port> | --port <port>)] <command> [<args>]
The most commonly used nodetool commands are:
cfhistograms Print statistic histograms for a given column family
cfstats Print statistics on column families
cleanup Triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces
clearsnapshot Remove the snapshot with the given name from the given keyspaces. If no snapshotName is specified we will remove all snapshots
compact Force a (major) compaction on one or more column families
compactionhistory Print history of compaction
compactionstats Print statistics on compactions
decommission Decommission the *node I am connecting to*
describecluster Print the name, snitch, partitioner and schema version of a cluster
describering Shows the token ranges info of a given keyspace
disableautocompaction Disable autocompaction for the given keyspace and column family
disablebackup Disable incremental backup
disablebinary Disable native transport (binary protocol)
disablegossip Disable gossip (effectively marking the node down)
disablehandoff Disable storing hinted handoffs
disablethrift Disable thrift server
drain Drain the node (stop accepting writes and flush all column families)
enableautocompaction Enable autocompaction for the given keyspace and column family
enablebackup Enable incremental backup
enablebinary Reenable native transport (binary protocol)
enablegossip Reenable gossip
enablehandoff Reenable the future hints storing on the current node
enablethrift Reenable thrift server
flush Flush one or more column families
gcstats Print GC Statistics
getcompactionthreshold Print min and max compaction thresholds for a given column family
getcompactionthroughput Print the MB/s throughput cap for compaction in the system
getendpoints Print the end points that owns the key
getlogginglevels Get the runtime logging levels
getsstables Print the sstable filenames that own the key
getstreamthroughput Print the Mb/s throughput cap for streaming in the system
gossipinfo Shows the gossip information for the cluster
help Display help information
info Print node information (uptime, load, ...)
invalidatecountercache Invalidate the counter cache
invalidatekeycache Invalidate the key cache
invalidaterowcache Invalidate the row cache
join Join the ring
listsnapshots Lists all the snapshots along with the size on disk and true size.
move Move node on the token ring to a new token
netstats Print network information on provided host (connecting node by default)
pausehandoff Pause hints delivery process
proxyhistograms Print statistic histograms for network operations
rangekeysample Shows the sampled keys held across all keyspaces
rebuild Rebuild data by streaming from other nodes (similarly to bootstrap)
rebuild_index A full rebuild of native secondary indexes for a given column family
refresh Load newly placed SSTables to the system without restart
reloadtriggers Reload trigger classes
removenode Show status of current node removal, force completion of pending removal or remove provided ID
repair Repair one or more column families
resetlocalschema Reset node's local schema and resync
resumehandoff Resume hints delivery process
ring Print information about the token ring
scrub Scrub (rebuild sstables for) one or more column families
setcachecapacity Set global key, row, and counter cache capacities (in MB units)
setcachekeystosave Set number of keys saved by each cache for faster post-restart warmup. 0 to disable
setcompactionthreshold Set min and max compaction thresholds for a given column family
setcompactionthroughput Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling
sethintedhandoffthrottlekb Set hinted handoff throttle in kb per second, per delivery thread.
setlogginglevel Set the log level threshold for a given class. If both class and level are empty/null, it will reset to the initial configuration
setstreamthroughput Set the Mb/s throughput cap for streaming in the system, or 0 to disable throttling
settraceprobability Sets the probability for tracing any given request to value. 0 disables, 1 enables for all requests, 0 is the default
snapshot Take a snapshot of specified keyspaces or a snapshot of the specified column family
status Print cluster information (state, load, IDs, ...)
statusbackup Status of incremental backup
statusbinary Status of native transport (binary protocol)
statusgossip Status of gossip
statushandoff Status of storing future hints on the current node
statusthrift Status of thrift server
stop Stop compaction
stopdaemon Stop cassandra daemon
toppartitions Sample and print the most active partitions for a given column family
tpstats Print usage statistics of thread pools
truncatehints Truncate all hints on the local node, or truncate hints for the endpoint(s) specified.
upgradesstables Rewrite sstables (for the requested column families) that are not on the current version (thus upgrading them to said current version)
version Print cassandra version