实践教程之使用 PolarDB-X 的 TTL 表功能

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
;
点击立即免费试用云产品 开启云上实践之旅!

原文链接

本文为阿里云原创内容,未经允许不得转载。

猜你喜欢

转载自blog.csdn.net/yunqiinsight/article/details/131811099
TTL