在 Apache Ignite 中将数据从一个节点移动到同一集群中的另一个节点
Moving data from one node to other node in same cluster in Apache Ignite
在 8 个节点的基线集群中,分区模板中的数据没有备份。假设我在 SampleTable(@Cache) 的所有 8 个节点中平均有 28K 个条目。总数据 = 28K*8 = 224K 条目。
使用 "template=partitioned"
创建 TABLE SampleTable(....)
现在我想关闭一个节点,在关闭之前我想将数据从第 8 个节点移动到其他节点,因此大约 32K (32K*7=224K) 个条目到 7 个节点。我可以将数据从任何节点移动到其他节点吗?
如何在关闭该节点之前将所有数据从一个节点移动到其他节点(集群)?保持数据平衡并分布在其余 7 个节点中。
我使用 create 语句创建了 table (SampleTable),并使用 insert 语句插入了数据(使用 JDBC 连接)。
持久化已启用。
下面描述的方法只有在集群中配置了备份(> 0)时才有效。
要从基线拓扑中删除节点并在其余 7 个节点之间重新平衡数据,您可以使用 Cluster Activation Tool:
停止要从拓扑中删除的节点。
等到节点停止。消息 Ignite node stopped OK
应该出现在日志中。
检查节点是否离线:
$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.
- 从基线拓扑中删除节点:
$IGNITE_HOME/bin/control.sh --baseline remove <node8_id>
我认为最直接的方法是使用备份。
总之,如果你需要避免数据丢失,使用备份(or/and持久化)是必须的。
作为简单的解决方法,您可以尝试以下步骤:
- 您可以使用 ScanQuery 扫描要关闭的节点上的本地数据,并将数据存储在数据库中。
- 之后,关闭节点并将其从基线中排除。
- 从数据库上传数据。
在 8 个节点的基线集群中,分区模板中的数据没有备份。假设我在 SampleTable(@Cache) 的所有 8 个节点中平均有 28K 个条目。总数据 = 28K*8 = 224K 条目。
使用 "template=partitioned"
创建 TABLE SampleTable(....)现在我想关闭一个节点,在关闭之前我想将数据从第 8 个节点移动到其他节点,因此大约 32K (32K*7=224K) 个条目到 7 个节点。我可以将数据从任何节点移动到其他节点吗?
如何在关闭该节点之前将所有数据从一个节点移动到其他节点(集群)?保持数据平衡并分布在其余 7 个节点中。
我使用 create 语句创建了 table (SampleTable),并使用 insert 语句插入了数据(使用 JDBC 连接)。
持久化已启用。
下面描述的方法只有在集群中配置了备份(> 0)时才有效。
要从基线拓扑中删除节点并在其余 7 个节点之间重新平衡数据,您可以使用 Cluster Activation Tool:
停止要从拓扑中删除的节点。
等到节点停止。消息
Ignite node stopped OK
应该出现在日志中。检查节点是否离线:
$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.
- 从基线拓扑中删除节点:
$IGNITE_HOME/bin/control.sh --baseline remove <node8_id>
我认为最直接的方法是使用备份。 总之,如果你需要避免数据丢失,使用备份(or/and持久化)是必须的。
作为简单的解决方法,您可以尝试以下步骤:
- 您可以使用 ScanQuery 扫描要关闭的节点上的本地数据,并将数据存储在数据库中。
- 之后,关闭节点并将其从基线中排除。
- 从数据库上传数据。