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 へのアップグレードパスをサポートしています。データベースをアップグレードする前に、以下の情報に基づいて適切なアップグレード方法を選択してください:
ご利用のインスタンスが以下の 4 つのカテゴリのいずれかに属し、その構成が対応する要件を満たしている場合は、方法 1:コンソールで直接データベースバージョンをアップグレードするを使用してください。
説明サーバーレスインスタンスは、コンソールからの直接アップグレードをサポートしていません。方法 2:DTS を使用してデータベースバージョンをアップグレードするを使用する必要があります。
MySQL 8.0 から MySQL 8.4 へのアップグレードは、コンソール経由ではサポートされていません。このアップグレードパスには方法 2:DTS を使用してデータベースバージョンをアップグレードするを使用してください。
Cluster Edition (ESSD およびパフォーマンス専有型ディスク)
グループレプリケーションの制限:MySQL グループレプリケーション (MGR) を使用する Cluster Edition インスタンスはアップグレードできません。
データベースプロキシの制限 (該当する場合):データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。
インスタンスステータスの制限:インスタンスステータスは 実行中 であり、プライマリノードとセカンダリノードが正常で、レプリケーションの遅延がない必要があります。
エンジン制限:データベースとそのすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
インスタンスは廃止されたインスタンスタイプを使用していない必要があります。
High-availability Edition (ESSD およびパフォーマンス専有型ディスク)
データベースプロキシの制限 (該当する場合):データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。
インスタンスステータスの制限:インスタンスステータスは 実行中 であり、プライマリノードとセカンダリノードが正常で、レプリケーションの遅延がない必要があります。
エンジン制限:データベースとそのすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
インスタンスは廃止されたインスタンスタイプを使用していない必要があります。
High-availability Edition (パフォーマンス専有型ローカルディスク)
暗号化の制限:TDE (透過的データ暗号化) 機能が無効になっている必要があります。TDE を有効にすると、無効にすることはできません。ご利用のインスタンスで TDE が有効になっている場合は、方法 2:DTS を使用してデータベースバージョンをアップグレードするを使用する必要があります。
データベースプロキシの制限 (該当する場合):データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。
インスタンスステータスの制限:インスタンスステータスは 実行中 であり、プライマリノードとセカンダリノードが正常で、レプリケーションの遅延がない必要があります。
テーブル数の制限:テーブル数は 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 へのアップグレード:機能の違いについては、「付録 4:MySQL 5.7 と MySQL 5.6 の機能の違い」をご参照ください。アップグレードのメリットについては、「付録 2:MySQL 5.6 から MySQL 5.7 へのアップグレードのメリット」をご参照ください。
5.7 から 8.0 へのアップグレード:機能の違いについては、「付録 3:MySQL 8.0 と MySQL 5.7 の機能の違い」をご参照ください。アップグレードのメリットについては、「付録 1:MySQL 5.7 から MySQL 8.0 へのアップグレードのメリット」をご参照ください。
アップグレードプロセスとその影響を理解する
バージョン間の制限:メジャーバージョンをまたいでアップグレードすることはできません。デフォルトでは、インスタンスはターゲットのメジャーバージョンの最新マイナーバージョンにアップグレードされます。たとえば、インスタンスを 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 へのアップグレードの場合、以下の追加チェックを実行する必要があります:
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;
アップグレード前のテストとシミュレーション
構文テスト:アップグレード前に、新しいバージョンの新しい RDS インスタンスを作成して、構文の互換性をテストします。これにより、アップグレード後に古いバージョンの構文や機能がサポートされないという問題を回避できます。
アップグレードシミュレーション:アップグレード前に、元のインスタンスをクローンし、クローンしたインスタンスを使用してアップグレードをテストします。すべての機能が期待どおりに動作することを確認した後、元のインスタンスをアップグレードします。
アップグレード後の注意点
インスタンスを古いバージョンに復元する:古いバージョンのクラウドディスクバックアップを使用して、インスタンスをそのバージョンに復元できます。これは、パフォーマンス専有型ローカルディスクを持つインスタンスではサポートされていません。
インスタンスを新しいバージョンに復元する:古いバージョンのバックアップセットを使用して、インスタンスを新しいバージョンに復元することはできません。復元を実行するには、インスタンスがアップグレードされた後に作成されたバックアップセットを使用してください。
手順
アップグレードシナリオに基づいてアップグレード方法を選択します:
アップグレード方法 | アップグレードシナリオ |
事前チェックを実行してからアップグレード |
|
直接アップグレード |
|
事前チェックを実行してからアップグレード
[インスタンス] ページに移動します。上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択します。次に、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、メジャーバージョンのアップグレード をクリックして、アップグレード前チェック ページに移動します。
[アップグレードバージョンの選択] ドロップダウンリストから、ターゲットバージョンを選択し、アップグレードチェックレポートの作成 をクリックします。レポートの詳細については、「メジャーバージョンアップグレードチェックレポートの説明」をご参照ください。
チェックが完了し、リスクがないことを確認した後、インスタンスのアップグレード タブに切り替えます。
[アップグレードバージョンの選択] ドロップダウンリストから、ターゲットバージョンを選択し、インスタンスのアップグレード をクリックします。
大容量バージョンのアップグレードインスタンス ダイアログボックスで、ターゲットバージョンを確認し、切り替え時間 を選択して、今すぐアップグレード をクリックします。
直接アップグレード
[インスタンス] ページに移動します。上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択します。次に、インスタンス ID をクリックします。
セクションで、データベースをアップグレードする をクリックします。
説明このオプションが表示されない場合は、ご利用のインスタンスがアップグレード要件を満たしているか確認してください。
表示されるダイアログボックスで、データ移行直後の切り替え または メンテナンス可能な期間中のスイッチ を選択し、OK をクリックします。
データ移行直後の切り替え:すぐにアップグレードを開始します。
メンテナンス可能な期間中のスイッチ:アップグレードは指定されたメンテナンスウィンドウ内で実行されます。保守時間枠 の横にある 設定 をクリックして、メンテナンスウィンドウをすばやく変更することもできます。
説明アップグレード中、インスタンスのステータスは バージョン変更中 になります。
方法 2:DTS を使用したデータベースバージョンのアップグレード
コンソールからの直接アップグレードをサポートしていないインスタンスの場合、新しいデータベースバージョンの新しいインスタンスを作成できます。その後、DTS データ移行タスクを使用して、元のインスタンスから新しいインスタンスにデータを移行します。これにより、間接的にデータベースバージョンがアップグレードされます。このプロセスには、次の手順が含まれます:
例:TDE が有効になっている MySQL 5.7 インスタンスがあり、コンソールから直接アップグレードできません。この場合、MySQL 8.0 を実行する新しいインスタンスを作成し、元のインスタンスから新しいインスタンスにデータを移行し、最後に元のインスタンスをリリースします。これにより、間接的にデータベースバージョンがアップグレードされます。
クロスバージョンのデータ移行後、互換性をテストし、一定期間インスタンスをモニタリングしてください。すべてが正常であることを確認した後、元のインスタンスをリリースしてください。
付録 1:MySQL 5.7 から MySQL 8.0 へのアップグレードのメリット
セキュリティを向上させ、アカウント管理の柔軟性を高めます。
リソースグループの作成と管理をサポートします。
InnoDB ストレージエンジンの機能を強化します。
新しい文字セット、データ型、構文、新しいバックアップロック、および optimizer_switch フラグのサポートを追加します。
JSON および XML 機能を強化します。
オプティマイザーの機能を強化します。
レプリケーション性能を向上させます。
複数値インデックスの作成と派生条件プッシュダウン最適化をサポートします。
MySQL 権限付与テーブルの読み取りをサポートします。
リソース割り当て制御をサポートします。
付録 2:MySQL 5.6 から MySQL 5.7 へのアップグレードのメリット
パスワード管理、アカウントロック、暗号化接続などの機能を追加して、データベースのセキュリティを向上させます。
RENAME INDEX を使用したインデックスの名前変更など、オンライン DDL 操作をサポートします。
InnoDB エンジンのスケーラビリティと一時テーブルのパフォーマンスを向上させ、データロードを高速化します。
JSON をサポートします。
パーティションテーブルのインデックス条件プッシュダウン (ICP) と新しい InnoDB 空間インデックスをサポートします。
ほとんどのパーサ、オプティマイザー、コストモデルを最適化し、データベースの保守性、スケーラビリティ、パフォーマンスを向上させます。
中国国家標準で指定されている GB18030 文字セットを含む、サポートされる文字セットの範囲を拡大します。
中国語、日本語、韓国語をサポートする ngram フルテキストパーサプラグインを提供します。
ソースダンプスレッドを最適化して、ロック競合を減らし、ソーススループットを向上させます。
レプリケーションの遅延を大幅に削減します。
sys システムデータベースを追加し、複数のメトリックを提供し、ストレージ使用量を削減し、データベースの使いやすさを大幅に向上させます。
付録 3: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 構文 | サポート | サポート対象外 |
付録 4:MySQL 5.7 と MySQL 5.6 の機能の違い
次の表は、MySQL 5.7 と 5.6 の重要な違いの一部のみをリストしています。その他の違いについては、「MySQL リリースノート」をご参照ください。
特徴 | 5.6 | 5.7 |
GTID モードでの CREATE...AS SELECT | サポート | サポート対象外 |
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 へのアップグレード中、システムは古い時間データ型を持つフィールドを含むテーブルを検出し、再構築します。これにより、アップグレードプロセスが遅くなります。 |
付録 5: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 インスタンスのメジャーデータベースバージョンをアップグレードします。 |