若叢集中某些庫表的資料幾乎沒有更新、插入和修改操作,且讀取頻率非常低,如果您有降本需求,可以使用PolarDB MySQL版提供的冷資料歸檔功能,將這部分資料轉存至低成本的OSS上儲存,以降低資料存放區成本。本章節介紹了冷資料歸檔方法、技術原理等內容。
技術原理
歸檔為CSV或ORC格式的技術原理圖如下: 叢集中的熱資料存放區在PolarStore中,各個PolarDB節點通過Distributed File System(PolarFileSystem)訪問PolarStore中的資料。為降低資料存放區成本,達到冷熱資料分離管理的目的,您可以將PolarStore中的冷資料轉存至OSS:
對於普通表,您可以將冷資料歸檔為CSV或ORC格式並儲存在OSS上,隨後PolarDB節點可通過阿里雲內網訪問OSS上的資料。
對於分區表,您可以將冷資料歸檔為CSV或ORC格式並儲存在OSS上,或在讀寫節點上建立DLM策略來自動歸檔冷資料。目前冷資料歸檔功能支援將分區表中的部分資料以OSS外表的形式歸檔至OSS,同時也支援將分區表中的部分分區直接轉存至OSS。
歸檔後的資料格式會轉變為CSV或ORC格式並分成多個檔案儲存體在OSS上,PolarStore中的這部分資料會被自動刪除,儲存費用也會隨著儲存空間容量的降低而減少。
歸檔分區表中的冷資料功能目前處於灰階階段,如需使用,請前往配額中心,根據配額ID
polardb_mysql_hybrid_partition
找到配額名稱,在對應的操作列單擊申請來開通該功能。冷資料歸檔完成後,OSS上的歸檔表唯讀,且查詢效能較差。在沒有索引且使用串列查詢的情況下,查詢效能約為InnoDB儲存引擎的五分之一到十分之一。您需要提前測試資料歸檔後是否能滿足您的查詢效能要求。
當資料被歸檔為CSV或ORC格式作為冷資料存放區後,不再支援事務。
冷資料歸檔完成後,進行備份操作時,不會對OSS上已歸檔的冷資料進行備份,因此不支援通過備份進行庫表恢複、備份恢複或按還原時間點操作。
費用
冷資料存放區按照OSS中冷資料存放區的容量收取費用,具體收費為:
中國內地地區:0.0000325美元/GB/小時。
中國香港及海外地區:0.0000455美元/GB/小時。
您可以購買PolarDB儲存包,來抵扣OSS中冷資料的儲存容量,以減少儲存冷資料的費用。關於PolarDB儲存包的說明,請參見什麼是儲存包。
PolarDB儲存包抵扣規則如下:
地區類型 | 抵扣因子 | 1 GB儲存包的OSS儲存空間抵扣量 |
中國內地 | 0.045 | 1/0.045=22.22 GB |
中國香港及海外 | 0.045 | 1/0.045=22.22 GB |
例如,您購買了一個容量為100 GB的PolarDB儲存包,抵扣完儲存空間使用量後還剩50 GB。您的叢集的冷資料在中國內地地區使用了50 GB的OSS儲存用量。此時,儲存包將自動使用2.25 GB(50/22.22)的容量用於抵扣該部分的備份空間用量,最後該儲存包還剩餘47.75 GB容量。
若儲存包中剩餘容量不足以冷資料OSS儲存用量,超出部分將正常隨用隨付。
版本要求
歸檔為CSV或ORC格式的企業版叢集的版本要求如下:
當產品系列為叢集版時,版本需為如下版本之一:
PolarDB MySQL版8.0.1版本且修訂版本為8.0.1.1.31及以上。
PolarDB MySQL版8.0.2版本且修訂版本為8.0.2.2.9及以上。
當產品系列為多主叢集(庫表)時,版本需為PolarDB MySQL版8.0.1.0.13及以上。
不同檔案格式對比
歸檔冷資料時,您可以根據實際需要,選擇合適的歸檔檔案格式。
檔案格式 | 歸檔速度 | 讀取速度 | 是否是開源格式 | 佔用的儲存空間 | 歸檔後的資料修改方式 |
CSV | 較ORC格式快 說明 只支援使用單線程方式歸檔資料。 | 行存節點上,較ORC格式檔案快。 說明 支援使用單線程和多線程兩種方式讀取資料。 | 是 | 與沒有索引的InnoDB引擎中的表佔用的儲存空間一致 | 需要將OSS資料導回至PolarStore,再進行修改。 |
ORC | 慢 說明 只支援使用單線程方式歸檔資料。 | 適合通過單獨的列存節點進行AP查詢。 說明 只支援使用單線程方式讀取資料。 | 是 | 相同資料量的情況下,佔用的儲存空間為CSV格式檔案佔用的儲存空間的45%。 |
使用說明
歸檔冷資料
您需要先登入PolarDB控制台並開啟冷資料歸檔功能,然後串連資料庫叢集,再執行冷資料歸檔操作:
普通表:您可以手動將冷資料歸檔為CSV或ORC格式並儲存在OSS上。
分區表:您可以手動將冷資料歸檔為CSV或ORC格式並儲存在OSS上,或在讀寫節點上建立DLM策略來自動歸檔冷資料。
查詢冷資料
對普通表和分區表執行冷資料歸檔操作後,您可以通過以下方法查詢歸檔後的冷資料:
普通表:執行冷資料歸檔後,查詢冷資料的方法和查詢熱資料的方法一致,不需要修改訪問方式。
分區表:執行冷資料歸檔後,查詢冷資料的操作方法請參見查詢混合分區。
由于歸檔後的冷資料為單表多檔案格式,在查看冷資料時,您可以採用並行查詢進行查詢最佳化,詳情請參見基於OSS外表的單表多檔案查詢。
修改冷資料
如果您有低頻修改歸檔到OSS上冷資料的需求,您可以通過
ALTER ENGINE
文法將OSS資料導回至PolarStore進行修改。資料導回至PolarStore後,會同步刪除OSS上的冷資料。修改完資料之後,您可以再次將修改後的表歸檔為OSS表。詳情請參見將OSS資料導回至PolarStore。刪除冷資料
首先,你需要使用
DROP TABLE
刪除歸檔表,然後再通過CALL dbms_oss.delete_table_file('database_name', 'table_name');
來刪除歸檔後的冷資料。
聯絡我們
若您對冷資料歸檔功能有任何問題,可通過DingTalk搜尋群號入群諮詢。您可以直接@群內專家,並附上您要諮詢的問題;同時群內也有PolarDB MySQL版 小助手24*7小時線上回答您的問題。
DingTalk群號:24490017825