Data Lifecycle Management (DLM) 機能では、2 つのシステムテーブル `mysql.dlm_policies` および `mysql.dlm_progress` を使用します。これらのテーブルは、システム起動時に自動的に作成されるため、手動での設定は不要です。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
PolarDB クラスターに対する特権アカウントを保有していること
クラスターで DLM 機能が有効化されていること
現在の制限事項
以下のフィールドは現時点では利用できませんが、今後のリリースで対応予定です。
| フィールド | テーブル | 説明 |
|---|---|---|
Archive_type: CONDITION | mysql.dlm_policies | 指定された条件を満たすデータのアーカイブ |
Storage_mode: READ WRITE | mysql.dlm_policies | アーカイブ済みデータへの読み書きアクセスモード |
Data_compressed | 両方 | アーカイブ済みデータの圧縮有無を指定 |
Compressed_algorithm | 両方 | アーカイブ済みデータの圧縮アルゴリズム |
Priority_number | mysql.dlm_policies | DLM ポリシーの実行優先度 |
Tier_condition | mysql.dlm_policies | Archive_type が CONDITION |
Storage_media: DISK | mysql.dlm_progress | ディスクストレージへのデータアーカイブ |
mysql.dlm_policies テーブル
mysql.dlm_policies テーブルには、現在のクラスターで設定されたすべての DLM ポリシーが記録されます。
テーブルスキーマ
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 ポリシーテーブル'
1 row in set (0.00 sec)パラメーター
| パラメーター | デフォルト値 | 有効な値 | 説明 |
|---|---|---|---|
Id | — | — | 自動増分プライマリキー。 |
Table_schema | — | — | 対象テーブルを含むデータベース。 |
Table_name | — | — | テーブル名。 |
Policy_name | — | — | DLM ポリシーの名称。 |
Policy_type | TABLE | TABLE、PARTITION、NONE | DLM ポリシーのタイプ。TABLE:テーブル単位でデータをアーカイブ。PARTITION:パーティション単位でデータをアーカイブ。NONE:データを直接削除。 |
Archive_type | PARTITION COUNT | PARTITION COUNT、CONDITION(現時点では未対応) | DLM ポリシーの実行モード。PARTITION COUNT:パーティション数に基づいてデータをアーカイブ。 |
Storage_mode | READ ONLY | READ ONLY、READ WRITE(現時点では未対応) | アーカイブ済みデータのストレージアクセスモード。 |
Storage_engine | — | — | DLM テーブルのストレージエンジン。現在は CSV 形式のみ対応。 |
Storage_media | — | — | DLM テーブルの記憶媒体。現在は Object Storage Service (OSS) へのアーカイブのみ対応。 |
Storage_schema_name | — | — | アーカイブ済みテーブルを含むデータベース。Policy_type が TABLE の場合に適用。 |
Storage_table_name | — | — | アーカイブ済みテーブルの名称。Policy_type が TABLE の場合に適用。 |
Data_compressed | OFF | — | アーカイブ済みデータの圧縮有無を指定。現時点では未対応。 |
Compressed_algorithm | — | — | アーカイブ済みデータの圧縮アルゴリズム。現時点では未対応。 |
Enabled | ENABLED | ENABLED、DISABLED | DLM ポリシーの有効/無効を指定。 |
Priority_number | — | — | DLM ポリシーの実行優先度。現時点では未対応。 |
Tier_partition_number | 0 | — | Archive_type が PARTITION COUNT の場合のアーカイブ対象パーティション数。 |
Tier_condition | — | — | Archive_type が CONDITION の場合のアーカイブ条件。現時点では未対応。 |
Extra_info | — | — | JSON 形式で格納される追加情報。 |
Comment | — | — | DLM ポリシーのコメント。 |
mysql.dlm_progress テーブル
mysql.dlm_progress テーブルには、現在のクラスターで実行された DLM ポリシーの実行記録が格納されます。
テーブルスキーマ
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 実行状況テーブル'
1 row in set (0.00 sec)パラメーター
| パラメーター | デフォルト値 | 有効な値 | 説明 |
|---|---|---|---|
Id | — | — | 自動増分プライマリキー。 |
Table_schema | — | — | 対象テーブルを含むデータベース。 |
Table_name | — | — | テーブル名。 |
Policy_name | — | — | DLM ポリシーの名称。 |
Policy_type | TABLE | TABLE、PARTITION、NONE | DLM ポリシーのタイプ。TABLE:テーブル単位でデータをアーカイブ。PARTITION:パーティション単位でデータをアーカイブ。NONE:データを直接削除。 |
Archive_option | — | — | DLM ポリシーの実行条件。 |
Storage_engine | — | — | アーカイブ済みデータのストレージエンジン。現在は CSV 形式のみ対応。 |
Storage_media | OSS | OSS、DISK(現時点では未対応) | アーカイブ済みデータの記憶媒体。 |
Data_compressed | OFF | — | アーカイブ済みデータの圧縮有無を指定。現時点では未対応。 |
Compressed_algorithm | — | — | アーカイブ済みデータの圧縮アルゴリズム。現時点では未対応。 |
Archive_partitions | — | — | データアーカイブに使用されるパーティション名。 |
Archive_stage | — | INITIALIZE、WAITING、DATA_COPYING、STORAGE_MOVING、DATA_VERIFYING、DATA_DELETING、ARCHIVE_COMPLETE、ARCHIVE_ERROR | DLM ポリシーの実行ステージ。詳細については、「アーカイブステージ」をご参照ください。 |
Archive_percentage | — | — | DLM ポリシーの実行進捗率(パーセンテージ)。 |
Archived_file_info | — | — | アーカイブ済みデータのファイル情報(JSON 形式)。 |
Start_time | — | — | DLM ポリシー実行の開始時刻。 |
End_time | — | — | DLM ポリシー実行の終了時刻。 |
Extra_info | — | — | JSON 形式で格納される追加情報。ARCHIVE_ERROR ステージの場合、エラー詳細がここに格納されます。 |
アーカイブステージ
Archive_stage フィールドは、DLM ポリシーの各実行ステージを追跡します。
| ステージ | 説明 |
|---|---|
INITIALIZE | タスクの初期化中。 |
WAITING | タスクの実行待ち。 |
DATA_COPYING | データを新しい記憶媒体へコピー中。 |
STORAGE_MOVING | アーカイブ済みデータのストレージエンジンを切り替え中。 |
DATA_VERIFYING | アーカイブ済みデータと元のデータが一致しているか検証中。 |
DATA_DELETING | ストレージ容量解放のため、元のデータを削除中。 |
ARCHIVE_COMPLETE | DLM ポリシーの実行が正常に完了しました。 |
ARCHIVE_ERROR | DLM ポリシーの実行中にエラーが発生しました。 |
ARCHIVE_COMPLETE 以外のステージにある DLM ポリシーは、重複実行が自動的にスキップされます。アーカイブエラーの対処方法
Archive_stage が ARCHIVE_ERROR の場合、エラー詳細を確認するには、Extra_info フィールドを mysql.dlm_progress テーブルから参照してください。
原因を特定した後、ポリシーのステータスをリセットして再実行するには、以下のいずれかの操作を行ってください。
失敗したポリシーの実行記録を削除します。
以下の文を実行し、ステータスを
ARCHIVE_COMPLETEに設定します。UPDATE mysql.dlm_progress SET Archive_stage = "ARCHIVE_COMPLETE" WHERE Id = <current_progress_id>;<current_progress_id>は、失敗した実行記録のId値に置き換えてください。
その後、DLM ポリシーを再度実行してください。