tidb 冷热隔离 创建表 默认不指定存放策略,数据会存在什么地方

【 TiDB 使用环境】生产环境 /测试/ Poc
问题 :tidb 冷热隔离 创建表 默认不指定存放策略,数据会存在什么地方
【 TiDB 版本】
6.5.3
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

理论上随机放了

不指定策略应该是随机的

image
默认建表的数据, hhd上面也会有数据, 这样会造成数据不均衡

这样子冷热隔离就没有意义,希望冷数据存放到hhd 上边,热数据存放在ssd上面,

这样子也就是所有的表都得指定

是都要指定的,分区表每个分表都要指定

是要指定的,你建表的时候需要指定策略,比如你建立一个策略,你就需要对表绑定该策略
ALTER TABLE t1 PARTITION id PLACEMENT POLICY=p1;

建表的时候不指定,他也不知道你是冷数据还是热数据啊

应该会有策略 默认建表不走某个策略 ,例如默认建表不走p1策略

你用程序员思维想一下,建表不设置 Placement Rules就没有策略啊

哈哈 点赞 点赞 牛 师傅

随机放的

可以对数据库设置存放策略,在对应表设置存放策略,这样就可以达到创建表默认存放在ssd中,如果需要冷数据ze指定hhd 中

随机存储呀

大部分用户是不做冷热分离的,你可以给他们提个需求啊,挺好的

不是,你直接针对整个库指定默认存放策略—比如默认存放的ssd,ALTER DATABASE test PLACEMENT POLICY=p2;
然后建历史表的时候单独指定放到hhd中就行了啊。。。

如果指定位置也是可以的,通过pd的label,比如这种

现在default的placement-rule没办法通过Placement rule in SQL的方式来直接修改,只能通过原始的pd-ctl来修改。原理可以参考下面这个文章。
https://docs.pingcap.com/zh/tidb/stable/configure-placement-rules#配置规则操作步骤

我给你贴下大概的执行步骤吧:

  1. 查看当前的default规则
tiup ctl:v6.5.3 pd config placement-rules show --group=pd --id=default

正常来说,返回值应该是

{
  "group_id": "pd",
  "id": "default",
  "start_key": "",
  "end_key": "",
  "role": "voter",
  "is_witness": false,
  "count": 3,
  "location_labels": [
    "zone",
    "dc",
    "host",
    "disk"
  ]
}

  1. 手动加一个基于lable的label_constraints,将需要排除的label加进去,例子如下
{
  "group_id": "pd",
  "id": "default",
  "start_key": "",
  "end_key": "",
  "role": "voter",
  "is_witness": false,
  "count": 3,
  "label_constraints": [
    {
      "key": "disk",
      "op": "notIn",
      "values": [
        "sata",
        "sata-new"
      ]
    }
  ],
  "location_labels": [
    "zone",
    "dc",
    "host"
  ]
}
  1. 将配置应用到pd中
tiup ctl:v6.5.3 pd config placement save --in=rules.json
1 个赞