

# シングル AZ データベースの RDS for MySQL バイナリログの設定
<a name="USER_LogAccess.MySQL.BinaryFormat"></a>

*バイナリログ*は、 MySQL サーバーインスタンスで行われたデータ変更に関する情報を含む、一連のログファイルです。バイナリログには、以下のような情報が含まれています。
+ テーブルの作成や行の変更など、データベースの変更が記述されたイベント
+ データを更新した各ステートメントの実行時間に関する情報
+ データを更新する可能性があったものの、それが実行されていないステートメントのイベント

バイナリログには、レプリケーション中に送信されるステートメントが記録されます。また、一部のリカバリオペレーションにもバイナリログが必要です。詳細については、MySQL ドキュメントの「[バイナリログ](https://dev.mysql.com/doc/refman/8.0/en/binary-log.html)」を参照してください。

自動バックアップ機能では、MySQL のバイナリログ記録を有効にするか無効にするかを決定します。次のオプションがあります。

バイナリログ記録を有効にするには  
バックアップ保持期間を 0 以外の正の値に設定します。

バイナリログ記録を無効にするには  
[バックアップ保持期間] を 0 に設定します。

詳細については、「[自動バックアップの有効化](USER_WorkingWithAutomatedBackups.Enabling.md)」を参照してください。

Amazon RDS の MySQL では、*行ベース*、*ステートメントベース*、および*混合*のバイナリログ形式がサポートされています。特定バイナリログ形式が必要でない場合は、混合形式を使用することをお勧めします。MySQL の各種バイナリログ形式の詳細については、MySQL ドキュメントの「[Binary logging formats](https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html)」を参照してください。

レプリケーションを使用する予定の場合は、バイナリログ記録形式が重要です。ソースに記録されてレプリケーションターゲットに送信されるデータ変更記録が決定されるからです。レプリケーション用のさまざまなバイナリログ記録形式の利点と欠点についての詳細は、MySQL ドキュメントの「[Advantages and Disadvantages of Statement-Based and Row-Based Replication](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html)」を参照してください。

**重要**  
MySQL 8.0.34 では、`binlog_format` パラメータが廃止されました。以降の MySQL バージョンでは、このパラメータを削除し、行ベースのレプリケーションのみをサポートする予定です。そのため、新しい MySQL レプリケーション設定には行ベースのログ記録を使用することをお勧めします。詳細については、MySQL ドキュメントの「[binlog\$1format](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_format)」を参照してください。  
MySQL バージョン 8.0 および 8.4 は、パラメータ `binlog_format` を受け入れます。このパラメータを使用すると、MySQL は非推奨警告を発行します。今後のメジャーリリースで、MySQL はパラメータ `binlog_format` を削除します。  
ステートメントベースのレプリケーションは、ソース DB インスタンスとリードレプリカの間の不整合の原因になります。詳細については、MySQL ドキュメントの「[バイナリログ作成における安全なステートメントと安全でないステートメントの判断](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)」を参照してください。  
バイナリログを有効にすると、DB インスタンスへの書き込みディスク I/O 操作の回数が増えます。`WriteIOPS``` CloudWatch メトリクスを使用して、IOPS の使用状況をモニタリングできます。

**MySQL バイナリログ形式を設定するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、**[Parameter groups]** (パラメータグループ) を選択します。

1. 変更する DB インスタンスに関連付ける DB のパラメータグループを選択します。

   デフォルトのパラメータグループを変更することはできません。DB インスタンスがデフォルトのパラメータグループを使用している場合、新しいパラメータグループを作成し DB インスタンスと関連付けます。

   パラメータグループの詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

1. **[アクション]** から **[編集]** を選択します。

1. `binlog_format` パラメータを、選択したバイナリログ形式 (`ROW`、`STATEMENT`、または `MIXED`) に設定します。

   DB インスタンスのバックアップ保持期間をゼロに設定することでバイナリログを無効にできますが、これによって毎日の自動バックアップは無効になります。自動バックアップを無効にすると、`log_bin` セッション変数がオフまたは無効になります。これにより、RDS for MySQL DB インスタンスのバイナリログ記録が無効になり、`binlog_format` セッション変数がデータベースのデフォルト値の `ROW` にリセットされます。バックアップを無効にしないことをお勧めします。**バックアップ保持期間**の設定の詳細については、「[DB インスタンスの設定](USER_ModifyInstance.Settings.md)」を参照してください。

1. [**変更の保存**] を選択して、更新を DB パラメータグループに保存します。

`binlog_format` パラメータは RDS for MySQL では動的であるため、変更を適用するために、DB インスタンスを再起動する必要はありません。(Aurora MySQL では、このパラメータは静的であることに注意してください。詳細については、「[Aurora MySQL バイナリログの設定](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)」を参照してください。)

**重要**  
DB パラメータグループを変更すると、そのパラメータグループを使用するすべての DB インスタンスに影響を与えます。AWS リージョン内の異なる MySQL DB インスタンスに対して異なるバイナリログ形式を指定する場合、DB インスタンスは異なる DB パラメータグループを使用する必要があります。これらのパラメータグループは、さまざまなログ形式を識別します。各 DB インスタンスに適切な DB パラメータグループを割り当てます。