From 3aaa9960f19fe57f2fcaebbe6d788f933598a00e Mon Sep 17 00:00:00 2001 From: nolouch Date: Mon, 16 Jan 2023 17:19:41 +0800 Subject: [PATCH] placementinsql: add the survival preferences docs Signed-off-by: nolouch --- placement-rules-in-sql.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 0eb77e023ef3..5b869659826f 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -134,6 +134,7 @@ SELECT * FROM information_schema.partitions WHERE tidb_placement_policy_name IS | `FOLLOWER_CONSTRAINTS` | 仅适用于 follower 的约束列表。 | | `LEARNER_CONSTRAINTS` | 仅适用于 learner 的约束列表。 | | `LEARNERS` | 指定 learner 的数量。 | +| `SURVIVAL_PREFERENCE` | 指定副本放置按 label 容灾等级的优先级。例如 `SURVIVAL_PREFERENCE="[region, zone, host]"` | ## 示例 @@ -247,6 +248,25 @@ PARTITION BY RANGE( YEAR(purchased) ) ( > > 字典和列表格式都基于 YAML 解析,但 YAML 语法有些时候不能被正常解析。例如 YAML 会把 `"{+disk=ssd:1,+disk=nvme:2}"`(`:` 后无空格)错误地解析成 `'{"+disk=ssd:1": null, "+disk=nvme:2": null}'`,不符合预期。但 `"{+disk=ssd: 1,+disk=nvme: 2}"`(`:` 后有空格)能被正确解析成 `'{"+disk=ssd": 1, "+disk=nvme": 2}'`。 + +### 生存能力偏好设置 + +一些重要的数据可能需要具备跨可用区存储多个副本,从而具备高的容灾生存能力,比如具有 Region 级别的生存能力,`SURVIVAL_PREFERENCES` 可以提供生存能力的偏好设置。 +以下示例设置了一个约束,要求数据尽量满足生存偏好设置: + +``` sql +CREATE PLACEMENT POLICY multiregion + follower=4 + PRIMARY_REGION="region1" + SURVIVAL_PREFERENCES="[region, zone]"; +``` + +设置了该策略的表,数据会先优先满足跨 Region 级别数据隔离的生存目标,再保证跨 zone 级别的数据隔离的生存目标。 + +> **注意:** +> +> `SURVIVAL_PREFERENCES` 和 PD 中的 `LOCATION_LABELS` 是等价的,更多信息可以参考[通过拓扑 label 进行副本调度](/schedule-replicas-by-topology-labels.md)。 + ## 工具兼容性 | 工具名称 | 最低兼容版本 | 说明 |