阿里云数据库 MySQL 5.6 版支持通过 TokuDB 存储引擎压缩数据。经过大量测试表明,数据表从 InnoDB 存储引擎转到 TokuDB 存储引擎后,数据量可以减少 80% 到 90%,即 2T 的数据量能压缩到 400G 甚至更低。除了数据压缩外,TokuDB 存储引擎还支持事务和在线 DDL 操作,可以很好兼容运行于 MyISAM 或 InnoDB 存储引擎上的应用。

TokuDB 限制说明

  • TokuDB 存储引擎无法支持外键 Foreign Key。
  • TokuDB 存储引擎不适用于频繁大量读取的场景。

操作步骤

  1. 检查 MySQL 版本,命令如下。
    SELECT version();
    说明 当前只有云数据库 MySQL 5.6 版支持 TokuDB 存储引擎,如果版本是 MySQL 5.1 或者 MySQL 5.5,需要先升级到 MySQL 5.6。
  2. 设置loose_tokudb_buffer_pool_ratio的比例,即 tokudb 占用 tokudb 和 innodb 共用缓存的比例。
    select sum(data_length) into @all_size from information_schema.tables where engine='innodb';
    select sum(data_length) into @change_size from information_schema.tables where engine='innodb' and concat(table_schema, '.', table_name) in ('XX.XXXX', 'XX.XXXX', 'XX.XXXX');    
    select round(@change_size/@all_size*100);

    其中,XX.XXXX 为需要转化成 TokuDB 存储引擎的数据库和表名。

  3. 重启实例。

    操作步骤请参见重启实例

  4. 修改存储引擎。
    ALTER TABLE XX.XXXX ENGINE=TokuDB

    其中,XX.XXXX 为需要转化成 TokuDB 存储引擎的数据库和表名。

您也可以登录 DMS 修改数据表存储引擎,具体操作请参见 DMS 产品文档