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
;
點擊立即免費試用雲產品 開啓雲上實踐之旅!
本文爲阿里雲原創內容,未經允許不得轉載。