ApsaraDB RDS for MySQL 8.0はX-Engineをサポートしています。 X-Engineは、より優れたデータ圧縮機能を提供し、ディスク容量コストを削減します。 このトピックでは、ストレージエンジンをInnoDB、TokuDB、またはMyRocksからX-engineに変更する方法について説明します。
背景情報
X-Engineは、PolarDBのニーズに合わせてAlibaba Cloudによって開発されたオンライントランザクション処理 (OLTP) データベースストレージエンジンです。 X-Engineは、コストを削減するためにAlibaba Groupの多くのビジネスシステムで広く使用されています。 これらのビジネスシステムには、トランザクション履歴データベースとDingTalkチャット履歴データベースが含まれます。 さらに、X-Engineは、Alibaba Groupが中国のショッピングフェスティバルDouble 11で通常よりも数百倍も急増する可能性のあるトラフィックのバーストに耐えることができる重要なデータベーステクノロジーです。
詳細については、以下のトピックをご参照ください。
このトピックでは、既存のテーブルのストレージエンジンをInnoDB、TokuDB、またはMyRocksからX-engineに変更する方法について説明します。 MySQL 8.0を実行するように設計されたRDSインスタンスを作成する場合、デフォルトのストレージエンジンとしてX-Engineを指定することを推奨します。 RDSインスタンスの作成後、エンジンパラメーターをX-Engineに設定することで、RDSインスタンスのX-engineを指定することもできます。 詳細については、「使用状況のメモ」をご参照ください。
使用上の注意
既存のテーブルがInnoDBを使用している場合は、RDSインスタンスの残りのディスク容量がテーブルのデータ容量の2倍であることを確認してください。 ストレージエンジンがX-engineに変更されると、テーブルが占有しているディスク容量は、変更前のテーブルが占有していた元のディスク容量の10% 〜50% に減少します。
このトピックでソリューション1を使用する場合は、パラメーターを再設定し、RDSインスタンスを再起動する必要があります。 ストレージエンジンを変更する前に、データベースサービスを停止することをお勧めします。
このトピックのソリューション2を使用して、RDSインスタンスから新しいRDSインスタンスにすべてのデータを移行する場合は、アプリケーションのエンドポイントを更新する必要があります。 オフピーク時に操作を実行することを推奨します。
ストレージエンジンを変更する前に、X-engineがSQLと互換性があることを確認してください。
変更後、default_storage_engineパラメーターの値をxengineに変更することを推奨します。 これにより、新しく作成されたすべてのテーブルがX-Engineを使用します。
推奨されるソリューション
RDSインスタンスが20200229以降のマイナーエンジンバージョンでMySQL 8.0を実行している場合、ソリューション1を使用することを推奨します。 この方法では、さまざまなツールを設定する必要はありません。
説明RDSインスタンスのマイナーエンジンバージョンがビジネス要件を満たしていない場合は、次の操作を実行してマイナーエンジンバージョンを更新できます。RDSインスタンスの [基本情報] ページに移動し、[設定情報] セクションの [マイナーエンジンバージョンの更新] をクリックします。 更新マイナーエンジンバージョンが表示されない場合は、最新のマイナーエンジンバージョンを使用しています。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
RDSインスタンスがMySQL 5.6やMySQL 5.7などの異なるメジャーエンジンバージョンを実行している場合は、ソリューション2を使用することを推奨します。
ソリューション 1
このソリューションでは、パラメーターテンプレートを使用してX-Engineを有効にできます。 次に、DDLステートメントを実行して、ストレージエンジンをX-engineに変更できます。 この解決策は簡単で速いです。 ただし、このソリューションはインスタンスの再起動をトリガーします。 エンジン変更プロセスは書き込み操作を一時的にブロックしますが、クエリには影響しません。
この操作により、インスタンスの再起動がトリガーされます。 再起動後、95% のメモリリソースがX-Engineに割り当てられます。 X-EngineとInnoDBを同時に使用しないでください。
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、[パラメーター] をクリックします。
[変更可能なパラメーター] タブの左上隅にある [テンプレートの適用] をクリックします。 表示されるダイアログボックスで、[パラメーターテンプレートのMySQL_8.0_X-Engine_High-availability_Default] を選択し、[OK] をクリックします。
データ管理 (DMS) を使用してRDSインスタンスにログインします。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。
次のステートメントを実行して、[SQLコンソール] タブでテーブルのストレージエンジンを変更します。
alter table <テーブルが存在するデータベースの名前> 。<テーブルの名前> engine xengine;
例
alter table test.sbtest1エンジンxengine;
ソリューション 2
このソリューションでは、data Transmission Service (DTS) を使用して、RDSインスタンスから新しいRDSインスタンスにテーブルのデータをリアルタイムで同期できます。 データ同期が完了したら、ワークロードを新しいRDSインスタンスに切り替えることができます。
新しいRDSインスタンスは、デフォルトでRDSインスタンスのストレージエンジンを継承します。 テーブルの作成に使用するSQL文をエクスポートする必要があります。 さらに、これらのSQL文でストレージエンジンをX-engineに変更する必要があります。 その後、データを新しいX-Engineテーブルに移行できます。
DMSを使用してRDSインスタンスにログインし、RDSインスタンスのすべてのスキーマをエクスポートします。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」および「データベースのエクスポート」をご参照ください。
スキーマを解凍し、ストレージエンジンをInnoDBまたはTokuDBからX-engineに変更します。 次の図は、ストレージエンジンをInnoDBからX-engineに変更する方法を示しています。 同じ方法で、ストレージエンジンをTokuDBからX-engineに変更できます。
MySQL 8.0を実行し、元のRDSインスタンスと同じ仕様のRDSインスタンスを作成します。 必ずX-Engineパラメーターテンプレートを選択してください。
説明RDSインスタンスを作成するときに、デフォルトのX-Engineパラメーターテンプレートを使用して、デフォルトのストレージエンジンとしてX-Engineを指定できます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの作成」をご参照ください。
DMSを使用して新しいRDSインスタンスにログインし、スキーマを新しいRDSインスタンスにインポートします。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」および「データのインポート」をご参照ください。
RDSインスタンスから新しいRDSインスタンスにデータを同期します。 詳細については、「MySQLデータベース間の双方向同期の設定」をご参照ください。
重要[詳細設定] ステップで、[初期スキーマ同期] を選択しないでください。
結果
同期が完了したら、データ同期が成功したかどうかを確認できます。 次に、X-EngineとSQLの互換性をテストできます。 X-EngineがSQLと互換性がある場合、テーブルのストレージエンジンをX-engineに変更できます。