HeatWaveノードの容量をMySQL Scale-out Data Management
MySQL Database Serviceのクエリ・アクセラレータであるHeatWaveは、MySQLサーバー上のInnoDBストレージエンジンを利用したテーブルのデータをパーティションに分け、複数台のHeatWaveノードのメインメモリに分散配置します。それぞれのHeatWaveノードのデータを、暗号化してOracle Cloud Infrastructure Object Storage(以下、OCI Object Storage)に永続化する機能をHeatWaveのScale-out Data Managementと呼んでいます。2021年8月にリリースされたHeatWave 8.0.26-u1でこの機能を実現する新たなデータ・マネージメント・レイヤーが追加されました。
HeatWaveクラスターを作成した時にデータ・マネージメント・レイヤーもあわせて作成されます。オブジェクト・ストレージに永続化されたHeatWave上のデータには、トランザクションによるデータ変更も反映されます。永続化されたデータはHeatWaveノードやHeatWaveクラスターの障害からのリストアなどに利用されます。これまではリストア時にはMySQLサーバー上のデータをロードしていました。オブジェクト・ストレージ上のデータはHeatWaveノードのメモリ上のフォーマットそのままで、複数台のHeatWaveノードに並列でオブジェクト・ストレージからデータをロードするため、データ構造の変換が必要となるMySQLサーバーからのリストアと比較して圧倒的に高速になっています。もし何らかの理由でオブジェクト・ストレージのリストアに失敗した場合は、MySQLサーバーからリストアします。
開発チームで行ったテストでは、10TBのHeatWaveクラスターのリストアはMySQLサーバーからの処理が7時間半かかったところ、オブジェクト・ストレージからでは4分で済むという100倍の性能向上をみています。この一連のリストアの処理はHeatWaveのAutopilotの一機能であるAuto Error Recoveryとして自動化されています。
さらにHeatWave 8.0.27-u3では、オブジェクト・ストレージからのデータのリカバリ処理の高速化と再起動時の自動テータロードが利用可能になりました。HeatWave 8.0.27-u3はデータの変更量と前回のスナップショットからの経過時間に応じて自動的にスナップショットの取得間隔を調整し、データの変更点を記録したChangelogsの量を抑えることで復旧時にログの適用で時間がかかることを避けます。オブジェクト・ストレージ上のスナップショットはHeatWaveノードの再起動時にもロードされ、ノード停止中のデータ変更による差分も自動的に追いつく仕組みが実装されています。
なお上記の図にはバージョンアップを示すUpgradeの文字はありますが、8.0.27-u3の時点ではバージョンアップ後はMySQLサーバーからデータのロードを行う必要があります。