CREATE PLACEMENT POLICY
警告:
Placement Rules in SQL 是 TiDB 在 v5.3.0 中引入的实验特性,其语法在 GA 前可能会发生变化,还可能存在 bug。如果你知晓潜在的风险,可通过执行
SET GLOBAL tidb_enable_alter_placement = 1;来开启该实验特性。
CREATE PLACEMENT POLICY 用于创建命名的放置策略,随后可以将该策略分配给表、分区或数据库。
语法图
1. CreatePolicyStmt ::=
2. "CREATE" "PLACEMENT" "POLICY" IfNotExists PolicyName PlacementOptionList
4. PolicyName ::=
5. Identifier
7. PlacementOptionList ::=
8. DirectPlacementOption
9. | PlacementOptionList DirectPlacementOption
10. | PlacementOptionList ',' DirectPlacementOption
12. DirectPlacementOption ::=
13. "PRIMARY_REGION" EqOpt stringLit
14. | "REGIONS" EqOpt stringLit
15. | "FOLLOWERS" EqOpt LengthNum
16. | "VOTERS" EqOpt LengthNum
17. | "LEARNERS" EqOpt LengthNum
18. | "SCHEDULE" EqOpt stringLit
19. | "CONSTRAINTS" EqOpt stringLit
20. | "LEADER_CONSTRAINTS" EqOpt stringLit
21. | "FOLLOWER_CONSTRAINTS" EqOpt stringLit
22. | "VOTER_CONSTRAINTS" EqOpt stringLit
23. | "LEARNER_CONSTRAINTS" EqOpt stringLit
示例
注意:
如要查看所在集群中可用的区域,见
SHOW PLACEMENT LABELS。如果未看到任何可用的区域,此 TiKV 集群在部署时可能未正确设置标签 (label)。
1. CREATE PLACEMENT POLICY p1 PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4;
2. CREATE TABLE t1 (a INT) PLACEMENT POLICY=p1;
3. SHOW CREATE PLACEMENT POLICY p1;
1. Query OK, 0 rows affected (0.08 sec)
3. Query OK, 0 rows affected (0.10 sec)
5. +--------+---------------------------------------------------------------------------------------------------+
6. | Policy | Create Policy |
7. +--------+---------------------------------------------------------------------------------------------------+
8. | p1 | CREATE PLACEMENT POLICY `p1` PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4 |
9. +--------+---------------------------------------------------------------------------------------------------+
10. 1 row in set (0.00 sec)
MySQL 兼容性
该语句是 TiDB 对 MySQL 语法的扩展。
