【 TiDB 使用环境】生产环境
【 TiDB 版本】8.5
咨询下,我表按time字段 按月做了分区。部署了集群。但以后,未来比如25年的26年的27年,后面3年或者5年,新扩容的tikv的时间分区咋配置呢?
没看懂,未来的数据接着建新的分区不就行了?
那这个就应该按照年份+月份分区,不然存放数据多年后,就会一个月份片区,有多年的数据。
或者是历史数据转储一下。
新扩容的tikv跟分区数据没有关系,扩容的tikv只是提高集群的容量及性能,可以简单理解为给数据库扩一下磁盘容量。
tidb是自动分片的,不用配置
需要提前建好分区。
可以后续有用到的时候用 add partition 加新的分区,tikv 和 pd 会自动平衡每个 tikv 上的 region 的,应用无需感知
大老们,这个需要自己后面建吗,这不自动吗?
不自动。
有个语法糖,可以简单点伸缩分区。但是需要你定时运行一下。
https://docs.pingcap.com/zh/tidb/stable/partitioned-table#alter-interval-分区
为2025年1月创建新分区,可以使用如下语句
ALTER TABLE T1 ADD PARTITION (PARTITION p202501 VALUES LESS THAN (‘2025-02-01’));
新分区创建完成后,TiDB会自动将新插入的数据路由到相应的分区中。但对于已经存在的数据,如果希望将数据均匀分布到新扩容的TiKV节点上,可以使用TiDB的 ADMIN CHECK TABLE
和 ADMIN REPAIR TABLE
命令来检查和修复分区数据的分布。
在 TiDB 中,TiDB 会自动按照月份规则创建新的分区来容纳新数据。 如果担心自动分区创建可能出现意外情况或者希望提前规划分区布局,也可以通过手动方式提前创建未来几年的分区。使用 ALTER TABLE 语句,例如,要为 2025 年 1 月 - 12 月按月创建分区,但也需要注意的是考虑未来分区扩容时,需要评估未来数据量的增长情况。例如,如果预计未来 3 - 5 年数据量会翻倍,需要确保 TiKV 节点有足够的磁盘空间来容纳新分区的数据。
好像不能自动创建吧。同学是在哪里看到的?有链接么?
这句说的有问题,是的,需要提前规划好。
PARTITION BY RANGE COLUMNS(time_column) (
PARTITION p0 VALUES LESS THAN ('2025-01-01'),
PARTITION p1 VALUES LESS THAN ('2025-02-01'),
...
-- 可以根据需要设置更多初始分区
PARTITION pn VALUES LESS THAN (MAXVALUE)
我是用shell+定时任务自动增加的,忘了这回事了
哦哦,我还以为又低调出了新功能呢。
手动添加分区就行