

# Amazon RDS での MySQL 機能のサポート
<a name="MySQL.Concepts.FeatureSupport"></a>

RDS for MySQL は MySQL のほとんどの特徴と機能をサポートしています。一部の機能には、制限付きのサポートまたは制限された特権があります。

[[What's New with Database?](https://aws.amazon.com/about-aws/whats-new/database/)] (データベースの新機能) ページで新しい Amazon RDS 機能をフィルタリングできます。[**製品**] で [**Amazon RDS**] を選択します。その後、**MySQL 2022** などのキーワードを使用して検索します。

**注記**  
以下のリストは完全なものではありません。

**Topics**
+ [

## Amazon RDS for MySQL メジャーバージョンでの MySQL 機能のサポート
](#MySQL.Concepts.FeatureSupport.MajorVersions)
+ [

## RDS for MySQL のサポートされているストレージエンジン
](#MySQL.Concepts.Storage)
+ [

## Amazon RDS の MySQL での memcached およびその他のオプションの使用
](#MySQL.Concepts.General.Options)
+ [

## Amazon RDS の MySQL に対する InnoDB キャッシュウォーミング
](#MySQL.Concepts.InnoDBCacheWarming)
+ [

## RDS for MySQL 8.4 の包括的な言語変更
](#mysql-8-4-inclusive-language-changes)
+ [

## Amazon RDS でサポートされていない MySQL の機能
](#MySQL.Concepts.Features)

## Amazon RDS for MySQL メジャーバージョンでの MySQL 機能のサポート
<a name="MySQL.Concepts.FeatureSupport.MajorVersions"></a>

次のセクションでは、Amazon RDS for MySQL のメジャーバージョンでの MySQL 機能のサポートに関する情報について説明しています。

**Topics**
+ [

### Amazon RDS は MySQL 8.4 をサポート
](#MySQL.Concepts.FeatureSupport.8-4)

Amazon RDS for MySQL のサポートされているマイナーバージョンについては、「[Amazon RDS でサポートされている MySQL のマイナーバージョン](MySQL.Concepts.VersionMgmt.md#MySQL.Concepts.VersionMgmt.Supported)」を参照してください。

### Amazon RDS は MySQL 8.4 をサポート
<a name="MySQL.Concepts.FeatureSupport.8-4"></a>

Amazon RDS は、MySQL バージョン 8.4 以降を実行する DB インスタンスで以下の新しい機能をサポートしています。
+ **暗号化ライブラリ** – RDS for MySQL は OpenSSL を FIPS 140-3 認定の AWS Libcrypto (AWS-LC) に置き換えました。詳細については、[https://github.com/aws/aws-lc](https://github.com/aws/aws-lc) の AWS-LC GitHub リポジトリを参照してください。
+ **TLS の変更** – RDS for MySQL は TLS 1.2 および TLS 1.3 のみをサポートしています。詳細については、「[Amazon RDS 上の MySQL DB インスタンスの SSL/TLS サポート](MySQL.Concepts.SSLSupport.md)」を参照してください。
+ **memcached のサポート** – memcached インターフェイスは MySQL 8.4 での使用が廃止されました。詳細については、「[MySQL の memcached サポート](Appendix.MySQL.Options.memcached.md)」を参照してください。
+ **デフォルトの認証プラグイン** – デフォルトの認証プラグインは `caching_sha2_password` です。詳細については、「[MySQL デフォルト認証プラグイン](MySQL.KnownIssuesAndLimitations.md#MySQL.Concepts.KnownIssuesAndLimitations.authentication-plugin)」を参照してください。
+ **`mysqlpump` クライアントユーティリティ** – `mysqlpump` クライアントユーティリティは MySQL 8.4 では使用不可になりました。詳細については、「*AWS 規範ガイダンス*」の「[RDS for MySQL のロールベースの権限モデル](Appendix.MySQL.CommonDBATasks.privilege-model.md)」および「[mysqldump and mysqlpump](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-large-mysql-mariadb-databases/mysqldump-and-mysqlpump.html)」を参照してください。
+ **マネージドレプリケーションストアドプロシージャ** – `caching_sha2_password` で設定されたレプリケーションユーザーによるレプリケーションを、ストアドプロシージャを使用して管理する場合は、`SOURCE_SSL=1` を指定して TLS を設定する必要があります。`caching_sha2_password` は RDS for MySQL 8.4 のデフォルトの認証プラグインです。
+ **パラメータの動作の変更** – MySQL 8.4 で、次のパラメータが変更されました。
  + `innodb_dedicated_server` – このパラメータはデフォルトで有効になります。詳細については、「[MySQL 8.4 でのバッファプールサイズと REDO ログ容量の設定](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)」を参照してください。
  + `innodb_buffer_pool` - 現状でこのパラメータはデータベースエンジンにより計算されますが、この設定は上書きできます。詳細については、「[MySQL 8.4 でのバッファプールサイズと REDO ログ容量の設定](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)」を参照してください。
  + `innodb_redo_log_capacity` – 今後は、このパラメータで REDO ログファイルのサイズを制御します。現状でこのパラメータはデータベースエンジンにより計算されますが、この設定は上書きできます。詳細については、「[MySQL 8.4 でのバッファプールサイズと REDO ログ容量の設定](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)」を参照してください。
+ **非推奨または削除されたパラメータ** – RDS for MySQL では、MySQL 8.4 DB インスタンスのパラメータグループから次のパラメータが削除されました。今後は、`innodb_redo_log_capacity` パラメータで REDO ログファイルのサイズを制御します。
  + `innodb_log_file_size`
  + `innodb_log_files_in_group`
+ **パラメータの新しいデフォルト値** – 次のパラメータには、MySQL 8.4 DB インスタンスの新しいデフォルト値があります。
  + パフォーマンスに関連するさまざまな MySQL コミュニティパラメータが変更されました。詳細については、[MySQL 8.0 以降の MySQL 8.4 の新機能](https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html)」を参照してください。

    本番稼働用インスタンスを移行する前に、RDS for MySQL 8.4 でアプリケーションのパフォーマンスをテストすることをお勧めします。
  + `innodb_purge_threads` – InnoDB 履歴リストの長さが大きくなりすぎないように、デフォルト値は式 `LEAST({DBInstanceVCPU/2},4)` に設定されています。
  + `group_replication_exit_state_action` – デフォルト値は `OFFLINE_MODE` で、MySQL コミュニティのデフォルトと一致します。詳細については、「[RDS for MySQL アクティブ/アクティブクラスターに関する考慮事項とベストプラクティス](mysql-active-active-clusters-considerations-limitations.md#mysql-active-active-clusters-considerations)」を参照してください。
  + `binlog_format` – デフォルト値は `ROW` で、MySQL コミュニティのデフォルトと一致します。シングル AZ DB インスタンスまたはマルチ AZ DB インスタンスのパラメータは変更できますが、マルチ AZ DB クラスターのパラメータは変更できません。マルチ AZ DB クラスターは半同期レプリケーションを使用し、`binlog_format` を `MIXED` または `STATEMENT` に設定すると、レプリケーションは失敗します。
+ **包括的な言語の変更** – RDS for MySQL 8.4 には、包括的な言語のキーワードとシステムスキーマに関連する RDS for MySQL 8.0 からの変更が含まれています。詳細については、「[RDS for MySQL 8.4 の包括的な言語変更](#mysql-8-4-inclusive-language-changes)」を参照してください。

MySQL 8.4 のすべての機能と変更のリストについては、MySQL ドキュメントの「[MySQL 8.0 以降の MySQL 8.4 の新機能](https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html)」を参照してください。

サポートされない機能の一覧については、「[Amazon RDS でサポートされていない MySQL の機能](#MySQL.Concepts.Features)」を参照してください。

## RDS for MySQL のサポートされているストレージエンジン
<a name="MySQL.Concepts.Storage"></a>

MySQL では、さまざまな機能を備えた複数のストレージエンジンがサポートされていますが、それらのすべてのエンジンが、回復性やデータ耐久性の高いのために最適化されているわけではありません。Amazon RDS は、MySQL DB インスタンス用の、InnoDB ストレージエンジンを完全にサポートしています。Amazon RDS でのポイントインタイムの復元とスナップショット復元機能には、回復可能なストレージエンジンが必要であり、InnoDB ストレージエンジンのみがサポートされています。詳細については、「[MySQL の memcached サポート](Appendix.MySQL.Options.memcached.md)」を参照してください。

Federated ストレージエンジンは、現在、Amazon RDS for MySQL ではサポートされていません。

ユーザーが作成したスキーマの場合、MyISAM ストレージエンジンでは、信頼性の高い回復がサポートされておらず、エンジンの回復後に MySQL が再起動したとき、ポイントインタイム復元またはスナップショット復元が意図したとおりに機能せず、データが紛失または破損する場合があります。それでも Amazon RDS で MyISAM を使用する場合は、スナップショットがいくつかの条件下で役立つことがあります。

**注記**  
`mysql` スキーマのシステムテーブルを MyISAM ストレージにできます。

既存の MyISAM テーブルを InnoDB テーブルに変換する場合、`ALTER TABLE` コマンド (例: `alter table TABLE_NAME engine=innodb;`) を使用できます。MyISAM と InnoDB の長所と短所は異なっているため、アプリケーションで切り替えた際の影響を切り替え前に十分に評価しておく必要があることを念頭に置いてください。

MySQL 5.1、5.5 および 5.6 は、Amazon RDS でサポートされなくなりました。ただし、既存の MySQL 5.1、5.5 および 5.6 スナップショットは復元できます。MySQL 5.1、5.5 および 5.6 スナップショットを復元すると、DB インスタンスが MySQL 5.7 に自動的にアップグレードされます。

## Amazon RDS の MySQL での memcached およびその他のオプションの使用
<a name="MySQL.Concepts.General.Options"></a>

ほとんどの Amazon RDS DB エンジンでは、DB インスタンスの追加機能を選択できる、オプショングループをサポートしています。RDS for MySQL DB インスタンスは、シンプルなキーベースのキャッシュである `memcached` オプションをサポートします。`memcached` およびその他のオプションの詳細については、「[MySQL DB インスタンスのオプション](Appendix.MySQL.Options.md)」を参照してください。オプショングループの操作方法の詳細については、「[オプショングループを使用する](USER_WorkingWithOptionGroups.md)」を参照してください。

## Amazon RDS の MySQL に対する InnoDB キャッシュウォーミング
<a name="MySQL.Concepts.InnoDBCacheWarming"></a>

InnoDB キャッシュウォームアップでは、DB インスタンスがシャットダウンされたときのバッファープールの最新の状態を保存し、DB インスタンスが起動されたときに保存された情報からバッファープールを再ロードすることによって、MySQL DB インスタンスのパフォーマンスを向上させることができます。これにより、通常のデータベースの使用からバッファープールを「ウォームアップする」必要がなくなり、既知の一般的なクエリのページを使用してバッファープールを事前にロードします。保存されたバッファープール情報を格納するファイルには、バッファープールのページ自体ではなく、バッファープール内のページのメタデータのみが格納されます。そのため、このファイルは多くのストレージ領域を必要としません。ファイルサイズは、キャッシュサイズの約 0.2% となります。例えば、64 GiB のキャッシュでは、キャッシュのウォームアップファイルのサイズは 128 MiB です。InnoDB キャッシュウォームアップの詳細については、MySQL ドキュメントの「[バッファプールの状態の保存とリストア](https://dev.mysql.com/doc/refman/8.0/en/innodb-preload-buffer-pool.html)」を参照してください。

RDS for MySQL DB インスタンスは、InnoDB キャッシュウォーミングをサポートしています。InnoDB キャッシュウォームアップを有効にするには、DB インスタンスのパラメータグループで `innodb_buffer_pool_dump_at_shutdown` および `innodb_buffer_pool_load_at_startup` パラメータを 1 に設定します。パラメータグループのこれらのパラメータ値を変更すると、パラメータグループを使用するすべての MySQL DB インスタンスに影響します。特定の MySQL DB インスタンスの InnoDB キャッシュウォームアップを有効にするには、それらのインスタンスの新しいパラメータグループを作成することが必要になる場合があります。パラメータグループについては、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

InnoDB キャッシュウォームアップは、主に、スタンダードストレージを使用している DB インスタンスにパフォーマンス上のメリットをもたらします。PIOPS ストレージを使用する場合、一般的に大きなパフォーマンス上のメリットは見られません。

**重要**  
フェイルオーバー時など、MySQL DB インスタンスが正常にシャットダウンしなかった場合、バッファープールの状態はディスクに保存されません。この場合、DB インスタンスが再開されるときに、MySQL は利用可能なバッファープールファイルをロードします。特に害はありませんが、復元されたバッファープールは、再開前のバッファープールの最新の状態を反映していない可能性があります。起動時に InnoDB キャッシュをウォームアップするために、バッファープールの最新の状態が利用できるようにするには、定期的に「オンデマンド」でバッファープールをダンプすることをお勧めします。  
自動で定期的にバッファープールをダンプするイベントを作成できます。例えば、次のステートメントは、1 時間ごとにバッファープールをダンプする `periodic_buffer_pool_dump` という名前のイベントを作成します。  

```
1. CREATE EVENT periodic_buffer_pool_dump 
2. ON SCHEDULE EVERY 1 HOUR 
3. DO CALL mysql.rds_innodb_buffer_pool_dump_now();
```
MySQL のイベントの詳細については、MySQL ドキュメントの「[イベントの構文](https://dev.mysql.com/doc/refman/8.0/en/events-syntax.html)」を参照してください。

### オンデマンドでのバッファープールのダンプとロード
<a name="MySQL.Concepts.InnoDBCacheWarming.OnDemand"></a>

InnoDB キャッシュを「オンデマンド」で保存およびロードできます。
+ バッファプールの現在の状態をディスクにダンプするには、[mysql.rds\$1innodb\$1buffer\$1pool\$1dump\$1now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_dump_now) ストアドプロシージャを呼び出します。
+ バッファプールの保存された状態をディスクからロードするには、[mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_now) ストアドプロシージャを呼び出します。
+ 進行中のロードオペレーションをキャンセルするには、[mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1abort](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_abort) ストアドプロシージャを呼び出します。

## RDS for MySQL 8.4 の包括的な言語変更
<a name="mysql-8-4-inclusive-language-changes"></a>

RDS for MySQL 8.4 には、包括的な言語のキーワードやシステムスキーマに関連する MySQL 8.4 コミュニティエディションからの変更が含まれています。たとえば、`SHOW REPLICA STATUS` コマンドは `SHOW SLAVE STATUS` に置き換えられています。

**Topics**
+ [

### 設定パラメータ名の変更
](#mysql-8-4-inclusive-language-changes-params)
+ [

### ストアドプロシージャ名の変更
](#mysql-8-4-inclusive-language-changes-sp)

### 設定パラメータ名の変更
<a name="mysql-8-4-inclusive-language-changes-params"></a>

RDS for MySQL 8.4 では、次の設定パラメータに新しい名前が付けられました。

互換性のために、`mysql` クライアントでどちらの名前を使用しても、パラメータ名をチェックできます。カスタム MySQL 8.4 パラメータグループ内の値を変更する場合、新しい名前のみ使用できます。詳細については、「[デフォルトおよびカスタムパラメータグループ](parameter-groups-overview.md#parameter-groups-overview.custom)」を参照してください。


| 削除される名前 | 新しい名前または優先される名 | 
| --- | --- | 
|  `init_slave`  |  `init_replica`  | 
|  `log_slave_updates`  |  `log_replica_updates`  | 
|  `log_slow_slave_statements`  |  `log_slow_replica_statements`  | 
|  `rpl_stop_slave_timeout`  |  `rpl_stop_replica_timeout`  | 
|  `skip_slave_start`  |  `skip_replica_start`  | 
|  `slave_checkpoint_group`  |  `replica_checkpoint_group`  | 
|  `slave_checkpoint_period`  |  `replica_checkpoint_period`  | 
|  `slave_compressed_protocol`  |  `replica_compressed_protocol`  | 
|  `slave_exec_mode`  |  `replica_exec_mode`  | 
|  `slave_load_tmpdir`  |  `replica_load_tmpdir`  | 
|  `slave_max_allowed_packet`  |  `replica_max_allowed_packet`  | 
|  `slave_net_timeout`  |  `replica_net_timeout`  | 
|  `slave_parallel_type`  |  `replica_parallel_type`  | 
|  `slave_parallel_workers`  |  `replica_parallel_workers`  | 
|  `slave_pending_jobs_size_max`  |  `replica_pending_jobs_size_max`  | 
|  `slave_preserve_commit_order`  |  `replica_preserve_commit_order`  | 
|  `slave_skip_errors`  |  `replica_skip_errors`  | 
|  `slave_sql_verify_checksum`  |  `replica_sql_verify_checksum`  | 
|  `slave_transaction_retries`  |  `replica_transaction_retries`  | 
|  `slave_type_conversions`  |  `replica_type_conversions`  | 
|  `sql_slave_skip_counter`  |  `sql_replica_skip_counter`  | 

**注記**  
Amazon RDS は NDB クラスターをサポートしていないため、`replica_allow_batching` パラメータは使用できません。

### ストアドプロシージャ名の変更
<a name="mysql-8-4-inclusive-language-changes-sp"></a>

RDS for MySQL 8.4 では、次のストアドプロシージャは名前が変更されています。

RDS for MySQL 8.4 の初期のリリースでは、互換性のためにどちらの名前でも使用できます。以前のプロシージャ名は、将来のリリースで削除される予定です。詳細については、「[バイナリログレプリケーションの設定、開始、停止](mysql-stored-proc-replicating.md)」を参照してください。


| 削除される名前 | 新しい名前または優先される名 | 
| --- | --- | 
|  `mysql.rds_next_master_log`  |  `mysql.rds_next_source_log `  | 
|  `mysql.rds_reset_external_master`  |  `mysql.rds_reset_external_source`  | 
|  `mysql.rds_set_external_master`  |  `mysql.rds_set_external_source`  | 
|  `mysql.rds_set_external_master_with_auto_position`  |  `mysql.rds_set_external_source_with_auto_position`  | 
|  `mysql.rds_set_external_master_with_delay`  |  `mysql.rds_set_external_source_with_delay`  | 
|  `mysql.rds_set_master_auto_position`  |  `mysql.rds_set_source_auto_position`  | 

## Amazon RDS でサポートされていない MySQL の機能
<a name="MySQL.Concepts.Features"></a>

現在、Amazon RDS では MySQL の以下の機能はサポートされていません。
+ 認証用プラグイン
+ システムログへのエラーログ記録
+ InnoDB テーブル領域の暗号化
+ NDB クラスター
+ パスワード強度用プラグイン
+ 永続的システム可変
+ リライタクエリ書き換えプラグイン
+ マルチ AZ DB クラスターを除く半同期レプリケーション
+ トランスポータブルテーブルスペース
+ X プラグイン

マネージドサービスエクスペリエンスを提供するために、Amazon RDS は DB インスタンスへのシェルアクセスを提供していません。また、高度な特権を必要とする特定のシステムプロシージャやテーブルへのアクセスを制限しています。Amazon RDS は、任意のスタンダード SQL クライアントアプリケーションによる、DB インスタンス上のデータベースへのアクセスがサポートされています。Amazon RDS では、Telnet、Secure Shell (SSH)、または Windows のリモートデスクトップ接続を使用しての、DB インスタンスに対するダイレクトホストアクセスは行えません。DB インスタンスを作成するユーザーには、DB インスタンスのすべてのデータベースに対する *db\$1owner* が割り当てられ、すべてのデータベースレベルのアクセス許可 (バックアップ用を除く) が付与されます。バックアップは、Amazon RDS により自動的に実行されます。