在Apache Ignite中将数据从一个节点移动到同一群集中的其他节点

时间:2018-04-20 06:16:47

标签: ignite distributed-caching

在8个节点的基准群集中,我们在分区模板中有数据而没有备份。假设我在SampleTable(@Cache)的所有8个节点中都有avg 28K条目。总数据= 28K * 8 = 224K条目。

CREATE TABLE SampleTable(....)WITH“template = partitioned”

现在我想关闭一个节点,在关闭之前我想将数据从第8个节点移动到其他节点,因此大约32K(32K * 7 = 224K)条目到7个节点。我可以将数据从任何节点移动到其他节点吗?

如何在关闭该节点之前将所有数据从一个节点移动到其他节点(群集)?保持数据平衡并分布在其余7个节点中。

我使用create语句创建了表(SampleTable),并使用insert语句插入了数据(使用JDBC连接)。

启用持久性。

2 个答案:

答案 0 :(得分:1)

我认为最直接的方法是使用备份。 无论如何,如果您需要避免数据丢失,则必须使用备份(或/和持久性)。

作为一种简单的解决方法,您可以尝试以下步骤:

  1. 您可以使用ScanQuery扫描要关闭的节点上的本地数据,并将数据存储在数据库中。
  2. 之后,关闭节点并将其从基线中排除。
  3. 从数据库上传数据。

答案 1 :(得分:0)

只有在群集中配置了备份(> 0)时,下述方法才有效。

要从基准拓扑中删除节点并在其余7个节点之间重新平衡数据,您可以使用Cluster Activation Tool

  1. 停止要从拓扑中删除的节点。

  2. 等到节点停止。邮件Ignite node stopped OK应出现在日志中。

  3. 检查该节点是否处于脱机状态:

  4. $IGNITE_HOME/bin/control.sh --baseline

    Cluster state: active
    Current topology version: 8
    
    Baseline nodes:
    ConsistentID=<node1_id>, STATE=ONLINE
    ConsistentID=<node2_id>, STATE=ONLINE
    ...
    ConsistentID=<node8_id>, STATE=OFFLINE
    --------------------------------------------------------------------------------
    Number of baseline nodes: 8
    
    Other nodes not found.
    
    1. 从基线拓扑中删除节点:
    2. $IGNITE_HOME/bin/control.sh --baseline remove <node8_id>