為了進一步降低用戶的數(shù)據(jù)存儲成本,阿里云RDS推出了數(shù)據(jù)壓縮的支持。
在TokuDB引擎的幫助下,RDS for MySQL能以低于五分之一的存儲開銷來支持用戶大數(shù)據(jù)需求。
?
---------------------------------
為什么要壓縮數(shù)據(jù)?
當(dāng)一個數(shù)據(jù)庫的數(shù)據(jù)空間達到TB級別時運維難度是非常高的。尤其是數(shù)據(jù)遷移和備份操作,不僅耗時將會成倍增長,而且成功率會有很大下降。另外無論用戶是自建數(shù)據(jù)庫還是使用云服務(wù),增長迅速的存儲空間都會帶來巨大的開支?
---------------------------------
什么是TokuDB
TokuDB是一個支持事務(wù)的MySQL引擎,擁有出色的數(shù)據(jù)壓縮能力和極低的資源消耗。RDS團隊將某些超過2TB的InnoDB表轉(zhuǎn)換成TokuDB后,數(shù)據(jù)空間驟降到400GB;寫性能有一定程度提升的同時,IOPS反而降低為原先的八分之一。
---------------------------------
如何壓縮數(shù)據(jù)
RDS for MySQL 5.6全面兼容TokuDB,用戶可以通過命令行或者DMS對現(xiàn)有的表進行數(shù)據(jù)壓縮。具體操作步驟參考阿里云官網(wǎng)文檔中心。
---------------------------------
使用須知
1、 TokuDB可以大幅度降低存儲使用量和IOPS開銷
2、 TokuDB支持在線DDL,添加/刪除列和索引不會引起阻塞
3、 TokuDB無法支持外鍵Foreign Key
4、 TokuDB不適用于大量讀取的場景
---------------------------------
操作步驟
1、 升級RDS for MySQL
目前只有5.6版本支持TokuDB。所以在進行壓縮前用戶需要將RDS for MySQL升級到5.6版本。
2、 配置TokuDB引擎
令行: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 ('dba1.tbl1', 'db2.tbl2', 'db3.tbl3');
select round(@change_size/@all_size*100);
參數(shù)配置:
登錄RDS控制臺,將loose_tokudb_buffer_pool_ratio設(shè)置為上步計算得到百分比。該參數(shù)需要重啟數(shù)據(jù)庫才能生效。
3、 開啟壓縮
命令行:ALTER TABLE XXX ENGINE=TokuDB