ApsaraDB RDS for MySQL では、データベースのメジャーバージョンをアップグレードするために 2 つの方法が提供されています。コンソールで直接データベースバージョンをアップグレードできます。または、新しいバージョンの ApsaraDB RDS for MySQL インスタンスを新規に購入し、Data Transmission Service (DTS) のデータ移行タスクを使用して元のインスタンスから新しいインスタンスにデータを移行することもできます。このプロセスにより、間接的にデータベースバージョンがアップグレードされます。
ApsaraDB RDS for MySQL は、コンソールからのデータベースバージョンの直接的なダウングレードをサポートしていません。以前のバージョンを実行する RDS インスタンスを購入し、DTS を使用して新しいバージョンのインスタンスから古いバージョンのインスタンスにデータを移行できます。移行が成功したことを確認した後、新しいバージョンのインスタンスをリリースできます。
アップグレード方法の選択
方法 1:コンソールでデータベースバージョンを直接アップグレードすると方法 2:DTS を使用してデータベースバージョンをアップグレードするは、どちらも MySQL 5.5 から 5.6、5.6 から 5.7、5.7 から 8.0、8.0 から 8.4 へのアップグレードパスをサポートしています。データベースをアップグレードする前に、以下の情報に基づいて適切なアップグレード方法を選択してください:
-
ご利用のインスタンスが以下の 4 つのカテゴリのいずれかに属し、その構成が対応する要件を満たしている場合は、方法 1:コンソールでデータベースバージョンを直接アップグレードするを使用してください。
説明サーバーレスインスタンスは、コンソールからの直接アップグレードをサポートしていません。方法 2:DTS を使用してデータベースバージョンをアップグレードするを使用する必要があります。
Cluster Edition (ESSD およびパフォーマンス専有型ディスク)
-
グループレプリケーションの制限: MySQL グループレプリケーション (MGR) を使用する Cluster Edition インスタンスはアップグレードできません。
-
データベースプロキシの制限 (該当する場合): 5.7 から 8.0 へのアップグレードの場合、データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。8.0 から 8.4 へのアップグレードの場合、データベースプロキシのマイナーバージョンは 2.25.11 以降である必要があります。
-
インスタンスステータスの制限: インスタンスステータスは 実行中 であり、プライマリノードとセカンダリノードが正常で、レプリケーションの遅延がない必要があります。
-
エンジン制限: データベースとそのすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
-
インスタンスは提供終了のインスタンスタイプを使用していない必要があります。
High-availability Edition (ESSD およびパフォーマンス専有型ディスク)
-
データベースプロキシの制限 (該当する場合): 5.7 から 8.0 へのアップグレードの場合、データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。8.0 から 8.4 へのアップグレードの場合、データベースプロキシのマイナーバージョンは 2.25.11 以降である必要があります。
-
インスタンスステータスの制限: インスタンスステータスは 実行中 であり、プライマリノードとセカンダリノードが正常で、レプリケーションの遅延がない必要があります。
-
エンジン制限: データベースとそのすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
-
インスタンスは提供終了のインスタンスタイプを使用していない必要があります。
High-availability Edition (パフォーマンス専有型ローカルディスク)
-
暗号化の制限: TDE (透過的データ暗号化) 機能が無効になっている必要があります。TDE を有効にすると、無効にすることはできません。インスタンスで TDE が有効になっている場合は、方法 2:DTS を使用してデータベースバージョンをアップグレードするを使用する必要があります。
-
データベースプロキシの制限 (該当する場合): 5.7 から 8.0 へのアップグレードの場合、データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。8.0 から 8.4 へのアップグレードの場合、データベースプロキシのマイナーバージョンは 2.25.11 以降である必要があります。
-
インスタンスステータスの制限: インスタンスステータスは 実行中 であり、プライマリノードとセカンダリノードが正常で、レプリケーションの遅延がない必要があります。
-
テーブル数の制限: テーブル数は 100 万を超えることはできません。
-
エンジン制限: データベースとそのすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
-
インスタンスタイプの制限: アップグレード後のデータベースバージョンは、プライマリインスタンスと読み取り専用インスタンスの元のインスタンスタイプをサポートしている必要があります。インスタンスは、提供終了のインスタンスタイプを使用していない必要があります。詳細については、「プライマリ ApsaraDB RDS for MySQL インスタンスタイプ」をご参照ください。
Basic Edition (ESSD およびパフォーマンス専有型ディスク)
-
インスタンスステータスの制限: インスタンスステータスは 実行中 である必要があります。
-
エンジン制限: データベースとそのすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
-
インスタンスは提供終了のインスタンスタイプを使用していない必要があります。
-
-
ご利用のインスタンスが上記の 4 つのカテゴリのいずれにも属さない場合、または TDE が有効になっている場合は、方法 2:DTS を使用してデータベースバージョンをアップグレードするを使用してください。
-
ご利用のインスタンスが上記の 4 つのカテゴリのいずれかに属しているが、その構成が要件を満たしていない場合は、次の表の説明に従って構成を変更できます。その後、方法 1:コンソールでデータベースバージョンを直接アップグレードするまたは方法 2:DTS を使用してデータベースバージョンをアップグレードするのいずれかを使用できます。
問題
ソリューション
インスタンスのステータスが「実行中」ではありません。たとえば、再起動中 です。
現在のタスクが完了するのを待ってから、データベースバージョンをアップグレードしてください。
パフォーマンス専有型ローカルディスクを備えた High-availability Edition インスタンスのテーブル数が 100 万を超えています。
アップグレード前に冗長なテーブルを削除してください。
一部のデータベースまたはテーブルが InnoDB エンジンを使用していません。
ALTER TABLE <table_name> engine=InnoDB;コマンドを実行して InnoDB エンジンに切り替えます。インスタンスは提供終了のインスタンスタイプを使用しています。
データベースバージョンをアップグレードする前に、インスタンスタイプをアップグレードしてください。詳細については、「設定変更」をご参照ください。
データベースプロキシのマイナーバージョンが要件を満たしていません。
データベースプロキシのマイナーバージョンを 1.13.41 以降にアップグレードしてください。詳細については、「データベースプロキシのマイナーエンジンバージョンのアップグレード」をご参照ください。
インスタンスのストレージタイプが標準 SSD です。
まず、標準 SSD を ESSD (エンタープライズ SSD) にアップグレードし、その後データベースバージョンをアップグレードします。
他のデータベースエンジンのメジャーバージョンをアップグレードするには、次のトピックをご参照ください:
方法 1:コンソールでのデータベースバージョンの直接アップグレード
事前準備
-
新バージョンの違いとメリットを理解する
-
5.6 から 5.7 へのアップグレード: 機能の違いについては、付録 6:MySQL 5.7 と MySQL 5.6 の機能差分をご参照ください。アップグレードのメリットについては、付録 3:MySQL 5.6 から MySQL 5.7 へのアップグレードのメリットをご参照ください。
-
5.7 から 8.0 へのアップグレード: 機能の違いについては、付録 5:MySQL 8.0 と MySQL 5.7 の機能差分をご参照ください。アップグレードのメリットについては、付録 2:MySQL 5.7 から MySQL 8.0 へのアップグレードのメリットをご参照ください。
-
8.0 から 8.4 へのアップグレード: 機能の違いについては、付録 4:MySQL 8.4 と MySQL 8.0 の機能差分をご参照ください。アップグレードのメリットについては、付録 1:MySQL 8.0 から MySQL 8.4 へのアップグレードのメリットをご参照ください。
-
-
アップグレードプロセスとその影響を理解する
-
バージョン間の制限: メジャーバージョンをまたいでアップグレードすることはできません。デフォルトでは、インスタンスはターゲットのメジャーバージョンの最新マイナーバージョンにアップグレードされます。たとえば、インスタンスを MySQL 5.6 から MySQL 8.0 に直接アップグレードすることはできません。まず MySQL 5.7 にアップグレードし、次に MySQL 8.0 にアップグレードする必要があります。
-
ダウングレードの制限: コンソールから直接バージョンをダウングレードすることはできません。以前のバージョンを実行する RDS インスタンスを購入し、DTS を使用して新しいバージョンのインスタンスから古いバージョンのインスタンスにデータを移行できます。移行が成功したことを確認した後、新しいバージョンのインスタンスをリリースできます。
-
パフォーマンス専有型ローカルディスクを持つインスタンスのアップグレードプロセス: システムはまずセカンダリインスタンスをアップグレードします。アップグレードが完了した後、プライマリ/セカンダリのフェールオーバーが発生します。その後、システムはプライマリインスタンスをアップグレードします。アップグレードにより 15 秒間のサービス中断が発生します。オフピーク時にアップグレードを実行することを推奨します。
-
ESSD を持つインスタンスのアップグレードプロセス: システムは新しいノードを作成し、新しいノードでアップグレードを実行します。新しいノードがアップグレードされた後、システムは接続をそれに切り替えます。アップグレードにより 15 秒間のサービス中断が発生します。オフピーク時にアップグレードを実行することを推奨します。
-
-
インスタンスとデータベースの構成を確認する
-
予約キーワードの確認: ユーザー定義関数をチェックし、予約キーワードを使用していないことを確認します。
-
完全バックアップの確認: 過去 1 週間以内に成功した完全データバックアップが作成されているか確認します。そうでない場合は、完全データバックアップを実行します。
-
自動再接続メカニズムの確認: データベースのアップグレード中、RDS はインスタンスの切り替えを実行します。オフピーク時にアップグレードを実行するか、アプリケーションに自動再接続メカニズムがあることを確認することを推奨します。インスタンスの切り替えの影響の詳細については、「インスタンスの切り替えの影響」をご参照ください。
-
利用可能なストレージ容量の確認: アップグレード前に十分な空きディスク領域があることを確認してください。少なくとも 10 GB を予約することを推奨します。
-
ログクリーンアップポリシーの調整: ローカルログの保持期間と最大ストレージ使用率を増やします。詳細については、「ローカルログポリシーの変更」をご参照ください。
-
インスタンスパラメータのバックアップ: 新しい MySQL バージョンの安定性とパフォーマンスを確保するため、RDS は古いバージョンの一部のパラメータを廃止します。アップグレード後はこれらのパラメータを表示または変更できなくなります。メジャーバージョンアップを実行する前に、将来の操作と監査のために、関連するパラメータの変更記録をバックアップしてください。
-
5.6 から 5.7、5.7 から 8.0、または 8.0 から 8.4 へのアップグレードの場合、以下の追加チェックを実行する必要があります:
5.6 から 5.7 へのアップグレード
フルテキストインデックスとバージョン情報の確認: マイナーバージョンが 20221130 より前の RDS for MySQL 5.6 インスタンス上のデータベースでは、フルテキストインデックスはシステム表領域に作成されます。バージョン 5.7 にアップグレードすると、表領域が破損する可能性があります。インスタンスが古いマイナーバージョンを実行している場合は、まず RDS for MySQL 5.6 の最新マイナーバージョンにアップグレードし、その後データベースのメジャーバージョンをアップグレードしてください。詳細については、よくある質問をご参照ください。
5.7 から 8.0 へのアップグレード
-
機能の互換性の確認: データベース内のストアドプロシージャ、トリガー、ビュー、または関数が MySQL 8.0 でサポートされていない機能を使用している場合は、アップグレード前にそれらを変更してください。そうしないと、アップグレードは失敗します。
-
システムテーブルの依存関係の確認: サービスが MySQL 5.7 のシステムテーブル (sys、mysql、information_schema、performance_schema データベース内のテーブル) に依存しているかどうかを確認します。MySQL 5.7 の一部のシステムテーブルは、8.0 へのアップグレード中に変更されます。たとえば、テーブルが削除されたり、名前が変更されたり、スキーマが変更されたりする場合があります。サービスがこれらのテーブルに依存している場合、エラーが発生する可能性があります。
-
データ型の互換性の確認: RDS for MySQL 8.0 は、古いバージョンの一部のデータ型をサポートしなくなりました。テーブルに MySQL 8.0 でサポートされていないデータ型のフィールドが含まれている場合は、アップグレード前に
REPAIR TABLEを実行するか、論理的なエクスポートとインポートを実行してこの問題を解決する必要があります。詳細については、「アップグレードのためのインストールの準備」をご参照ください。 -
comment値の確認: 20221231 以降の MySQL 8.0 のマイナーバージョンでは、loose_upgrade_clear_invalid_commentパラメータが導入されています。このパラメータがON(デフォルト値) に設定されている場合、テーブル、フィールド、インデックスのコメント内の文字化けは、アップグレードの失敗を防ぐためにアップグレード中に自動的にクリアされます。したがって、アップグレード前に、データベーステーブルのcomment値に文字化けが含まれているかどうかを確認してください。含まれている場合、commentはクリアされます。 -
ストアドプロシージャの確認: データベース内のストアドプロシージャまたは関数に文字化けが含まれている場合は、アップグレードの失敗を防ぐためにアップグレード前に修正してください。
-
MySQL 5.5 以前の時間データ型の確認: データベースに MySQL 5.5 以前の時間データ型を持つテーブルが含まれている場合は、MySQL 8.0 へのアップグレード前にテーブルを再構築して失敗を防ぎます。
-
次の SQL ステートメントを実行して、データベースインスタンスに MySQL 5.5 以前の時間データ型を持つテーブルが含まれているかどうかを確認します:
# 古い時間データ型を表示します。 SET SESSION show_old_temporals= ON; # 古い時間データ型を含むテーブルをクエリします。 SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE FROM information_schema.columns WHERE COLUMN_TYPE IN ("time /* 5.5 binary format */ ", "timestamp /* 5.5 binary format */", "datetime /* 5.5 binary format */ "); -
テーブルに MySQL 5.5 以前の時間データ型が含まれている場合は、次のコマンドを実行してテーブルスキーマを再構築できます:
# テーブルを再構築します。 ALTER TABLE <table_name> FORCE;
-
8.0 から 8.4 へのアップグレード
-
機能の互換性の確認: MySQL 8.4 は、グループレプリケーション (MGR) などの特定のレガシー機能をサポートしなくなりました。インスタンスで MGR が有効になっている場合は、アップグレード前にグループレプリケーションを停止し、関連する構成をクリアしてください。そうしないと、アップグレードは続行できません。
-
テーブル、インデックス、メタデータの互換性の確認: インスタンスに、MySQL 8.4 と互換性のないストレージエンジン、フルテキストインデックス、破棄された表領域、パーティションテーブル上の外部キー、長すぎるビューの列名や外部キー制約、または SPATIAL や RTREE インデックスが含まれていないか確認します。問題が見つかった場合は、アップグレード前にテーブルスキーマを変更するか、関連するインデックスを削除し、アップグレード後に必要に応じて再作成してください。さらに、
FLOATまたはDOUBLEフィールドをAUTO_INCREMENT列として使用するテーブルも事前に変更する必要があります。 -
インスタンストポロジーとアップグレード条件の確認: プライマリノードとセカンダリノードの健全性ステータス、レプリケーションの遅延、読み取り専用およびスタンバイ読み取り専用インスタンスの数とタイプ、インスタンスの接続タイプ、未完了のタスク、ターゲットバージョンのインスタンスタイプ、および MaxScale のバージョンがアップグレード要件を満たしているかどうかを確認します。確認項目はインスタンスタイプによって異なります:ローカルディスクインスタンスには追加の読み取り専用インスタンストポロジーチェックがあり、クラウドディスクインスタンスにはストレージタイプとクラウド環境のチェックがあります。
-
パラメータ、認証、接続の互換性の確認: MySQL 8.4 は一部の 8.0 パラメータと認証構成を削除し、アップグレードプロセスは互換性のないパラメータを自動的にフィルタリングまたは変換します。MySQL 8.4 は TLSv1 または TLSv1.1 をサポートしなくなりました。システムはサーバー側の
tls_versionを自動的に調整しますが、古い TLS プロトコルを使用するクライアントはアップグレード後も接続に失敗します。事前にクライアントが TLSv1.2 または TLSv1.3 をサポートしていることを確認してください。認証、権限、パラメータの一部のデフォルトの動作も変更されます。アップグレード前に、アカウントのログイン、権限、およびサービスのパフォーマンスに影響がないことを確認してください。
-
-
-
アップグレード前のテストとシミュレーション
-
構文テスト: アップグレード前に、新しいバージョンの新しい RDS インスタンスを作成して、構文の互換性をテストします。これにより、アップグレード後に古いバージョンの構文や機能がサポートされないという問題を回避できます。
-
アップグレードシミュレーション: アップグレード前に、元のインスタンスをクローンし、クローンしたインスタンスを使用してアップグレードをテストします。すべての機能が期待どおりに動作することを確認した後、元のインスタンスをアップグレードします。
-
-
アップグレード後の注意事項
-
インスタンスを古いバージョンに復元する: 古いバージョンのクラウドディスクバックアップを使用して、インスタンスをそのバージョンに復元できます。これは、パフォーマンス専有型ローカルディスクを持つインスタンスではサポートされていません。
-
インスタンスを新しいバージョンに復元する: 古いバージョンのバックアップセットを使用して、インスタンスを新しいバージョンに復元することはできません。復元を実行するには、インスタンスがアップグレードされた後に作成されたバックアップセットを使用します。
-
手順
アップグレードシナリオに基づいてアップグレード方法を選択します:
|
アップグレード方法 |
アップグレードシナリオ |
|
事前チェックを実行してからアップグレード |
|
|
直接アップグレード |
|
事前チェックを実行してからアップグレード
-
インスタンスページに移動します。上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択します。次に、インスタンス ID をクリックします。
-
左側のナビゲーションウィンドウで、メジャーバージョンのアップグレード をクリックして アップグレード前チェック ページに移動します。
-
アップグレードバージョンの選択 ドロップダウンリストから、ターゲットバージョンを選択し、アップグレードチェックレポートの作成 をクリックします。レポートの詳細については、「メジャーバージョンアップグレードチェックレポートの説明」をご参照ください。
-
チェックが完了し、リスクがないことを確認した後、インスタンスのアップグレード タブに切り替えます。
-
アップグレードバージョンの選択 ドロップダウンリストから、ターゲットバージョンを選択し、インスタンスのアップグレード をクリックします。
-
大容量バージョンのアップグレードインスタンス ダイアログボックスで、ターゲットバージョンを確認し、切り替え時間 を選択し、今すぐアップグレード をクリックします。
直接アップグレード
-
インスタンスページに移動します。上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択します。次に、インスタンス ID をクリックします。
-
セクションで、データベースをアップグレードする をクリックします。
説明このオプションが表示されない場合は、ご利用のインスタンスがアップグレード要件を満たしているか確認してください。
-
表示されるダイアログボックスで、データ移行直後の切り替え または メンテナンス可能な期間中のスイッチ を選択し、OK をクリックします。
-
データ移行直後の切り替え: すぐにアップグレードを開始します。
-
メンテナンス可能な期間中のスイッチ: アップグレードは指定されたメンテナンスウィンドウ内で実行されます。保守時間枠 の横にある 設定 をクリックして、メンテナンスウィンドウをすばやく変更することもできます。
説明アップグレード中、インスタンスのステータスは バージョン変更中 になります。
-
方法 2:DTS を使用したデータベースバージョンのアップグレード
コンソールからの直接アップグレードをサポートしていないインスタンスの場合、新しいデータベースバージョンの新しいインスタンスを作成できます。その後、DTS データ移行タスクを使用して、元のインスタンスから新しいインスタンスにデータを移行します。これにより、間接的にデータベースバージョンがアップグレードされます。このプロセスには、次の手順が含まれます:
例: TDE が有効になっている MySQL 5.7 インスタンスがあり、コンソールから直接アップグレードできません。この場合、MySQL 8.0 を実行する新しいインスタンスを作成し、元のインスタンスから新しいインスタンスにデータを移行し、最後に元のインスタンスをリリースします。これにより、間接的にデータベースバージョンがアップグレードされます。
クロスバージョンのデータ移行後、互換性をテストし、一定期間インスタンスをモニタリングしてください。すべてが正常であることを確認した後、元のインスタンスをリリースしてください。
付録 1:MySQL 8.0 から MySQL 8.4 へのアップグレードのメリット
-
長期的な安定性の向上。MySQL 8.4 は LTS (長期サポート) リリースであり、本番環境での長期使用に適しています。以降の 8.4.x リリースは、安定性、セキュリティ修正、および互換性の維持に重点を置いています。
-
認証の強化。WebAuthn/FIDO2 認証をサポートします。Enterprise Edition は、セキュリティキー、生体認証、その他の認証方式を使用できます。Windows では、SASL LDAP/GSSAPI/Kerberos 認証がサポートされています。
-
GTID 機能の強化。タグ付き GTID をサポートします。
UUID:TAG:NUMBER形式を使用して、異なるビジネスドメイン、管理操作、またはデータ操作を区別でき、TRANSACTION_GTID_TAG権限はアクセスの制御を提供します。 -
レプリケーションの可用性の向上。マルチスレッドアプライヤーは
SQL_AFTER_GTIDSをサポートしているため、レプリカが指定された GTID セットに追いついたときにパラレルレプリケーションを続行できます。 -
リレーログの回復性の向上。リレーログの末尾にある不完全なトランザクションと関連する残存ファイルをクリーンアップする機能をサポートし、異常シャットダウン後のリレーログの不整合による回復リスクを低減します。
-
グループレプリケーション操作の強化。8.4 LTS シリーズ内では、クロスバージョンのグループメンバーとインプレースダウングレードがサポートされ、プライマリ切り替え中の DDL および DCL 操作の待機がより完全になり、シングルプライマリモードでの認証情報の事前クリーンアップがサポートされ、メモリと切り替えのリスクが低減されます。
-
統計の改善。ヒストグラムは自動または手動の更新制御をサポートし、オプティマイザーの統計メンテナンスの制御性を向上させます。
-
実行計画診断の強化。
EXPLAIN FORMAT=JSONはフォーマットバージョンの選択をサポートし、EXPLAIN FORMAT=JSON INTOは出力をユーザー変数に書き込み、EXPLAIN FOR SCHEMAとFOR DATABASEがサポートされ、スキーマをまたいだ SQL の診断が容易になります。 -
TLS 証明書検証の強化。より厳格な TLS 証明書検証をサポートし、暗号化された接続のセキュリティを向上させます。
-
クローンの改善。同じメジャーまたはマイナーシリーズ内では、クローン操作は正確なポイントリリースの一致を必要としなくなり、8.4.x バージョン間のインスタンスの初期化、回復、スケーリングが容易になります。
-
監査とファイアウォールの強化。Enterprise Firewall は、定期的なキャッシュの再読み込みとカスタムの内部オブジェクトスキーマをサポートし、運用の柔軟性を高めます。
-
キー管理移行の改善。キーリングコンポーネントからキーリングプラグインへの移行をサポートし、暗号化移行と互換性シナリオの柔軟性を向上させます。
-
アップグレードの可観測性の向上。データディレクトリは、インストールとアップグレードの履歴を監査とトラブルシューティングのために記録する JSON 形式の
mysql_upgrade_historyを維持します。 -
SQL とオプティマイザーの進化の強化。
TABLESAMPLE、QUALIFY、PARALLELなどのキーワードを追加し、将来の SQL とオプティマイザーの拡張の基盤を提供します。
付録 2:MySQL 5.7 から MySQL 8.0 へのアップグレードのメリット
-
セキュリティを向上させ、アカウント管理の柔軟性を高めます。
-
リソースグループの作成と管理をサポートします。
-
InnoDB ストレージエンジンの機能を強化します。
-
新しい文字セット、データ型、構文、新しいバックアップロック、および optimizer_switch フラグのサポートを追加します。
-
JSON および XML 機能を強化します。
-
オプティマイザーの機能を強化します。
-
同期性能を向上させます。
-
複数値インデックスの作成と派生条件プッシュダウン最適化をサポートします。
-
MySQL 権限付与テーブルの読み取りをサポートします。
-
リソース割り当て制御をサポートします。
付録 3:MySQL 5.6 から MySQL 5.7 へのアップグレードのメリット
-
パスワード管理、アカウントロック、暗号化接続などの機能を追加して、データベースのセキュリティを向上させます。
-
RENAME INDEX を使用したインデックスの名前変更など、オンライン DDL 操作をサポートします。
-
InnoDB エンジンのスケーラビリティと一時テーブルのパフォーマンスを向上させ、データロードを高速化します。
-
JSON をサポートします。
-
パーティションテーブルのインデックスコンディションプッシュダウン (ICP) と新しい InnoDB 空間インデックスをサポートします。
-
ほとんどのパーサ、オプティマイザー、コストモデルを最適化して、データベースの保守性、スケーラビリティ、パフォーマンスを向上させます。
-
中国国家標準で指定された GB18030 文字セットを含む、サポートされる文字セットの範囲を拡大します。
-
中国語、日本語、韓国語をサポートする ngram フルテキストパーサープラグインを提供します。
-
ソースダンプスレッドを最適化して、ロックの競合を減らし、ソースのスループットを向上させます。
-
レプリケーションの遅延を大幅に削減します。
-
sys システムデータベースを追加し、複数のメトリックを提供し、ストレージ使用量を削減し、データベースの使いやすさを大幅に向上させます。
付録 4:MySQL 8.4 と MySQL 8.0 の機能差分
次の表は、MySQL 8.4 と 8.0 の間の重要な違いの一部のみをリストしています。その他の違いの詳細については、「MySQL リリースノート」をご参照ください。
|
特徴 |
8.0 |
8.4 |
|
WebAuthn 認証 |
サポート対象外 |
WebAuthn/FIDO2 認証をサポートします。Enterprise Edition はサーバー側プラグインを提供します。 |
|
Windows での SASL LDAP |
サポート対象外 |
Windows での SASL LDAP/GSSAPI/Kerberos 認証をサポートします。 |
|
クローンプラグインのクロスポイントリリース機能 |
通常、ポイントリリースの一致が必要 |
同じメジャーまたはマイナーバージョン内では、8.4.0 と 8.4.x の間など、ポイントリリースをまたいでクローンを実行できます。 |
|
タグ付き GTID |
サポート対象外 |
|
|
GTID タグ権限制御 |
サポート対象外 |
|
|
|
限定的な使用、シングルスレッドにフォールバックする可能性あり |
マルチスレッドアプライヤーでサポートされています。 |
|
リレーログ回復のサニタイズ |
古いリレーログ回復の動作 |
リレーログの末尾にある不完全なトランザクションと関連する残存ファイルをクリーンアップできます。 |
|
グループレプリケーション 8.4.x グループ内互換性 |
該当なし |
8.4 LTS シリーズ内では、クロスバージョンのグループメンバーとインプレースダウングレードがサポートされています。 |
|
グループレプリケーション認証 GC |
標準 GC |
シングルプライマリモードでの先行認証 GC をサポートします。 |
|
|
カバー率が低い |
プライマリを切り替える前に、より多くの DDL および DCL 操作が完了するのを待ちます。 |
|
自動ヒストグラム更新 |
AUTO UPDATE または MANUAL UPDATE をサポートしない |
自動または手動のヒストグラム更新制御をサポートします。 |
|
|
単一の JSON フォーマット |
|
|
|
サポート対象外 |
JSON explain 出力をユーザー変数に書き込むことをサポートします。 |
|
|
サポート対象外 |
指定されたスキーマのステートメントを説明することをサポートします。 |
|
MySQL クライアントのコメント処理 |
デフォルトでコメントを削除 |
デフォルトでコメントを保持します。 |
|
TLS 証明書検証 |
より緩やかな動作 |
強制的な TLS 証明書検証をサポートします。 |
|
Enterprise Firewall キャッシュの再読み込み |
主に起動時またはプラグイン再インストール時に再読み込み |
定期的な再読み込みをサポートします。 |
|
Enterprise Firewall ストレージスキーマ |
固定の内部ロケーション |
カスタムスキーマをサポートします。 |
|
キーリングコンポーネントからプラグインへの移行 |
サポート対象外 |
キーリングコンポーネントからキーリングプラグインへの移行をサポートします。 |
|
アップグレード履歴 |
レガシーのアップグレード情報ファイルメカニズムを使用 |
データディレクトリは JSON 形式の |
付録 5:MySQL 8.0 と MySQL 5.7 の機能差分
次の表は、MySQL 8.0 と 5.7 の間の重要な違いの一部のみをリストしています。その他の違いの詳細については、「MySQL リリースノート」をご参照ください。
|
特徴 |
5.7 |
8.0 |
|
GRANT ... IDENTIFIED BY PASSWORD 構文 |
サポート対象 |
サポート対象外 |
|
PASSWORD() 関数 |
サポート対象 |
サポート対象外 |
|
FLUSH QUERY CACHE および RESET QUERY CACHE 構文 |
サポート対象 |
サポート対象外 |
|
SQL_MODE システム変数のパラメータ: DB2、MAXDB、MSSQL、MYSQL323、MYSQL40、ORACLE、POSTGRESQL、NO_FIELD_OPTIONS、NO_KEY_OPTIONS、NO_TABLE_OPTIONS |
サポート対象 |
サポート対象外 |
|
GROUP BY 構文のデフォルトの自動ソート |
サポート |
サポート対象外 |
|
EXTENDED または PARTITIONS キーワードを含む構文 |
サポート対象 |
サポート対象外 |
|
ENCODE()、DECODE()、ENCRYPT() などの暗号化関数 |
サポート対象 |
サポート対象外 |
|
空間分析に関連する関数 |
サポート対象 |
サポート対象外 |
|
以前は WKB 文字列またはジオメトリ引数を受け入れていたが、ジオメトリ引数を受け入れなくなった関数 |
サポート対象 |
サポート対象外 |
|
\N を NULL として解析 |
サポート |
サポート対象外 |
|
PROCEDURE ANALYSE() 関数 |
サポート対象 |
サポート対象外 |
|
NDB ストレージエンジンを使用したパーティションテーブルの作成 |
サポート対象 |
サポート対象外 |
|
InnoDB ストレージエンジンを使用した一時テーブルの圧縮 |
サポート対象 |
サポート対象外 |
|
JSON_APPEND() 関数 |
サポート対象 |
サポート対象外 |
|
共有表領域へのテーブルパーティションの配置のサポート |
サポート対象 |
サポート対象外 |
|
ALTER TABLE ... UPGRADE PARTITIONING 構文 |
サポート対象 |
サポート対象外 |
付録 6:MySQL 5.7 と MySQL 5.6 の機能差分
次の表は、MySQL 5.7 と 5.6 の間の重要な違いの一部のみをリストしています。その他の違いの詳細については、「MySQL リリースノート」をご参照ください。
|
特徴 |
5.6 |
5.7 |
|
CREATE...AS SELECT (GTID モード) |
サポート |
サポート対象外 |
|
GTID モードでのトランザクションにおける一時テーブルの使用 |
サポート対象 |
サポート対象外 |
|
パーティションテーブルでのパーティションキーの指定 |
サポート対象 |
サポート対象外 |
|
ENGINE_NO_CACHE 構文 |
サポート対象 |
サポート対象外 |
|
不可視インデックス |
サポート |
サポート対象外 |
|
UPDATE non_affected_rows INSERT 構文 |
サポート対象 |
サポート対象外 |
|
プロキシ関連のコマンド |
SET コマンド方式を使用 |
Call Procedure モードを使用 |
|
TokuDB、Sphinx、RocksDB、Memory エンジン |
サポート対象 |
サポート対象外 |
|
str_ord() 関数 |
サポート対象 |
サポート対象外 |
|
raiseerror() 関数 |
サポート対象 |
サポート対象外 |
|
OPTIMIZE TABLE table ASYNC |
サポート |
サポート対象外 |
|
ENGINE_NO_CACHE |
サポート対象 |
サポート対象外 |
|
INFORMATION.TABLE_UTILIZATION テーブル |
サポート |
サポート対象外 |
|
INFORMATION_SCHEMA.INNODB_LOCK_WAITS テーブルの requesting_thd_id および blocking_thd_id 列 |
サポート対象 |
サポート対象外 |
|
INFORMATION_SCHEMA.INNODB_RSEG テーブル |
サポート対象 |
サポート対象外 |
|
INFORMATION_SCHEMA.INNODB_IO_STATUS テーブル |
サポート対象 |
サポート対象外 |
|
列圧縮機能 |
サポート対象 |
サポート対象外 |
|
クエリプランキャッシュ |
サポート対象 |
サポート対象外 |
|
Limit + Union 構文 |
括弧は不要です。 |
括弧が必要です。 |
|
SHOW FULL PROCESSLIST 構文 |
MySQL 5.7 では、結果から memory および query_memory 列が削除されます。 |
|
|
max_statement_time および max_execution_time |
MySQL 5.7 では、max_statement_time は削除され、max_execution_time のみが保持されます。 |
|
|
RDS_SQL_MAX_AFFECTED 構文 |
MySQL 5.7 では、RDS_SQL_MAX_AFFECTED を使用して単一の UPDATE または DELETE ステートメントによって影響を受けるレコード数を制限することはできなくなりました。代わりに rds_sql_max_affected_rows 変数を使用します。 |
|
|
同時実行性能の最適化調整 |
MySQL 5.7 では、同時実行制御のために以下のパラメータはサポートされなくなりました:
|
|
|
接続数変数に関する調整 |
MySQL 5.7 では以下の変数が削除されます:
|
|
|
レプリケーション関連の調整 |
|
|
|
ログ関連の調整 |
MySQL 5.7 のエラーログ調整:
|
|
|
古い時間データ型 ( |
バージョン 5.6.4 以前では、古い時間データ型はマイクロ秒をサポートしていませんでした。 |
時間データ型はマイクロ秒の精度をサポートします。 重要
5.6 から 5.7 へのアップグレード中、システムは古い時間データ型のフィールドを含むテーブルを検出し、再構築します。これにより、アップグレードプロセスが遅くなります。 |
付録 7:MySQL 5.5 と MySQL 5.6 の機能差分
次の表は、MySQL 5.5 と 5.6 の間の重要な違いの一部のみをリストしています。その他の違いの詳細については、「MySQL 5.6 リファレンスマニュアル」をご参照ください。
|
特徴 |
MySQL 5.5 |
MySQL 5.6 |
|
フルテキストインデックス |
サポート対象外 |
サポート対象 |
|
InnoDB オンライン DDL |
サポート対象外 |
一部サポート |
|
REDO |
最大 4 GB をサポート |
最大 512 GB をサポート |
|
ダーティページのフラッシュ |
シングルスレッド |
別のフラッシュスレッドを使用 |
|
パージ |
シングルスレッド |
マルチスレッド |
|
EXCHANGE PARTITION |
サポート対象外 |
サポート対象 |
|
DML での明示的なパーティション選択 |
サポート対象外 |
サポート対象 |
|
INFORMATION_SCHEMA |
MySQL 5.6 は、バッファープールに関するより多くの情報と、テーブル、インデックス、フィールドに関するより多くのメタデータを提供します。 |
|
|
PERFORMANCE_SCHEMA |
MySQL 5.6 の Performance Schema は、より多くのモニタリング情報と表示形式を追加します。 |
|
|
レプリケーション |
MySQL 5.6 のレプリケーションの強化と変更には、以下が含まれます:
重要
RDS for MySQL インスタンスが 5.5 から 5.6 にアップグレードされると、自動的に GTID ベースのレプリケーションモードに切り替わります。 |
|
|
オプティマイザー |
MySQL 5.6 は、以下の機能を含むオプティマイザーを強化します:
|
|
|
サポート対象外 |
サポート対象 |
|
|
サポート対象外 |
サポート対象 |
|
|
サポート対象外 |
サポート対象 |
|
|
サポート対象外 |
サポート対象 |
|
|
サポート対象外 |
サポート対象 |
|
よくある質問
-
Q: なぜアップグレード中にインスタンスの切り替えが発生するのですか? 他に深刻なリスクはありますか?
A: サービスの安定性を確保するため、パフォーマンス専有型ローカルディスクを持つインスタンスは、まずセカンダリノードをアップグレードし、その後切り替えを実行することでアップグレードされます。ESSD を持つインスタンスは、新しいノードを作成し、その後切り替えを実行することでアップグレードされます。他に深刻なリスクはありません。プライマリ/セカンダリのフェールオーバーの影響の詳細については、「プライマリ/セカンダリのフェールオーバーの影響」をご参照ください。
-
Q: プライマリノードとセカンダリノードは同時にアップグレードされますか?
A: パフォーマンス専有型ローカルディスクをアップグレードする場合、まずセカンダリインスタンスがアップグレードされ、次にプライマリインスタンスがアップグレードされます。
-
Q: 標準 SSD を使用する MySQL 5.7 を実行する Basic Edition インスタンスをアップグレードするにはどうすればよいですか?
A: このタイプのインスタンスを直接アップグレードすることはできません。標準 SSD を使用する MySQL 5.7 を実行する Basic Edition インスタンスをアップグレードするには、まずストレージタイプを標準 SSD から ESSD に変更し、その後データベースバージョンをアップグレードする必要があります。
-
Q: データベースバージョンをアップグレードした後、パラメータテンプレートは保持されますか?
A: 場合によります。アップグレード前にインスタンスがシステムパラメータテンプレートを使用している場合、自動的に新しいバージョンの対応するシステムパラメータテンプレートに切り替わります。たとえば、MySQL_InnoDB_5.7_High-availability_Performance パラメータテンプレートを使用しているインスタンスは、MySQL 5.7 から 8.0 へのアップグレード後、MySQL_InnoDB_8.0_High-availability_Performance パラメータテンプレートに切り替わります。ただし、インスタンスがカスタムパラメータテンプレートを使用している場合、アップグレード後にパラメータテンプレートは保持されません。
-
Q: データベースバージョンのアップグレード中にインスタンスを変更できますか?
A: いいえ、できません。アップグレードが完了した後にのみ、インスタンスで他の操作を実行できます。
-
Q: データベースバージョンは自動アップグレードをサポートしていますか?
A: いいえ、サポートしていません。メジャーバージョンの自動アップグレードはサポートされていません。
-
Q: データベースバージョンをダウングレードできますか?
A: いいえ、コンソールから直接バージョンをダウングレードすることはできません。インスタンスにビジネスデータが含まれているかどうかに基づいて、次のいずれかの方法を選択してください:
-
ビジネスデータあり: 以前のバージョンを実行するインスタンスを購入し、DTS を使用して新しいバージョンのインスタンスから新しい古いバージョンのインスタンスにデータを移行し、移行が完了した後に新しいバージョンのインスタンスをリリースします。これにより、間接的にデータベースバージョンがダウングレードされます。詳細については、「RDS インスタンス間のデータ移行」をご参照ください。
-
ビジネスデータなし: 元のインスタンスの登録を解除し、必要な以前のバージョンを実行する新しいインスタンスを購入します。サブスクリプションインスタンスの場合は、返金プロセスに従って登録を解除します。従量課金インスタンスの場合は、直接リリースします。
-
-
Q: RDS for MySQL インスタンスを 5.6 から 5.7 または 5.7 から 8.0 にアップグレードすると、アップグレードが失敗し、「現在のインスタンスにはフルテキストインデックスがあり、そのマイナーバージョンは 20221130 より前です。フルテキストインデックスを削除して再構築する前に、マイナーバージョンをアップグレードしてください」または「現在のインスタンスにはシステム表領域に構築されたフルテキストインデックスが含まれています。アップグレードを続行する前に、対応するフルテキストインデックスを削除して再構築してください」というメッセージが表示されます。原因と解決策は何ですか?
A: 原因と解決策は次のとおりです:
-
原因
MySQL の歴史的な問題により、古いバージョンの MySQL 5.6 でフルテキストインデックスを作成すると、システム表領域に構築されます。バージョン 5.7 または 8.0 にアップグレードすると、システム表領域のフルテキストインデックスが表領域の破損を引き起こす可能性があります。したがって、データの破損やアクセス不能を防ぐために、アップグレード前にこの問題を解決する必要があります。
説明この問題は、RDS for MySQL 5.6 バージョン 20221130 で修正されました。フルテキストインデックスは現在、別の表領域に構築されます。
-
ソリューション
重要古いバージョンの RDS for MySQL 5.6 のフルテキストインデックスはシステム表領域に作成されます。したがって、RDS for MySQL 5.7 にアップグレードする前に、アップグレード元のバージョンが RDS for MySQL 5.6 20221130 以降であることを確認してください。古いバージョンを使用している場合は、まず RDS for MySQL 5.6 の最新バージョンにアップグレードしてください。
-
プロンプトのテーブル名に基づいて、システム表領域に構築されたフルテキストインデックスを削除します。
# フルテキストインデックスを削除します。 ALTER TABLE $table_name DROP INDEX $fts_name; -
フルテキストインデックスを再作成します。
# フルテキストインデックスを再作成します。 ALTER TABLE $table_name ADD FULLTEXT INDEX $fts_name; -
インデックスを作成した後、次の SQL ステートメントを実行して、現在のインスタンスのフルテキストインデックスを確認できます。このステートメントは、システム表領域に構築されたフルテキストインデックスを返します。クエリが空の結果を返す場合、RDS for MySQL 5.6 から RDS for MySQL 5.7 へのアップグレードはこの問題で失敗しません。
# システム表領域に構築されたフルテキストインデックスをクエリします。 SELECT NAME FROM information_schema.INNODB_SYS_TABLES WHERE TABLE_ID IN ( SELECT CONV(SUBSTRING_INDEX(SUBSTRING_INDEX(NAME, '_', -4),'_', 1),16,10) FROM INNODB_SYS_TABLES WHERE NAME LIKE '%fts_00000000%' AND SPACE = 0);
-
-
-
Q: RDS for MySQL インスタンスを 5.7 から 8.0 にアップグレードすると、エラー
267 - Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='が報告されます。どのように対処すればよいですか?A: MySQL の文字セットと照合順序を確認してください。utf8mb4_general_ci を使用している場合は、次の SQL ステートメントを実行して utf8mb4_0900_ai_ci に変更します。
# データベースの文字セットと照合順序を変更します。 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; # テーブルの文字セットと照合順序を変更します。 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; # フィールドの文字セットと照合順序を変更します。 ALTER TABLE table_name CHANGE column_name column_name type CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;MySQL 5.7 で utf8mb4_general_ci 照合順序を使用してテーブルを作成し、その後 MySQL 8.0 にアップグレードすると、システムは utf8mb4_0900_ai_ci をデフォルトの照合順序として使用します。utf8mb4_general_ci を使用する列と utf8mb4_0900_ai_ci を使用する列を比較するクエリを実行すると、MySQL は 2 つの異なる照合順序を処理できず、エラーが発生します。
-
Q: メジャーバージョンアップグレードの一時的な接続切断時間は、読み取り専用インスタンスの有無にかかわらず、常に 15 秒ですか?
A: はい、そうです。オフピーク時にアップグレードを実行することを推奨します。
関連 API
|
API オペレーション |
説明 |
|
RDS インスタンスのメジャーデータベースバージョンをアップグレードします。 |