PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
本期实验将指导您如何进行PolarDB-X分区管理
前置准备
假设已经根据前一讲内容完成了PolarDB-X的搭建部署,使用PolarDB-X Operator安装PolarDB-X,并且可以成功链接上PolarDB-X数据库。
连接 PolarDB-X 集群
本步骤将指导您如何连接通过K8s部署的PolarDB-X集群。
1.执行如下命令,查看PolarDB-X集群登录密码。
kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
返回结果如下,您可以查看到PolarDB-X集群登录密码。
2.单击右上角的+图标,创建新的终端二,执行如下命令,将PolarDB-X集群端口转发到3306端口。
使用MySQL Client方式登录通过k8s部署的PolarDB-X集群前,您需要进行获取PolarDB-X集群登录密码和端口转发。
su galaxykube kubectl port-forward svc/polardb-x 3306
3.执行如下命令,连接PolarDB-X集群。
说明:
- 您需要将<PolarDB-X集群登录密码>替换为实际获取到的PolarDB-X集群登录密码。
- 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,请您稍等一分钟,重新转发端口并连接PolarDB-X集群即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集群登录密码>
TTL功能使用
1.创建数据库。
执行如下SQL语句,创建数据库并使用。
CREATE DATABASE local_partition mode='auto'; use local_partition;
2.创建TTL表。
学习创建TTL表的CREATE TABLE语法,请参见创建TTL表。
参照文档,执行如下SQL预计,创建一个分区表,按照月为粒度划分分区,分区12个月后失效。
需要掌握几个关键参数的含义:INTERVAL、EXPIRE AFTER、PRE ALLOCATE。
CREATE TABLE t_order ( id bigint NOT NULL AUTO_INCREMENT, gmt_modified DATETIME NOT NULL, PRIMARY KEY (id, gmt_modified) ) LOCAL PARTITION BY RANGE (gmt_modified) STARTWITH '2021-01-01' INTERVAL 1 MONTH EXPIRE AFTER 12 PRE ALLOCATE 3 PIVOTDATE NOW() DISABLE SCHEDULE ; SHOW FULL CREATE TABLE t_order\G;
3.查看TTL表的元数据。
information_schema.local_partitions视图记录了所有的物理分区。执行如下SQL语句,可以通过select语句查询物理分区的过期时间,以及数据的范围。
select * from information_schema.local_partitions where table_name = 't_order' and table_schema='local_partition'\G;
4.创建新的物理时间分区
学习为TTL表创建新的物理时间分区,请参见变更TTL表。
通过DDL命令提前创建物理分区。此命令多次调用不会无限制创建新分区,只会创建预定时间内的新分区。如果创建了TTL定时任务,TTL定时任务会自动调用这条命令。
ALTER TABLE t_order ALLOCATE LOCAL PARTITION;
5.失效过期的无论时间分区。
通过DDL命令删除已过期的物理分区,此命令只会删除已经过期的分区。
ALTER TABLE t_order EXPIRE LOCAL PARTITION; select * from information_schema.local_partitions where table_name = 't_order' and table_schema='local_partition'\G;
6.创建定时任务。
上述2条DDL命令可以使得TTL表的物理分区按照时间滚动,但是仍然需要我们手动调用。
TTL提供了定时任务功能,可以自动化地进行分区滚动。
学习TTL表创建、查看及删除定时任务的方法,请参见TTL表的定时任务。
CREATE SCHEDULE FOR LOCAL_PARTITION ON `local_partition`.`t_order` CRON '0 0 12 1/5 * ?' TIMEZONE '+08:00';
7.查看定时任务。
查看目前已创建的定时任务。
SELECT * FROM INFORMATION_SCHEMA.LOCAL_PARTITIONS_SCHEDULE\G;
8.手动触发一次定时任务。
set global BACKGROUND_TTL_EXPIRE_END_TIME="23:59"; FIRE SCHEDULE <id>;
9.查看定时任务执行结果。
SHOW SCHEDULE RESULT <id>;
10.删除定时任务
根据定时任务的id,删除定时任务。
DROP SCHEDULE <id>;
11.TTL表转换。
TTL表可以转换成普通表、普通表也可以转换成TTL表
学习TTL表转换的方法,请参见变更TTL表。
ALTER TABLE t_order REMOVE LOCAL PARTITIONING; ALTER TABLE t_order LOCAL PARTITION BY RANGE (gmt_modified) INTERVAL 1 MONTH EXPIRE AFTER 36 PRE ALLOCATE 1 ;
本文来源:PolarDB-X知乎号