實踐教程之使用 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
;
點擊立即免費試用雲產品 開啓雲上實踐之旅!

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章