DLM功能使用了两张系统表,即mysql.dlm_policies表和mysql.dlm_progress表,您可以使用高权限账户查看当前集群上所有可用的DLM策略和DLM策略的执行记录。系统启动时会自动创建这两张表,无需您手动创建。

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 policies table'
1 row in set (0.00 sec)
参数说明
参数说明
Id自增主键。
Table_schemaDLM策略对应表所在数据库。
Table_nameDLM策略对应表的表名称。
Policy_nameDLM策略的名称。
Policy_typeDLM策略的类型。取值范围:
  • TABLE(默认):归档为表。
  • PARTITION:归档为分区。暂不支持。
  • NONE:直接删除数据。
Archive_typeDLM策略的执行方式。取值范围:
  • PARTITION COUNT(默认):将满足分区数量的数据进行归档。
  • CONDITION:将满足条件的数据进行归档。暂不支持。
Storage_mode存储模式。取值范围:
  • READ ONLY(默认):只读。
  • READ WRITE:读写。暂不支持。
Storage_engineDLM表的存储引擎,目前仅支持将数据归档为CSV格式。
Storage_mediaDLM表的存储介质,目前仅支持OSS引擎,对应OSS存储。
Storage_schema_nameDLM归档为表时,表所在的数据库。
Storage_table_nameDLM归档为表时的表名称。
Data_compressed归档后的数据是否压缩。暂不支持。
Compressed_algorithm数据压缩算法。暂不支持。
EnabledDLM策略是否生效。取值范围:
  • ENABLED(默认):DLM策略生效。
  • DISABLED:DLM策略不生效。
Priority_numberDLM策略的执行优先级。暂不支持。
Tier_partition_numberPARTITION COUNT进行数据归档时,执行的分区数量。
Tier_conditionCONDITION进行数据归档时的执行条件。暂不支持。
Extra_info其他信息。
CommentDLM策略的备注。

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 progress table'
1 row in set (0.00 sec)
参数说明
参数说明
Id自增主键。
Table_schemaDLM策略对应表所在数据库。
Table_nameDLM策略对应表的表名称。
Policy_nameDLM策略的名称。
Policy_typeDLM策略的类型。取值范围:
  • TABLE(默认):归档为表。
  • PARTITION:归档为分区。暂不支持。
  • NONE:直接删除数据。
Archive_optionDLM策略的执行条件。
Storage_engineDLM策略的存储引擎,目前仅支持将数据归档为CSV格式。
Storage_mediaDLM策略的存储介质。取值范围:
  • OSS(默认):OSS存储。
  • DISK:对应本地PFS存储。暂不支持。
Data_compressed归档后的数据是否压缩。暂不支持。
Compressed_algorithm数据压缩算法。暂不支持。
Archive_partitionsDLM归档分区的名称。
Archive_stageDLM的执行阶段。具体阶段如下:
  • INITIALIZE:执行任务初始化阶段。
  • WAITING:任务等待执行阶段。
  • DATA_COPYING:复制需要的数据到新的存储介质。
  • STORAGE_MOVING:修改需要归档的数据所对应的引擎。
  • DATA_VERIFYING:验证归档后的数据是否与原始数据一致。
  • DATA_DELETING:删除原始数据,释放存储空间。
  • ARCHIVE_COMPLETE:策略执行完成。
  • ARCHIVE_ERROR:策略执行错误。
说明
  • 如果某一个DLM策略正在执行,即执行阶段为除ARCHIVE_COMPLETE之外的其他阶段,重复执行当前DLM策略会自动跳过。
  • 如果DLM策略执行阶段为ARCHIVE_ERROR,则表示当前DLM流程执行出错,错误信息会保存在mysql.dlm_progress表中的Extra_info字段中。您需要在确定DLM策略执行失败的原因后,手动删除当前DLM策略的执行记录,或者将当前策略的状态改为ARCHIVE_COMPLETE,即运行UPDATE mysql.dlm_progress SET Archive_stage = "ARCHIVE_COMPLETE" where Id = current_progress_id;语句,再次重新执行DLM策略。
Archive_percentage当前DLM策略执行进度百分比。
Archived_file_infoDLM策略归档后的文件信息。
Start_time开始执行DLM策略的时间。
End_timeDLM策略执行结束的时间。
Extra_info其他信息。