表结构说明

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_schema

DLM策略对应表所在数据库。

Table_name

DLM策略对应表的表名称。

Policy_name

DLM策略的名称。

Policy_type

DLM策略的类型。取值范围:

  • TABLE(默认):归档为表。

  • PARTITION:归档为分区。暂不支持。

  • NONE:直接删除数据。

Archive_type

DLM策略的执行方式。取值范围:

  • PARTITION COUNT(默认):将满足分区数量的数据进行归档。

  • CONDITION:将满足条件的数据进行归档。暂不支持。

Storage_mode

存储模式。取值范围:

  • READ ONLY(默认):只读。

  • READ WRITE:读写。暂不支持。

Storage_engine

DLM表的存储引擎,目前仅支持将数据归档为CSV格式。

Storage_media

DLM表的存储介质,目前仅支持OSS引擎,对应OSS存储。

Storage_schema_name

DLM归档为表时,表所在的数据库。

Storage_table_name

DLM归档为表时的表名称。

Data_compressed

归档后的数据是否压缩。暂不支持。

Compressed_algorithm

数据压缩算法。暂不支持。

Enabled

DLM策略是否生效。取值范围:

  • ENABLED(默认):DLM策略生效。

  • DISABLED:DLM策略不生效。

Priority_number

DLM策略的执行优先级。暂不支持。

Tier_partition_number

PARTITION COUNT进行数据归档时,执行的分区数量。

Tier_condition

CONDITION进行数据归档时的执行条件。暂不支持。

Extra_info

其他信息。

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 progress table'
1 row in set (0.00 sec)

参数说明

参数

说明

Id

自增主键。

Table_schema

DLM策略对应表所在数据库。

Table_name

DLM策略对应表的表名称。

Policy_name

DLM策略的名称。

Policy_type

DLM策略的类型。取值范围:

  • TABLE(默认):归档为表。

  • PARTITION:归档为分区。暂不支持。

  • NONE:直接删除数据。

Archive_option

DLM策略的执行条件。

Storage_engine

DLM策略的存储引擎,目前仅支持将数据归档为CSV格式。

Storage_media

DLM策略的存储介质。取值范围:

  • OSS(默认):OSS存储。

  • DISK:对应本地PFS存储。暂不支持。

Data_compressed

归档后的数据是否压缩。暂不支持。

Compressed_algorithm

数据压缩算法。暂不支持。

Archive_partitions

DLM归档分区的名称。

Archive_stage

DLM的执行阶段。具体阶段如下:

  • 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_info

DLM策略归档后的文件信息。

Start_time

开始执行DLM策略的时间。

End_time

DLM策略执行结束的时间。

Extra_info

其他信息。