副本移动
在
v1.32 中添加除了设置初始复制因子之外,您还可以主动管理 Weaviate 集群中分片副本的放置。这对于在扩展、停用节点或优化数据局部性之后重新平衡数据非常有用。副本移动是通过一组专用的 RESTful API 端点或通过下面描述的客户端库 API 进行管理的。
当启动副本移动时,它只会更改该分片的复制因子,而不会更改整个集合。集合具有特定的复制因子,但分片(集合的一个子集)可以拥有自己的复制因子,该因子可能不同。如果进行了副本复制操作,则可以将其递增。
检查分片状态
在启动任何移动之前,您可能需要检查副本的当前分布。您可以检索整个集合或其特定分片的碎片化状态。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
sharding_state = client.cluster.query_sharding_state(
collection=collection_name,
# shard=shard_name, # Optional: specify a shard to filter results
)
print(f"Shards in '{collection_name}': {[s.name for s in sharding_state.shards]}")
for shard in sharding_state.shards:
print(f"Nodes for shard '{shard.name}': {shard.replicas}")
代码输出
Shards in 'MyReplicatedDocCollection': ['0QK7V2bbAHQ2', 'arxzWNklLIU7', 'w5OcBGbNvRt4']
Nodes for shard '0QK7V2bbAHQ2': ['node3', 'node1']
Nodes for shard 'arxzWNklLIU7': ['node1', 'node2']
Nodes for shard 'w5OcBGbNvRt4': ['node2', 'node3']
启动副本移动
通过指定源节点、目标节点、集合名称、分片 ID 和操作类型(MOVE 或 COPY)来复制或移动分片副本。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
from weaviate.cluster.models import ReplicationType
operation_id = client.cluster.replicate(
collection=collection_name,
shard=shard_name,
source_node=source_node_name,
target_node=target_node_name,
replication_type=ReplicationType.COPY, # For copying a shard
# replication_type=ReplicationType.MOVE, # For moving a shard
)
print(f"Replication initiated, ID: {operation_id}")
代码输出
Replication initiated, ID: 32536c0e-09e1-4ea1-a2c5-e85af10a9d58
检查复制操作的状态
分片复制操作是异步的。可以查询操作状态,并可以选择查看完整的操作历史记录。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
op_status = client.cluster.replications.get(
uuid=operation_id,
include_history=True
)
print(f"Status for {operation_id}: {op_status.status}")
print(f"History for {operation_id}: {op_status.status_history}")
代码输出
Status for f771aae1-f3c4-4fac-bae6-90597e8c70bd: ReplicateOperationStatus(state=<ReplicateOperationState.FINALIZING: 'FINALIZING'>, errors=[])
History for f771aae1-f3c4-4fac-bae6-90597e8c70bd: [ReplicateOperationStatus(state=<ReplicateOperationState.REGISTERED: 'REGISTERED'>, errors=[]), ReplicateOperationStatus(state=<ReplicateOperationState.HYDRATING: 'HYDRATING'>, errors=[])]
注意
列出复制操作
列出所有正在进行和已完成的操作。可以按节点、集合和分片进行过滤。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
all_ops = client.cluster.replications.list_all()
print(f"Total replication operations: {len(all_ops)}")
filtered_ops = client.cluster.replications.query(
collection=collection_name,
target_node=target_node_name,
)
print(
f"Filtered operations for collection '{collection_name}' on '{target_node_name}': {len(filtered_ops)}"
)
代码输出
Total replication operations: 1
Filtered operations for collection 'MyReplicatedDocCollection' on 'node3': 1
取消复制操作
如果可能,将停止该操作。如果成功取消,其状态将更改为 已取消。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
client.cluster.replications.cancel(uuid=operation_id)
删除复制操作
从日志中删除复制操作。如果操作正在进行中,则首先将其取消。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
client.cluster.replications.delete(uuid=operation_id)
删除所有复制操作
从日志中删除所有复制操作。如果任何操作正在进行中,则首先将其取消。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
client.cluster.replications.delete_all()
更多资源
问题和反馈
如果您有任何问题或反馈,请在 用户论坛 中告诉我们。
