Fitur Data Lifecycle Management (DLM) menggunakan dua tabel sistem: mysql.dlm_policies dan mysql.dlm_progress. Kedua tabel dibuat secara otomatis saat sistem dimulai—tidak diperlukan pengaturan manual.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
Akun istimewa pada kluster PolarDB
Fitur DLM diaktifkan pada kluster
Batasan saat ini
Bidang-bidang berikut belum tersedia dan akan didukung pada rilis mendatang:
| Field | Tabel | Deskripsi |
|---|---|---|
Archive_type: CONDITION | mysql.dlm_policies | Mengarsipkan data yang memenuhi kondisi tertentu |
Storage_mode: READ WRITE | mysql.dlm_policies | Mode akses baca-tulis untuk data yang diarsipkan |
Data_compressed | Both | Menentukan apakah data yang diarsipkan dikompresi |
Compressed_algorithm | Both | Algoritma kompresi untuk data yang diarsipkan |
Priority_number | mysql.dlm_policies | Prioritas eksekusi kebijakan DLM |
Tier_condition | mysql.dlm_policies | Kondisi untuk pengarsipan ketika Archive_type bernilai CONDITION |
Storage_media: DISK | mysql.dlm_progress | Mengarsipkan data ke storage disk |
Tabel mysql.dlm_policies
Tabel mysql.dlm_policies mencatat semua kebijakan DLM pada kluster saat ini.
Table schema
CREATE TABLE `dlm_policies` (
`Id` bigint(20) NOT NULL AUTO_INCREMENT,
`Table_schema` varchar(64) NOT NULL,
`Table_name` varchar(64) NOT NULL,
`Policy_name` varchar(64) NOT NULL,
`Policy_type` varchar(64) DEFAULT NULL,
`Archive_type` varchar(20) DEFAULT NULL,
`Storage_mode` varchar(20) DEFAULT NULL,
`Storage_engine` varchar(64) DEFAULT NULL,
`Storage_media` varchar(20) DEFAULT NULL,
`Storage_schema_name` varchar(64) DEFAULT NULL,
`Storage_table_name` varchar(64) DEFAULT NULL,
`Data_compressed` varchar(10) DEFAULT 'OFF',
`Compressed_algorithm` varchar(64) DEFAULT NULL,
`Enabled` varchar(10) DEFAULT 'ON',
`Priority_number` int(11) NOT NULL,
`Tier_partition_number` int(11) DEFAULT '0',
`Tier_condition` varchar(512) DEFAULT NULL,
`Extra_info` json NOT NULL,
`Comment` varchar(2048) DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `unique_policy` (`Table_schema`,`Table_name`,`Policy_name`)
) /*!50100 TABLESPACE `mysql` */ ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PolarDB DLM policies table'
1 row in set (0.00 sec)Parameters
| Parameter | Default | Nilai valid | Deskripsi |
|---|---|---|---|
Id | — | — | Primary key auto-increment. |
Table_schema | — | — | Database yang berisi tabel tersebut. |
Table_name | — | — | Nama tabel. |
Policy_name | — | — | Nama kebijakan DLM. |
Policy_type | TABLE | TABLE, PARTITION, NONE | Jenis kebijakan DLM. TABLE: data diarsipkan sebagai tabel. PARTITION: data diarsipkan sebagai partisi. NONE: data dihapus langsung. |
Archive_type | PARTITION COUNT | PARTITION COUNT, CONDITION (belum tersedia) | Mode eksekusi kebijakan DLM. PARTITION COUNT: mengarsipkan data berdasarkan jumlah partisi. |
Storage_mode | READ ONLY | READ ONLY, READ WRITE (belum tersedia) | Mode akses penyimpanan untuk data yang diarsipkan. |
Storage_engine | — | — | Mesin penyimpanan tabel DLM. Saat ini, hanya format CSV yang didukung. |
Storage_media | — | — | Media penyimpanan tabel DLM. Saat ini, data hanya dapat diarsipkan ke Object Storage Service (OSS). |
Storage_schema_name | — | — | Database yang berisi tabel arsip. Berlaku ketika Policy_type bernilai TABLE. |
Storage_table_name | — | — | Nama tabel arsip. Berlaku ketika Policy_type bernilai TABLE. |
Data_compressed | OFF | — | Menentukan apakah data yang diarsipkan dikompresi. Belum tersedia. |
Compressed_algorithm | — | — | Algoritma kompresi untuk data yang diarsipkan. Belum tersedia. |
Enabled | ENABLED | ENABLED, DISABLED | Menentukan apakah kebijakan DLM diaktifkan. |
Priority_number | — | — | Prioritas eksekusi kebijakan DLM. Belum tersedia. |
Tier_partition_number | 0 | — | Jumlah partisi yang akan diarsipkan ketika Archive_type bernilai PARTITION COUNT. |
Tier_condition | — | — | Kondisi pengarsipan ketika Archive_type bernilai CONDITION. Belum tersedia. |
Extra_info | — | — | Informasi tambahan yang disimpan dalam format JSON. |
Comment | — | — | Komentar untuk kebijakan DLM. |
Tabel mysql.dlm_progress
Tabel mysql.dlm_progress menyimpan catatan eksekusi kebijakan DLM pada kluster saat ini.
Table schema
CREATE TABLE `dlm_progress` (
`Id` bigint(20) NOT NULL AUTO_INCREMENT,
`Table_schema` varchar(64) NOT NULL,
`Table_name` varchar(64) NOT NULL,
`Policy_name` varchar(64) NOT NULL,
`Policy_type` varchar(64) DEFAULT NULL,
`Archive_option` varchar(64) DEFAULT NULL,
`Storage_engine` varchar(64) DEFAULT NULL,
`Storage_media` varchar(20) DEFAULT NULL,
`Data_compressed` varchar(10) DEFAULT 'OFF',
`Compressed_algorithm` varchar(64) DEFAULT NULL,
`Archive_partitions` varchar(2048) DEFAULT NULL,
`Archive_stage` varchar(64) DEFAULT NULL,
`Archive_percentage` int(11) DEFAULT NULL,
`Archived_file_info` json NOT NULL,
`Start_time` datetime NOT NULL,
`End_time` datetime DEFAULT NULL,
`Extra_info` json NOT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `unique_progress` (`Table_schema`,`Table_name`,`Policy_name`,`Start_time`)
) /*!50100 TABLESPACE `mysql` */ ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PolarDB DLM progress table'
1 row in set (0.00 sec)Parameters
| Parameter | Default | Nilai valid | Deskripsi |
|---|---|---|---|
Id | — | — | Primary key auto-increment. |
Table_schema | — | — | Database yang berisi tabel tersebut. |
Table_name | — | — | Nama tabel. |
Policy_name | — | — | Nama kebijakan DLM. |
Policy_type | TABLE | TABLE, PARTITION, NONE | Jenis kebijakan DLM. TABLE: data diarsipkan sebagai tabel. PARTITION: data diarsipkan sebagai partisi. NONE: data dihapus langsung. |
Archive_option | — | — | Kondisi eksekusi kebijakan DLM. |
Storage_engine | — | — | Mesin penyimpanan untuk data yang diarsipkan. Saat ini, hanya format CSV yang didukung. |
Storage_media | OSS | OSS, DISK (belum tersedia) | Media penyimpanan untuk data yang diarsipkan. |
Data_compressed | OFF | — | Menentukan apakah data yang diarsipkan dikompresi. Belum tersedia. |
Compressed_algorithm | — | — | Algoritma kompresi untuk data yang diarsipkan. Belum tersedia. |
Archive_partitions | — | — | Nama partisi yang digunakan untuk pengarsipan data. |
Archive_stage | — | INITIALIZE, WAITING, DATA_COPYING, STORAGE_MOVING, DATA_VERIFYING, DATA_DELETING, ARCHIVE_COMPLETE, ARCHIVE_ERROR | Tahap eksekusi kebijakan DLM. Lihat Tahap pengarsipan untuk detailnya. |
Archive_percentage | — | — | Progres eksekusi kebijakan DLM, dalam persentase. |
Archived_file_info | — | — | Informasi file untuk data yang diarsipkan, disimpan dalam format JSON. |
Start_time | — | — | Waktu mulai eksekusi kebijakan DLM. |
End_time | — | — | Waktu selesai eksekusi kebijakan DLM. |
Extra_info | — | — | Informasi tambahan yang disimpan dalam format JSON. Jika kebijakan berada pada tahap ARCHIVE_ERROR, detail error disimpan di sini. |
Tahap pengarsipan
Bidang Archive_stage melacak setiap tahap eksekusi kebijakan DLM:
| Tahap | Deskripsi |
|---|---|
INITIALIZE | Tugas sedang diinisialisasi. |
WAITING | Tugas sedang menunggu untuk dieksekusi. |
DATA_COPYING | Data sedang disalin ke media penyimpanan baru. |
STORAGE_MOVING | Sistem sedang mengalihkan mesin penyimpanan untuk data yang diarsipkan. |
DATA_VERIFYING | Sistem sedang memverifikasi bahwa data yang diarsipkan sesuai dengan data aslinya. |
DATA_DELETING | Sistem sedang menghapus data asli untuk membebaskan storage space. |
ARCHIVE_COMPLETE | Eksekusi kebijakan DLM berhasil diselesaikan. |
ARCHIVE_ERROR | Terjadi error selama eksekusi kebijakan DLM. |
Jika kebijakan DLM berada pada tahap apa pun selain ARCHIVE_COMPLETE, eksekusi duplikat dari kebijakan yang sama akan dilewati secara otomatis.Penanganan error pengarsipan
Jika Archive_stage bernilai ARCHIVE_ERROR, periksa bidang Extra_info dalam mysql.dlm_progress untuk detail error.
Setelah mengidentifikasi penyebabnya, lakukan salah satu langkah berikut untuk mengatur ulang status kebijakan sebelum menjalankannya kembali:
Hapus catatan eksekusi kebijakan yang gagal.
Jalankan pernyataan berikut untuk mengatur status menjadi
ARCHIVE_COMPLETE:UPDATE mysql.dlm_progress SET Archive_stage = "ARCHIVE_COMPLETE" WHERE Id = <current_progress_id>;Ganti
<current_progress_id>dengan nilaiIddari catatan eksekusi yang gagal.
Kemudian jalankan kembali kebijakan DLM.