このトピックでは、ApsaraDB RDS for MySQL インスタンスのメジャーエンジンバージョンをアップグレードする方法について説明します。メジャーエンジンバージョンは、ApsaraDB RDS コンソールでアップグレードできます。または、必要なメジャーエンジンバージョンを実行する RDS インスタンスを作成し、Data Transmission Service (DTS) を使用して元の RDS インスタンスから新しいインスタンスにデータを移行することもできます。
ApsaraDB RDS for MySQL では、ApsaraDB RDS コンソールでのメジャーエンジンバージョンのダウングレードはサポートされていません。 必要なメジャーエンジンバージョンを実行する RDS インスタンスを作成し、DTS を使用して元の RDS インスタンスのデータを新しい RDS インスタンスに移行し、新しい RDS インスタンスが期待どおりに動作することを確認した後に、元の RDS インスタンスをリリースできます。
アップグレード方法を選択する
方法 1: ApsaraDB RDS コンソールでメジャーエンジンバージョンをアップグレードする および 方法 2: DTS コンソールでメジャーエンジンバージョンをアップグレードする は、すべての MySQL バージョンのアップグレードをサポートしています。これには、MySQL 5.5 から MySQL 5.6、MySQL 5.6 から MySQL 5.7、MySQL 5.7 から MySQL 8.0 へのアップグレードが含まれます。RDS インスタンスのメジャーエンジンバージョンをアップグレードする前に、ビジネス要件に基づいてアップグレード方法を選択してください。
RDS インスタンスが次の 4 つのタイプのいずれかに属し、そのタイプの要件を満たしている場合は、方法 1: ApsaraDB RDS コンソールでメジャーエンジンバージョンをアップグレードするを使用することをお勧めします。
ESSD を使用した RDS クラスタ版を実行している RDS インスタンス
MySQL グループレプリケーション (MGR) の制限: MySQL グループレプリケーション (MGR) を使用した RDS クラスタ版を実行する RDS インスタンスのメジャーエンジンバージョンはアップグレードできません。
データベースプロキシの制限 (該当する場合): データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。
インスタンスステータスの制限: RDS インスタンスは [実行中] ステータスである必要があります。プライマリノードとセカンダリノードは正常であり、レプリケーションの遅延がない必要があります。
ストレージエンジンの制限: データベースとすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
RDS インスタンスは廃止された仕様を使用していません。詳細については、「廃止されたインスタンスタイプ」をご参照ください。
ESSD を使用した RDS High-availability Edition を実行している RDS インスタンス
データベースプロキシの制限 (該当する場合): データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。
インスタンスステータスの制限: RDS インスタンスは [実行中] ステータスである必要があります。プライマリノードとセカンダリノードは正常であり、レプリケーションの遅延がない必要があります。
ストレージエンジンの制限: データベースとすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
RDS インスタンスは廃止された仕様を使用していません。詳細については、「廃止されたインスタンスタイプ」をご参照ください。
ローカル SSD を使用した RDS High-availability Edition を実行する RDS インスタンス
暗号化の制限: Transparent Data Encryption (TDE) は有効になっていません。TDE が有効になっている場合、TDE を無効にすることはできません。この場合、方法 2: DTS コンソールでメジャーエンジンバージョンをアップグレードするを使用する必要があります。
データベースプロキシの制限 (該当する場合): データベースプロキシのマイナーバージョンは 1.13.41 以降である必要があります。
インスタンスステータスの制限: RDS インスタンスは [実行中] ステータスである必要があります。プライマリノードとセカンダリノードは正常であり、レプリケーションの遅延がない必要があります。
テーブル数の制限: テーブル数は 1,000,000 を超えることはできません。
ストレージエンジンの制限: データベースとすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
インスタンスタイプの制限: 新しいメジャーエンジンバージョンは、元の RDS インスタンスとその読み取り専用 RDS インスタンスのインスタンスタイプをサポートしている必要があります。インスタンスタイプは廃止されているタイプであってはなりません。詳細については、「プライマリ ApsaraDB RDS for MySQL インスタンスタイプ」をご参照ください。
ESSD を使用した RDS Basic Edition を実行している RDS インスタンス
インスタンスステータスの制限: RDS インスタンスは [実行中] ステータスである必要があります。
ストレージエンジンの制限: データベースとすべてのテーブルは InnoDB ストレージエンジンを使用する必要があります。
RDS インスタンスは廃止された仕様を使用していません。詳細については、「廃止されたインスタンスタイプ」をご参照ください。
RDS インスタンスが上記の 4 つのタイプのいずれにも属していない場合、またはTDE が有効になっている場合は、方法 2: DTS コンソールでメジャーエンジンバージョンをアップグレードするを使用してください。
RDS インスタンスが上記の 4 つのタイプのいずれかに属しているが、そのタイプの要件を満たしていない場合は、次の表に基づいて RDS インスタンスの構成を変更し、方法 1: ApsaraDB RDS コンソールでメジャーエンジンバージョンをアップグレードするまたは方法 2: DTS コンソールでメジャーエンジンバージョンをアップグレードするを使用できます。
問題
ソリューション
RDS インスタンスは、[再起動中]など、別の状態です。
進行中のタスクが完了したら、メジャーエンジンバージョンをアップグレードします。
ローカル SSD を使用した RDS High-availability Edition を実行する RDS インスタンスのテーブル数が 1,000,000 を超えています。
メジャーエンジンバージョンをアップグレードする前に、冗長なテーブルを削除します。
特定のデータベースとテーブルは InnoDB を使用していません。
ALTER TABLE engine=InnoDB;
コマンドを実行して、ストレージエンジンを InnoDB に変換します。RDS インスタンスは廃止されたインスタンスタイプを使用しています。
メジャーエンジンバージョンをアップグレードする前に、インスタンスタイプを変更します。詳細については、「ApsaraDB RDS for MySQL インスタンスの仕様を変更する」をご参照ください。
データベースプロキシのバージョンが要件を満たしていません。
データベースプロキシのマイナーバージョンを 1.13.41 以降にアップグレードします。詳細については、「データベースプロキシのマイナーエンジンバージョンをアップグレードする」をご参照ください。
RDS インスタンスが標準 SSD を使用しています。
メジャーエンジンバージョンをアップグレードする前に、ストレージタイプを標準 SSD から ESSD に変更します。
別のデータベースエンジンを実行している RDS インスタンスのメジャーエンジンバージョンをアップグレードする方法の詳細については、次のトピックをご参照ください。
方法 1: ApsaraDB RDS コンソールでメジャーエンジンバージョンをアップグレードする
準備
元のメジャーエンジンバージョンと新しいメジャーエンジンバージョンの違いと利点を理解する
MySQL 5.6 から MySQL 5.7 へのアップグレード: MySQL 5.6 と MySQL 5.7 の違いの詳細については、「付録 4: MySQL 5.6 と MySQL 5.7 の違い」をご参照ください。MySQL 5.7 の MySQL 5.6 に対する利点の詳細については、「付録 2: MySQL 5.7 の MySQL 5.6 に対する利点」をご参照ください。
MySQL 5.7 から MySQL 8.0 へのアップグレード: MySQL 5.7 と MySQL 8.0 の違いの詳細については、「付録 3: MySQL 5.7 と MySQL 8.0 の違い」をご参照ください。MySQL 8.0 の MySQL 5.7 に対する利点の詳細については、「付録 1: MySQL 8.0 の MySQL 5.7 に対する利点」をご参照ください。
アップグレードプロセスとその影響を理解する
バージョン範囲の制限: RDS インスタンスのメジャーエンジンバージョンをアップグレードする際に、メジャーエンジンバージョンをスキップすることはできません。デフォルトでは、システムは RDS インスタンスのメジャーエンジンバージョンを、必要なメジャーエンジンバージョンの最新のマイナーエンジンバージョンにアップグレードします。たとえば、メジャーエンジンバージョンを MySQL 5.6 から MySQL 8.0 にアップグレードする場合、まず MySQL 5.6 から MySQL 5.7 に、次に MySQL 5.7 から MySQL 8.0 にアップグレードする必要があります。
ダウングレードの制限: ApsaraDB RDS コンソールでメジャーエンジンバージョンをダウングレードすることはできません。必要なメジャーエンジンバージョンを実行する RDS インスタンスを作成し、DTS を使用して元の RDS インスタンスのデータを新しい RDS インスタンスに移行し、新しい RDS インスタンスが期待どおりに動作することを確認した後に、元の RDS インスタンスをリリースできます。
ローカル SSD を使用する RDS インスタンスのアップグレードプロセス: システムは最初にセカンダリ RDS インスタンスのメジャーエンジンバージョンをアップグレードします。アップグレードが完了すると、システムはワークロードをプライマリ RDS インスタンスからセカンダリ RDS インスタンスに切り替えます。次に、システムはプライマリ RDS インスタンスのメジャーエンジンバージョンをアップグレードします。アップグレード中、ワークロードは 30 秒から 1 分間中断されます。オフピーク時にアップグレードを実行することをお勧めします。
ESSD を使用する RDS インスタンスのアップグレードプロセス: システムは RDS インスタンスを作成し、新しい RDS インスタンスのメジャーエンジンバージョンを必要なバージョンにアップグレードします。次に、システムはワークロードを元の RDS インスタンスから新しい RDS インスタンスに切り替えます。アップグレード中、ワークロードは 30 秒から 1 分間中断されます。オフピーク時にアップグレードを実行することをお勧めします。
インスタンスとデータベースの構成を確認する
予約キーワードを確認する: ユーザー定義関数が予約キーワードを使用していないことを確認するために、ユーザー定義関数を確認します。
フルバックアップを確認する: 過去 1 週間以内にフルバックアップが作成されているかどうかを確認します。フルバックアップが作成されていない場合は、フルバックアップを作成します。
自動再接続メカニズムを確認する: アップグレード中、システムはワークロードをプライマリ RDS インスタンスからセカンダリ RDS インスタンスに切り替えます。オフピーク時にアップグレードを実行するか、アプリケーションに自動再接続メカニズムが実装されていることを確認することをお勧めします。インスタンスのスイッチオーバーの影響の詳細については、「インスタンスのスイッチオーバーの影響」をご参照ください。
空き領域を確認する: アップグレード前に、RDS インスタンスに十分な空き領域があることを確認します。少なくとも 10 GB の空き領域を確保することをお勧めします。
クリーンアップポリシーを調整する: ローカルログの保存期間と最大ストレージ使用量を増やします。詳細については、「ローカルログポリシーを変更する」をご参照ください。
インスタンスパラメータをバックアップする: アップグレード後の RDS インスタンスの安定性とパフォーマンスを確保するために、システムでは、新しいメジャーエンジンバージョンで廃止された一部のパラメータを表示または変更することはできません。RDS インスタンスのメジャーエンジンバージョンをアップグレードする前に、後続の操作と監査のためにパラメータ変更レコードをバックアップすることをお勧めします。
メジャーエンジンバージョンを MySQL 5.6 から MySQL 5.7 に、または MySQL 5.7 から MySQL 8.0 にアップグレードする場合は、次の項目を確認してください。
MySQL 5.6 から MySQL 5.7 へのアップグレード
フルテキストインデックスとバージョン情報を確認する: RDS インスタンスが MySQL 5.6 と 20221130 より前のマイナーエンジンバージョンを実行している場合、フルテキストインデックスはシステム表領域に作成されます。RDS インスタンスのメジャーエンジンバージョンを MySQL 5.7 にアップグレードすると、表領域が破損する可能性があります。RDS インスタンスが MySQL 5.6 と以前のマイナーエンジンバージョンを実行している場合は、RDS インスタンスを最新のマイナーエンジンバージョンに更新します。次に、RDS インスタンスのメジャーエンジンバージョンをアップグレードします。詳細については、「FAQ」をご参照ください。
MySQL 5.7 から MySQL 8.0 へのアップグレード
機能の互換性を確認する: データベースのストアドプロシージャ、トリガー、ビュー、または関数がMySQL 8.0 でサポートされていない機能を含んでいる場合は、アップグレード前にこれらのデータベースオブジェクトを変更します。そうしないと、アップグレードは失敗します。
システムテーブルの依存関係を確認する: ビジネスが MySQL 5.7 のシステムテーブルに依存しているかどうかを確認します。システムテーブルは、sys、mysql、information_schema、および performance_schema データベースに格納されています。RDS インスタンスのメジャーエンジンバージョンを MySQL 5.7 から MySQL 8.0 にアップグレードすると、一部のシステムテーブルが削除されたり、名前や構造が変更されたりする可能性があります。ビジネスがこれらのテーブルに依存している場合は、エラーが発生する可能性があります。
データ型の互換性を確認する: MySQL 8.0 は、以前のバージョンでサポートされていた一部のデータ型をサポートしていません。テーブルのフィールドが MySQL 8.0 でサポートされていないデータ型を使用している場合は、アップグレード前に
REPAIR TABLE
文を実行するか、論理エクスポートとインポートを使用して問題を修正する必要があります。詳細については、「Preparing Your Installation for Upgrade」をご参照ください。comment
の値を確認する:loose_upgrade_clear_invalid_comment
パラメータは、メジャーエンジンバージョンが MySQL 8.0 で、マイナーエンジンバージョンが 20221231 以降の RDS インスタンスに導入されました。このパラメータがON
(デフォルト値) に設定されている場合、システムはアップグレード中にテーブル、フィールド、およびインデックスのコメントに含まれる文字化けを自動的にクリアして、アップグレードの失敗を防ぎます。したがって、アップグレード前にデータベーステーブルのcomment
値に文字化けが含まれていないかどうかを確認する必要があります。文字化けが存在する場合、値はクリアされます。ストアドプロシージャを確認する: データベースのストアドプロシージャまたは関数に文字化けが含まれている場合は、アップグレードの失敗を防ぐために、アップグレード前に問題を修正します。
MySQL 5.5 以前の時間データ型を確認する: データベースに MySQL 5.5 以前の時間データ型を使用するテーブルが含まれている場合は、メジャーエンジンバージョンを MySQL 8.0 にアップグレードする前に、テーブルを再構築します。そうしないと、アップグレードは失敗します。
次の SQL 文を実行して、RDS インスタンスに 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 */ ");
RDS インスタンスに MySQL 5.5 以前の時間データ型を使用するテーブルが含まれている場合は、次のコマンドを実行してテーブル構造を再構築します。
/* テーブルを再構築する */ ALTER TABLE FORCE;
アップグレードをテストおよびシミュレートする
構文テスト: スペックアップの前に、必要なメジャーエンジンバージョンを実行する RDS インスタンスを作成し、構文をテストして、元のメジャーエンジンバージョンで使用されている構文または機能が新しいメジャーエンジンバージョンでサポートされていることを確認することをお勧めします。
アップグレードシミュレーション: アップグレードの前に、元の RDS インスタンスをクローンし、クローンされた RDS インスタンスでアップグレードをテストすることをお勧めします。すべての機能が期待どおりに動作することを確認した後、元の RDS インスタンスをアップグレードします。
アップグレード後の考慮事項
元のメジャーエンジンバージョンを実行する RDS インスタンスの復元:元の ESSD を使用する RDS インスタンスのバックアップ を使用して、元のメジャーエンジンバージョンを実行する RDS インスタンスを復元できます。この機能は、ローカル SSD を使用する RDS インスタンスではサポートされていません。
新しいメジャーエンジンバージョンを実行する RDS インスタンスの復元: 元の RDS インスタンスのバックアップを使用して、新しいメジャーエンジンバージョンを実行する RDS インスタンスを復元することはできません。RDS インスタンスを復元する場合は、アップグレード後に作成されたバックアップを使用する必要があります。
手順
アップグレード前にアップグレード前のチェックを実行する
次のアップグレードシナリオでは、メジャーエンジンバージョンをアップグレードする前に、アップグレード前のチェックを実行する必要があります。
ローカル SSD を使用して RDS High-availability Edition を実行する RDS インスタンスの場合、MySQL 5.6 から MySQL 5.7 に、または MySQL 5.7 から MySQL 8.0 にアップグレードします。
ESSD を使用して RDS High-availability Edition を実行する RDS インスタンスの場合、MySQL 5.7 から MySQL 8.0 にアップグレードします。
ApsaraDB RDS コンソール にアクセスし、上部のナビゲーションバーでリージョンを選択し、メジャーエンジンバージョンをアップグレードする RDS インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、[メジャーエンジンバージョンのアップグレード] をクリックします。[アップグレード前チェック] タブが表示されます。
[ターゲットバージョン] の右側のドロップダウンリストからアップグレード先のメジャーエンジンバージョンを選択し、[チェックレポートの作成] をクリックします。チェックレポートの詳細については、「メジャーエンジンバージョンのアップグレードチェックレポートの説明」をご参照ください。
チェックが完了し、アップグレードにリスクがないことを確認したら、[インスタンスのアップグレード] タブをクリックします。
[ターゲットバージョン] の右側のドロップダウンリストからアップグレード先のメジャーエンジンバージョンを選択し、[インスタンスのアップグレード] をクリックします。
[メジャーエンジンバージョンのアップグレード] ダイアログボックスで、アップグレード先のメジャーエンジンバージョンを確認し、[切り替え時間] の値を選択して、[今すぐアップグレード] をクリックします。
直接アップグレードする
次のアップグレードシナリオでは、メジャーエンジンバージョンを直接アップグレードできます。
ESSD を使用して RDS Basic Edition または RDS Cluster Edition を実行する RDS インスタンスの場合、MySQL 5.7 から MySQL 8.0 にアップグレードします。
ローカル SSD を使用して RDS High-availability Edition を実行する RDS インスタンスの場合、MySQL 5.5 から MySQL 5.6 にアップグレードします。
ApsaraDB RDS コンソール にアクセスし、上部のナビゲーションバーでリージョンを選択し、メジャーエンジンバージョンをアップグレードする RDS インスタンスの ID をクリックします。
セクションで、[データベースバージョンのアップグレード] をクリックします。
説明このボタンが見つからない場合は、RDS インスタンスがアップグレード要件を満たしているかどうかを確認してください。
表示されるダイアログボックスで、[すぐに切り替え] または [メンテナンスウィンドウ内で切り替え] を選択し、[OK] をクリックします。
[すぐに切り替え]: システムはすぐにアップグレードを開始します。
[メンテナンスウィンドウ内で切り替え]: システムはメンテナンスウィンドウ内でメジャーエンジンバージョンをアップグレードします。また、[メンテナンスウィンドウ] をクリックし、右側の [構成] をクリックして、メンテナンスウィンドウを変更することもできます。
説明アップグレード中、RDS インスタンスのステータスは [バージョンを移行中] です。
方法 2: DTS コンソールでメジャーエンジンバージョンをアップグレードする
RDS インスタンスのメジャーエンジンバージョンを ApsaraDB RDS コンソールでアップグレードできない場合は、必要なメジャーエンジンバージョンを実行する RDS インスタンスと DTS データ移行タスクを作成し、元の RDS インスタンスのデータを新しい RDS インスタンスに移行して、メジャーエンジンバージョンをアップグレードできます。
例: MySQL 5.7 を実行し、TDE が有効になっている RDS インスタンスがあるとします。 ApsaraDB RDS コンソールで RDS インスタンスのメジャーエンジンバージョンをアップグレードすることはできません。 この場合、MySQL 8.0 を実行する RDS インスタンスを作成し、元の RDS インスタンスのデータを新しい RDS インスタンスに移行してから、元の RDS インスタンスをリリースできます。
アップグレード後、新しいメジャーエンジンバージョンがワークロードと互換性があることを確認し、一定期間新しい RDS インスタンスを監視する必要があります。新しい RDS インスタンスでワークロードが期待どおりに実行されることを確認したら、元の RDS インスタンスをリリースできます。
手順 2: WordPress プラグインを構成する
データベースシステムのセキュリティが強化されました。より柔軟にアカウントを管理できます。
リソースグループを作成および管理できます。
InnoDB ストレージエンジンの機能が強化されました。
新しい文字セット、データ型、および構文がサポートされています。バックアップロックと optimizer_switch フラグが導入されました。
JSON および XML 式が強化されました。
オプティマイザーが強化されました。
レプリケーションのパフォーマンスが強化されました。
複数値のインデックスを作成できます。派生条件のプッシュダウンが最適化されました。
MySQL 権限付与テーブルを読み取ることができます。
リソース割り当て制御がサポートされています。
付録 2:MySQL 5.7 の MySQL 5.6 に対する利点
パスワード管理、アカウントロック、接続の暗号化などの新機能が導入されています。これらの新機能は、データベースシステムのセキュリティ向上に役立ちます。
オンライン DDL 操作がサポートされています。たとえば、RENAME INDEX 句を使用してインデックスの名前を変更できます。
InnoDB ストレージエンジンのスケーラビリティと一時 InnoDB テーブルのパフォーマンスが最適化され、データの読み込み速度が向上します。
JSON フォーマットがサポートされています。
パーティションテーブルに対してインデックス条件プッシュダウン (ICP) がサポートされ、InnoDB テーブルに対して空間インデックスがサポートされています。
使用されているパーサー、オプティマイザー、およびコストモデルのほとんどが最適化され、データベースシステムの保守性、スケーラビリティ、およびパフォーマンスが向上しています。
MySQL 8.0 は、JSON ドキュメントを格納およびクエリするためのネイティブ JSON データ型を提供します。MySQL 8.0 は、JSON ドキュメントの検証とインデックス作成もサポートしています。
MySQL 8.0 は、データの暗号化と復号化のための新しい暗号化機能を提供します。MySQL 8.0 は、データマスキングとデータ匿名化もサポートしています。
MySQL 8.0 は、データの整合性を確保するための新しいデータ整合性機能を提供します。MySQL 8.0 は、データ検証とデータサニタイズもサポートしています。
レプリケーションのレイテンシが大幅に短縮されています。
sys システムデータベースは、複数のメトリックをサポートするために追加されました。これらのメトリックは、ストレージの使用量を削減し、使いやすさを向上させるのに役立ちます。
付録 3:MySQL 5.7 と MySQL 8.0 の違い
次の表に、MySQL 5.7 と MySQL 8.0 の主な違いの一部のみを示します。その他のバージョンの違いについては、「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() などの暗号化関数 | サポートされています | サポートされていません |
空間分析に関連する関数。詳細については、「公式ドキュメント」をご参照ください | サポートされています | サポートされていません |
以前は Well-Known Binary(WKB)文字列またはジオメトリ引数のいずれかを受け入れていましたが、現在はジオメトリ引数を受け入れない関数 | サポートされています | サポートされていません |
\N を NULL として解析する | サポートされています | サポートされていません |
PROCEDURE ANALYSE() 関数 | サポートされています | サポートされていません |
NDB ストレージエンジンを使用したパーティションテーブルの作成 | サポートされています | サポートされていません |
InnoDB ストレージエンジンを使用した一時テーブルの圧縮 | サポートされています | サポートされていません |
JSON_APPEND() 関数 | サポートされています | サポートされていません |
共有表領域へのテーブルパーティションの配置 | サポートされています | サポートされていません |
ALTER TABLE ... UPGRADE PARTITIONING 構文 | サポートされています | サポートされていません |
付録 4:MySQL 5.6 と MySQL 5.7 の違い
次の表は、MySQL 5.6 と MySQL 5.7 の重要な違いの一部のみをリストしています。その他のバージョンの違いについては、「MySQL リリースノート」をご参照ください。
機能 | 5.6 | 5.7 |
CREATE...AS SELECT (GTID モード) | サポートされています | サポートされていません |
GTID モードでのトランザクション内での一時テーブルの使用 | サポートされています | サポートされていません |
パーティションテーブルのパーティションキーの設定 | サポートされています | サポートされていません |
ENGINE_NO_CACHE 構文 | サポートされています | サポートされていません |
非表示インデックス | 有効な値 | サポートされていません |
UPDATE non_affected_rows INSERT 構文 | サポートされています | サポートされていません |
プロキシ関連のコマンド | SET コマンドモードでサポートされています | コールプロシージャモードでサポートされています |
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 へのアップグレードプロセス中に、システムは古い時間型フィールドを含むテーブルを検出して再構築するため、アップグレードプロセスが遅くなります。 |
Appendix 5: Feature differences between MySQL 5.5 and MySQL 5.6付録 3: MySQL 5.7 と MySQL 8.0 の違い
次の表は、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 の PFS は、より多くの監視情報と表示形式を追加します。 | |
レプリケーション | MySQL 5.6 のレプリケーションの機能強化と変更点は次のとおりです。
重要 RDS MySQL 5.5 を 5.6 にアップグレードした後、GTID ベースのレプリケーション モードに自動的に切り替わります。 | |
オプティマイザー | MySQL 5.6 は、オプティマイザーの機能を強化しています。主な機能強化点は次のとおりです。
| |
サポートされていません | サポートされています | |
サポートされていません | サポートされています | |
サポートされていません | サポートされています | |
サポートされていません | サポートされています | |
サポートされていません | サポートされています |
よくある質問
Q: RDS インスタンスのメジャーエンジンバージョンをアップグレードすると、インスタンスのスイッチオーバーが発生するのはなぜですか。アップグレードによって、他に重大なリスクは発生しますか。
A: ビジネスの安定性を確保するため、パフォーマンス専有型ローカルディスクインスタンスの場合、システムは最初にセカンダリインスタンスをアップグレードし、アップグレードが完了した後にワークロードをセカンダリインスタンスに自動的に切り替えます。RDS インスタンスで ESSD を使用している場合、システムは RDS インスタンスを作成し、新しい RDS インスタンスのメジャーエンジンバージョンを必要なバージョンにアップグレードします。次に、システムはワークロードを元の RDS インスタンスから新しい RDS インスタンスに切り替えます。アップグレードによって、他に重大なリスクは発生しません。プライマリ/セカンダリスイッチオーバーの影響の詳細については、「プライマリ/セカンダリスイッチオーバーの影響」をご参照ください。
Q: プライマリ RDS インスタンスとセカンダリ RDS インスタンスのメジャーエンジンバージョンは同時にアップグレードされますか。
A: パフォーマンス専有型ローカルディスクインスタンスの場合、システムは最初にセカンダリインスタンスをアップグレードし、次にプライマリインスタンスをアップグレードします。
Q: 標準 SSD を使用した RDS Basic Edition で MySQL 5.7 を実行している RDS インスタンスのメジャーエンジンバージョンをアップグレードするにはどうすればよいですか。
A: 標準 SSD を使用した RDS Basic Edition で MySQL 5.7 を実行している RDS インスタンスのメジャーエンジンバージョンを直接アップグレードすることはできません。標準 SSD を使用した RDS Basic Edition で MySQL 5.7 を実行している RDS インスタンスのメジャーエンジンバージョンをアップグレードする場合は、RDS インスタンスの RDS エディションを RDS Basic Edition から RDS High-availability Edition にアップグレードし、RDS インスタンスのストレージタイプを変更する必要があります。
Q: RDS インスタンスのメジャーエンジンバージョンをアップグレードした後、RDS インスタンスに適用されているパラメータテンプレートは変更されますか。
A: 答えは状況によって異なります。RDS インスタンスのメジャーエンジンを MySQL 5.7 から MySQL 8.0 にアップグレードするとします。アップグレード前に RDS インスタンスがシステムパラメータテンプレートを使用している場合、RDS インスタンスはアップグレード後に元のテンプレートに対応するシステムパラメータテンプレートを使用します。たとえば、RDS インスタンスが MySQL_InnoDB_5.7_RDS High-availability Edition_パフォーマンス専有型パラメータテンプレートを使用している場合、RDS インスタンスはアップグレード後に MySQL_InnoDB_8.0_RDS High-availability Edition_パフォーマンス専有型パラメータテンプレートを使用します。アップグレード前に RDS インスタンスがカスタムパラメータテンプレートを使用している場合、テンプレートは保持されないため、RDS インスタンスはアップグレード後にテンプレートを使用できません。
Q: RDS インスタンスのメジャーエンジンバージョンをアップグレードするときに、RDS インスタンスの設定項目を変更できますか。
A: RDS インスタンスのメジャーエンジンバージョンをアップグレードするときは、RDS インスタンスの設定項目を変更できません。メジャーエンジンバージョンがアップグレードされた後にのみ、RDS インスタンスで他の操作を実行できます。
Q: ApsaraDB RDS はメジャーエンジンバージョンの自動アップグレードをサポートしていますか。
A: いいえ。RDS インスタンスのメジャーエンジンバージョンは自動アップグレードをサポートしていません。
Q: RDS インスタンスのメジャーエンジンバージョンをダウングレードできますか。
A: コンソールで RDS インスタンスのメジャーエンジンバージョンを直接ダウングレードすることはできません。下位エンジンバージョンを実行する新しい RDS インスタンスを購入し、Data Transmission Service (DTS) を使用して、上位エンジンバージョンを実行する RDS インスタンスから新しい RDS インスタンスにデータを移行できます。移行が完了したら、上位エンジンバージョンを実行している RDS インスタンスをリリースできます。このようにして、RDS インスタンスのメジャーエンジンバージョンを間接的にダウングレードできます。詳細については、「ApsaraDB RDS for MySQL インスタンス間でデータを移行する」をご参照ください。
Q: RDS インスタンスのマイナーエンジンバージョンを MySQL 5.6 から MySQL 5.7 に、または MySQL 5.7 から MySQL 8.0 にアップグレードすると、アップグレードが失敗し、「現在のインスタンスのマイナーバージョンは 20221130 より前です。削除または再構築する前に、フルテキストインデックスのマイナーバージョンをアップグレードしてください。」または「現在のインスタンスには、システム表領域に作成されたフルテキストインデックスが含まれています。アップグレードする前に、対応するフルテキストインデックスを削除して再構築してください。」というエラーメッセージが表示されます。このエラーの原因と解決策は何ですか。
A: 次のリストは、エラーの原因と解決策を示しています。
原因:
MySQL 5.6 以前のマイナーエンジンバージョンを実行している RDS インスタンスのフルテキストインデックスを作成すると、過去の理由により、フルテキストインデックスはシステム表領域に作成されます。RDS インスタンスのメジャーエンジンバージョンを MySQL 5.6 から MySQL 5.7 または MySQL 8.0 にアップグレードした後、システム表領域に作成されたフルテキストインデックスが表領域の損傷を引き起こす可能性があります。そのため、データの破損やアクセス不能などの問題を回避するために、アップグレード前にフルテキストインデックスを削除する必要があります。
説明前述の問題は、MySQL 5.6 と 20221130 のマイナーエンジンバージョンを実行する RDS インスタンスで修正されており、フルテキストインデックスは RDS インスタンスの個別の表領域に作成されます。
解決策
重要RDS インスタンスで MySQL 5.6 を実行している場合は、RDS インスタンスのメジャーエンジンバージョンを MySQL 5.7 にアップグレードするか、RDS インスタンスで 20221130 以降のマイナーエンジンを実行していることを確認してください。この場合、フルテキストインデックスは RDS インスタンスのシステム表領域に作成されません。RDS インスタンスで MySQL 5.6 以前のマイナーエンジンバージョンを実行している場合は、RDS インスタンスを最新のマイナーエンジンバージョンに更新してください。
上記のテーブル名に基づいて、システム表領域に作成されたフルテキストインデックスを削除します。
# フルテキストインデックスを削除します ALTER TABLE $table_name DROP INDEX $fts_name;
フルテキストインデックスを再作成します。
# フルテキストインデックスを再作成します ALTER TABLE $table_name ADD FULLTEXT INDEX $fts_name;
再作成後、次の SQL 文を実行して、RDS インスタンスに作成されたフルテキストインデックスを確認します。システム表領域に作成されたフルテキストインデックスが返されない場合、MySQL 5.6 から 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 インスタンスのメジャーエンジンバージョンを MySQL 5.7 から MySQL 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 つの異なる照合順序を処理できず、エラーが発生します。
読み取り専用インスタンスの有無に関係なく、メジャーバージョンアップグレードのための一時的な接続時間は 30 秒から 1 分ですか。
A: はい。オフピーク時にアップグレードを実行することをお勧めします。
FAQ
API 操作 | 説明 |
RDS インスタンスのメジャーエンジンバージョンをアップグレードします。 |