归档为IBD格式

本文介绍了将冷数据归档为IBD格式的方法。

说明

归档为IBD格式目前处于灰度发布阶段。如需使用,请前往配额中心,根据配额ID polardb_innodb_oss_enable找到配额名称,在对应的操作列单击申请来开通该功能。

前提条件

  • PolarDB MySQL版集群的产品版本需为企业版数据库引擎需为MySQL 8.0.1版本且修订版本为8.0.1.1.43或以上。

  • 开启冷数据归档功能。

注意事项

  • 归档后的表的使用方法与存储在InnoDB引擎上的表一致,能正常执行DML操作且支持事务,但无法执行DDL操作。

  • 执行冷数据归档时,将无法访问正在归档中的表数据。

    说明

    支持将参数polar_oss_ddl_shared的值设置为ON,以便读取访问正在执行冷数据归档的表数据。

  • 执行数据备份操作时,不会对OSS上的数据进行备份,故无法对OSS上的数据执行库表恢复和按时间点恢复操作。

  • 归档冷数据的过程中会占用一定量的网络和存储I/O资源,建议在业务低峰期或非活跃集群上执行冷数据归档操作。

  • 对象存储I/O时延是块存储I/O时延的百倍以上,您需评估因此导致的长SQL时延的影响。

使用说明

将表数据归档至OSS

当表中的数据为冷数据且对延时不敏感,或访问集中可被缓存且尾访问延迟不敏感时,您可以通过该语法将PolarStore块存储表转换为OSS对象存储表:

ALTER TABLE table_name STORAGE_TYPE OSS;

将数据导回至PolarStore存储

ALTER TABLE table_name STORAGE_TYPE NULL;

删除OSS上对应的文件

当您将OSS上的表删除或导回至PolarStore后,OSS上的文件不会同步删除。确定数据不再使用后,您可以使用如下语法删除OSS上对应的文件:

CALL dbms_oss.delete_table_file('database_name', 'table_name');

由于删除OSS上对应文件的操作是异步执行的,故需要等待集群中的所有节点都不再依赖OSS文件后才可完全删除,且流量较大时存在一定时延。因此,如果上述命令执行失败并返回错误信息OSS files are still in use时,您可以等待一段时间后再重新执行该命令。

示例

  1. 执行如下命令,创建数据库。

    CREATE DATABASE oss;
  2. 使用数据库。

    USE oss;
  3. 执行如下命令,创建表toss1

    CREATE TABLE `toss1`(
      `uid` int NOT NULL AUTO_INCREMENT,
      `text_data` text NOT NULL,
      `save_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY(`uid`)
    ) ENGINE = InnoDB;
  4. 执行如下命令,创建存储过程populate

    DELIMITER |
    CREATE PROCEDURE populate(IN `cnt` INT)
    BEGIN
      DECLARE i INT DEFAULT 1;
      WHILE (i <= cnt) DO
        INSERT INTO `toss1` (`text_data`) VALUES (REPEAT("#", 6333));
        SET i = i + 1;
      END WHILE;
    END |
    DELIMITER ;
  5. 调用存储过程,向表toss1中插入数据。

    CALL populate(5000);
  6. 执行如下命令,将数据归档至OSS。

    ALTER TABLE `toss1` STORAGE_TYPE OSS;
  7. 查询toss1表中的数据。

    SELECT COUNT(*) FROM `toss1`;
  8. 执行如下命令,删除OSS上的toss1表。

    DROP TABLE `toss1`;
  9. 执行如下命令,删除OSS数据库。

    DROP DATABASE oss;
  10. 执行如下命令,删除OSS上对应的文件。

    CALL dbms_oss.delete_table_file('oss', 'toss1');

冷数据归档耗时

执行冷数据归档操作的并发线程数量由参数innodb_oss_copy_worker控制,其参数值与集群规格绑定。

不同线程和数据量的冷数据归档耗时如下:

单张表的数据量

冷数据归档耗时

线程数量(4个)

线程数量(8个)

100 GB

约18分钟

约10分钟

1 TB

约2.5小时

约1.3小时

10 TB

约24小时

约13小时