Skip to content

Commit

Permalink
placementinsql: add the survival preferences docs
Browse files Browse the repository at this point in the history
Signed-off-by: nolouch <nolouch@gmail.com>
  • Loading branch information
nolouch committed Jan 16, 2023
1 parent 2102de1 commit 3aaa996
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions placement-rules-in-sql.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]"` |

## 示例

Expand Down Expand Up @@ -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)
## 工具兼容性

| 工具名称 | 最低兼容版本 | 说明 |
Expand Down

0 comments on commit 3aaa996

Please sign in to comment.