Cassandra:删除节点

时间:2013-08-15 20:23:18

标签: cassandra database-administration nodetool

我想从我的Cassandra群集中移除一个节点,并且正在关注这两个相关问题(herehere)以及Cassandra document。但我仍然不确定确切的过程。

我的第一个问题是:从Cassandra集群中删除节点的方法是否正确?

  1. decommission我要移除的节点。
  2. removetoken我刚退役的节点。
  3. 如果上述过程正确,那么如何判断退役过程是否已完成,以便我可以继续进行第二步?或者在步骤1之后立即执行第2步是否安全?

    此外,Cassandra document说:

      

    您可以通过nodetool decommission将节点从群集中取出来   live node或nodetool removetoken(到任何其他机器)删除a   死了一个。这将分配旧节点负责的范围   到其他节点,并在那里复制适当的数据。如果   使用退役时,数据将从退役中流出   节点。如果使用removetoken,则数据将从剩余数据流中传输   复制品。

         

    没有数据从退役的节点中自动删除,   所以如果你想让节点重新投入使用不同的令牌   在戒指上,应手动移除。

    这是否意味着退役节点是死节点?此外,由于没有从被退役的节点中自动删除数据,如何确定从解除授权的节点中删除数据的安全性(即,如何知道数据流何时完成?)

1 个答案:

答案 0 :(得分:12)

从Cassandra集群中删除节点应该是以下步骤(在Cassandra v1.2.8中):

  1. nodetool decommission停用目标节点。
  2. 完成退役节点的数据流后,手动删除已停用节点中的数据(可选)。
  3. 来自文档:

    nodetool decommission - Decommission the *node I am connecting to*
    

    更新:上述过程也适用于种子节点。在这种情况下,群集仍然能够平稳运行而无需重新启动。出于其他原因需要重新启动群集时,请务必更新seeds中为所有节点指定的cassandra.yaml参数。


    停用目标节点

    退役开始时,退役节点将首先标记为leaving(标记为L)。在以下示例中,我们将删除node-76

    > nodetool -host node-76 decommission
    > nodetool status
    
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address  Load       Tokens  Owns   Host ID                               Rack
    UN  node-70  9.79 GB    256     8.3%   e0a7fb7a-06f8-4f8b-882d-c60bff51328a  155
    UN  node-80  8.9 GB     256     9.2%   43dfc22e-b838-4b0b-9b20-66a048f73d5f  155
    UN  node-72  9.47 GB    256     9.2%   75ebf2a9-e83c-4206-9814-3685e5fa0ab5  155
    UN  node-71  9.48 GB    256     9.5%   cdbfafef-4bfb-4b11-9fb8-27757b0caa47  155
    UN  node-91  8.05 GB    256     8.4%   6711f8a7-d398-4f93-bd73-47c8325746c3  155
    UN  node-78  9.11 GB    256     9.4%   c82ace5f-9b90-4f5c-9d86-0fbfb7ac2911  155
    UL  node-76  8.36 GB    256     9.5%   15d74e9e-2791-4056-a341-c02f6614b8ae  155
    UN  node-73  9.36 GB    256     8.9%   c1dfab95-d476-4274-acac-cf6630375566  155
    UN  node-75  8.93 GB    256     8.2%   8789d89d-2db8-4ddf-bc2d-60ba5edfd0ad  155
    UN  node-74  8.91 GB    256     9.6%   581fd5bc-20d2-4528-b15d-7475eb2bf5af  155
    UN  node-79  9.71 GB    256     9.9%   8e192e01-e8eb-4425-9c18-60279b9046ff  155
    

    当解除授权的节点标记为leaving时,它将数据流传输到其他生存节点。流完成后,将不会从环结构中观察到节点,其他节点拥有的数据将增加:

    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address  Load       Tokens  Owns   Host ID                               Rack
    UN  node-70  9.79 GB    256     9.3%   e0a7fb7a-06f8-4f8b-882d-c60bff51328a  155
    UN  node-80  8.92 GB    256     9.6%   43dfc22e-b838-4b0b-9b20-66a048f73d5f  155
    UN  node-72  9.47 GB    256     10.2%  75ebf2a9-e83c-4206-9814-3685e5fa0ab5  155
    UN  node-71  9.69 GB    256     10.6%  cdbfafef-4bfb-4b11-9fb8-27757b0caa47  155
    UN  node-91  8.05 GB    256     9.1%   6711f8a7-d398-4f93-bd73-47c8325746c3  155
    UN  node-78  9.11 GB    256     10.5%  c82ace5f-9b90-4f5c-9d86-0fbfb7ac2911  155
    UN  node-73  9.36 GB    256     9.7%   c1dfab95-d476-4274-acac-cf6630375566  155
    UN  node-75  9.01 GB    256     9.5%   8789d89d-2db8-4ddf-bc2d-60ba5edfd0ad  155
    UN  node-74  8.91 GB    256     10.5%  581fd5bc-20d2-4528-b15d-7475eb2bf5af  155
    UN  node-79  9.71 GB    256     11.0%  8e192e01-e8eb-4425-9c18-60279b9046ff  155
    

    手动删除剩余数据

    完成流式传输后,可以按Cassandra document中所述手动删除已停用的节点中存储的数据:

      

    没有数据从退役的节点中自动删除,   所以如果你想让节点重新投入使用不同的令牌   在戒指上,应手动移除。

    这可以通过删除退役节点中data_file_directories文件中指定的commitlog_directorysaved_caches_directorycassandra.yaml中存储的数据来完成。