Placement Rules in SQL 使用案例
作者: WalterWj 原文来源:https://tidb.net/blog/25711108
使用背景
为了减少跨机房流量使用,可以将一些不重要表设置为 3 副本且固定在主机房。
拓扑确定
使用非功能测试环境做测试,先确认当前拓扑:
默认一共 5 副本,当前 3 副本会放在 rack1/2/4,2 副本放在 rack3/5
使用方法
创建 test.pr 表
Create table pr (id int primary key,c1 varchar(200));
查看 test.pr 表的 region 分布
可以看到 test.pr 表有 5 副本,region id 为 3668516,5 个 peer id,label 信息可以看到 3 个在 zone1 和 dc1,2 个在 dc2 和 zone2。
创建数据存放规则
创建存放规则名为 3policy,规则设置 3 副本,leader 和两个副本都在 dc1(机房 label,主机房) 中。
Create placement policy 3policy leader_constraints="[+dc=dc1]" follower_constraints="{+dc=dc1: 2}";
确认规则
SELECT * FROM INFORMATION_SCHEMA.PLACEMENT_POLICIES pp ;
可以看到规则已经创建成功。注意:绑定规则的对象都是异步调度。
查看规则
Show placement;
也可以看下当前标签信息
使用规则
为表指定放置规则
alter table test.pr placement policy 3policy;
这样 test.pr 表就会使用 3policy 的规则。
查看规则
Show placement;
查看 test.pr 的 region 分布
可以看到 test.pr 的 region 分布,都存放在 dc1(主机房) 中。
当然,也可以在创建表的时候就直接指定规则:
规则取消和删除
取消表规则
alter table test.pr placement policy default;
可以看到表数据分布恢复 5 副本。
删除规则
Drop placement policy 3policy;
可以看到规则已经没了。
注意:需要删除的规则不能有任何表被绑定。
注意事项
需要注意,以上命令数据库服务需要的权限:
创建规则需要有 create 权限
使用规则 alter 需要权限
如果是 create table 就带上规则,只需要 create 权限即可。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c9dd6b0fa12959330aada247】。文章转载请联系作者。
评论