

# Aurora MySQL の拡張バイナリログの設定
<a name="AuroraMySQL.Enhanced.binlog"></a>

拡張バイナリログを使用すると、バイナリログを有効にすることによるコンピューティングパフォーマンスのオーバーヘッドを、場合によっては最大 50% まで削減できます。拡張バイナリログを使用すると、このオーバーヘッドを約 13% まで削減できます。オーバーヘッドを減らすために、拡張バイナリログはバイナリログとトランザクションログをストレージに並行に書き込みます。これにより、トランザクションコミット時に書き込まれるデータが最小限に抑えられます。

また、拡張バイナリログを使用すると、コミュニティ MySQL バイナリログと比較して、再起動およびフェイルオーバー後のデータベースの回復時間が最大 99% 向上します。拡張バイナリログは既存のバイナリログベースのワークロードと互換性があり、コミュニティ MySQL バイナリログと同じ方法で操作できます。

拡張バイナリログは Aurora MySQL 3.03.1 バージョン以降で利用できます。

**Topics**
+ [拡張バイナリログパラメータの設定](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)
+ [その他の関連パラメータ](#AuroraMySQL.Enhanced.binlog.other.parameters)
+ [拡張バイナリログとコミュニティ MySQL バイナリログの違い](#AuroraMySQL.Enhanced.binlog.differences)
+ [拡張バイナリログの Amazon CloudWatch メトリクス](#AuroraMySQL.Enhanced.binlog.cloudwatch.metrics)
+ [拡張バイナリログの制限](#AuroraMySQL.Enhanced.binlog.limitations)

## 拡張バイナリログパラメータの設定
<a name="AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters"></a>

拡張バイナリログパラメータをオン/オフにすることで、コミュニティ MySQL バイナリログと拡張バイナリログを切り替えることができます。既存のバイナリログコンシューマーは、バイナリログファイルシーケンスにギャップがなく、引き続きバイナリログファイルを読み込んで使用できます。

拡張バイナリログを有効にするには、次のパラメータを設定します。


| パラメータ  | デフォルト  | 説明  | 
| --- | --- | --- | 
| binlog\$1format | – | binlog\$1format パラメータを、選択したバイナリログ形式に設定して、拡張バイナリログをオンにします。binlog\$1format parameter がオフに設定されていないことを確認してください。詳細については、「[Aurora MySQL バイナリログの設定](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)」を参照してください。 | 
| aurora\$1enhanced\$1binlog | 0 | Aurora MySQL クラスターに関連付けられている DB クラスターのパラメータグループで、このパラメータの値を 1 に設定します。このパラメータの値を変更する場合、DBClusterParameterGroupStatus 値が pending-reboot と表示されている状態でライターインスタンスを再起動する必要があります。 | 
| binlog\$1backup | 1 |  拡張バイナリログをオンにするには、このパラメータをオフにしてください。そのためには、このパラメータの値を 0 に設定します。 | 
| binlog\$1replication\$1globaldb | 1 |  拡張バイナリログをオンにするには、このパラメータをオフにしてください。そのためには、このパラメータの値を 0 に設定します。 | 

**重要**  
`binlog_backup` と `binlog_replication_globaldb` パラメータは、拡張バイナリログを使用する場合にのみオフにできます。

拡張バイナリログを無効にするには、次のパラメータを設定します。


| パラメータ | 説明 | 
| --- | --- | 
| aurora\$1enhanced\$1binlog | Aurora MySQL クラスターに関連付けられている DB クラスターのパラメータグループで、このパラメータの値を 0 に設定します。このパラメータの値を変更する際は必ず、DBClusterParameterGroupStatus 値が pending-reboot と表示されている状態でライターインスタンスを再起動する必要があります。 | 
| binlog\$1backup | 拡張バイナリログをオフにするには、このパラメータをオンにしてください。そのためには、このパラメータの値を 1 に設定します。 | 
| binlog\$1replication\$1globaldb | 拡張バイナリログをオフにするには、このパラメータをオンにしてください。そのためには、このパラメータの値を 1 に設定します。 | 

拡張バイナリログがオンになっているかどうかを確認するには、MySQL クライアントで次のコマンドを実行します。

```
mysql>show status like 'aurora_enhanced_binlog';
              
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| aurora_enhanced_binlog | ACTIVE |
+------------------------+--------+
1 row in set (0.00 sec)
```

拡張バイナリログがオンになっている場合、`aurora_enhanced_binlog` の出力は `ACTIVE` と表示されます。

## その他の関連パラメータ
<a name="AuroraMySQL.Enhanced.binlog.other.parameters"></a>

拡張バイナリログを有効にすると、次のパラメータが影響を受けます。
+ `max_binlog_size` パラメータは表示されますが、変更できません。デフォルト値 `134217728` は、拡張バイナリログがオンになったときに `268435456` に自動調整されます。
+ コミュニティ MySQL バイナリログとは異なり、拡張バイナリログがオンになっていても、`binlog_checksum` は動的パラメータとして動作しません。このパラメータへの変更を有効にするには、`ApplyMethod` が `immediate` の場合にも DB クラスターを手動で再起動する必要があります。
+ `binlog_order_commits` パラメータに設定した値は、拡張バイナリログがオンになっているときのコミットの順序には影響しません。コミットは常に順序付けられ、それ以上パフォーマンスへの影響はありません。

## 拡張バイナリログとコミュニティ MySQL バイナリログの違い
<a name="AuroraMySQL.Enhanced.binlog.differences"></a>

拡張バイナリログは、コミュニティ MySQL バイナリログと比較したとき、クローン、バックアップ、Aurora グローバルデータベースとのインタラクションが異なります。拡張バイナリログを使用する前に、次の違いを理解しておくことをお勧めします。
+ ソース DB クラスターの拡張バイナリログファイルは、クローンされた DB クラスターでは使用できません。
+ 拡張バイナリファイルは Aurora バックアップには含まれていません。そのため、DB クラスターに保持期間が設定されていても、DB クラスターを復元した後は、ソース DB クラスターの拡張バイナリログファイルを使用できません。
+ Aurora グローバルデータベースで使用する場合、プライマリ DB クラスターの拡張バイナリログファイルはセカンダリリージョンの DB クラスターに複製されません。

****例****  
次の例は、拡張バイナリログとコミュニティ MySQL バイナリログの違いを示しています。

**復元またはクローンされた DB クラスター上**

拡張バイナリログがオンになっている場合、復元またはクローンされた DB クラスターでは過去のバイナリログファイルを使用できません。復元またはクローン操作の後、バイナリログがオンになっている場合、新しい DB クラスターは 1 (mysql-bin-changelog.000001) から始まる独自のバイナリログファイルのシーケンスの書き込みを開始します。

復元またはクローン操作後に拡張バイナリログを有効にするには、復元またはクローンされた DB クラスターに必要な DB クラスターパラメーターを設定します。詳細については、「[拡張バイナリログパラメータの設定](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)」を参照してください。

**Example 例: 拡張バイナリログがオンになっているときに実行されるクローンまたは復元操作**  
ソース DB クラスター:  

```
mysql> show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        |
| mysql-bin-changelog.000003 |       156 | No        |
| mysql-bin-changelog.000004 |       156 | No        | --> Enhanced Binlog turned on
| mysql-bin-changelog.000005 |       156 | No        | --> Enhanced Binlog turned on
| mysql-bin-changelog.000006 |       156 | No        | --> Enhanced Binlog turned on
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
 復元またはクローンされた DB クラスターでは、拡張バイナリログがオンになっていても、バイナリログファイルはバックアップされません。バイナリログデータの不連続性を避けるため、拡張バイナリログを有効にする前に書き込まれたバイナリログファイルも使用できません。  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        | --> New sequence of Binlog files
+----------------------------+-----------+-----------+ 
1 row in set (0.00 sec)
```

**Example 例: 拡張バイナリログがオフになっているときに実行されるクローンまたは復元操作**  
ソース DB クラスター:  

```
mysql>show binary logs;
                                                
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000003 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
拡張バイナリログは `mysql-bin-changelog.000003` の後に無効になります。復元またはクローンされた DB クラスターでは、拡張バイナリログをオフにした後に書き込まれたバイナリログファイルを使用できます。  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
1 row in set (0.00 sec)
```

**Amazon Aurora Global Database で**

Amazon Aurora Global Database では、プライマリ DB クラスターのバイナリログデータはセカンダリ DB クラスターに複製レプリケートされません。クロスリージョンフェイルオーバープロセスの後、新たに昇格されたプライマリ DB クラスターでバイナリログデータを使用できなくなります。バイナリログがオンになっている場合、新たに昇格された DB クラスターは 1 (mysql-bin-changelog.000001) から始まる独自のバイナリログファイルのシーケンスを開始します。

フェイルオーバー後に拡張バイナリログを有効にするには、セカンダリ DB クラスターで必要な DB クラスターパラメータを設定する必要があります。詳細については、「[拡張バイナリログパラメータの設定](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)」を参照してください。

**Example 例: 拡張バイナリログがオンになっている場合、グローバルデータベースフェイルオーバー操作が実行されます。**  
古いプライマリ DB クラスター (フェイルオーバー前):  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        |
| mysql-bin-changelog.000003 |       156 | No        |
| mysql-bin-changelog.000004 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000005 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000006 |       156 | No        | --> Enhanced Binlog enabled
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
新しいプライマリ DB クラスター (フェイルオーバー後):  
拡張バイナリログがオンになっている場合、バイナリログファイルはセカンダリリージョンに複製されません。バイナリログデータの不連続性を避けるため、拡張バイナリログを有効にする前に書き込まれたバイナリログファイルは使用できません。  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        | --> Fresh sequence of Binlog files
+----------------------------+-----------+-----------+ 
1 row in set (0.00 sec)
```

**Example 例: 拡張バイナリログがオフになっている場合、グローバルデータベースフェイルオーバー操作が実行されます。**  
ソース DB クラスター:  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000003 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
**復元またはクローンされた DB クラスター:**  
拡張バイナリログは `mysql-bin-changelog.000003` の後に無効になります。拡張バイナリログをオフにした後に書き込まれたバイナリログファイルは複製され、新たに格された DB クラスターで使用できます。  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
3 rows in set (0.00 sec)
```

## 拡張バイナリログの Amazon CloudWatch メトリクス
<a name="AuroraMySQL.Enhanced.binlog.cloudwatch.metrics"></a>

以下の Amazon CloudWatch メトリクスは、拡張バイナリログがオンになっている場合にのみ公開されます。


| [CloudWatch メトリクス] | 説明 | 単位 | 
| --- | --- | --- | 
| ChangeLogBytesUsed | 拡張バイナリログで使用されるストレージ容量。 | バイト | 
| ChangeLogReadIOPs | 5 分以内の、拡張バイナリログで実行される読み取り I/O オペレーションの数。 | 5 分あたりのカウント | 
| ChangeLogWriteIOPs | 5 分以内の、拡張バイナリログで実行される書き込みディスク I/O オペレーションの数。 | 5 分あたりのカウント | 

## 拡張バイナリログの制限
<a name="AuroraMySQL.Enhanced.binlog.limitations"></a>

拡張バイナリログがオンになっている場合、Amazon Aurora DB クラスターには次の制限が適用されます。
+ 拡張バイナリログは Aurora MySQL 3.03.1 バージョン以降でのみサポートされています。
+ プライマリ DB クラスターに書き込まれた拡張バイナリログファイルは、クローンまたは復元された DB クラスターにはコピーされません。
+ Amazon Aurora Global Database で使用する場合、プライマリ DB クラスターの拡張バイナリログファイルはセカンダリ DB クラスターに複製されません。そのため、フェイルオーバープロセス後、過去のバイナリログデータは新しいプライマリ DB クラスターで使用できなくなります。
+ 以下のバイナリログ設定パラメータは無視されます。
  + `binlog_group_commit_sync_delay`
  + `binlog_group_commit_sync_no_delay_count`
  + `binlog_max_flush_queue_time`
+ データベース内の破損したテーブルを削除したり、名前を変更したりすることはできません。これらのテーブルを削除するには、サポート にお問い合わせください。
+ 拡張バイナリログがオンになっている場合、バイナリログ I/O キャッシュは無効になります。詳細については、「[Aurora MySQL でのバイナリログのレプリケーションの最適化](binlog-optimization.md)」を参照してください。
**注記**  
拡張バイナリログでは、バイナリログ I/O キャッシュと同様の読み取りパフォーマンスと、向上した書き込みパフォーマンスが提供されます。
+ バックトラック機能はサポートされていません。次の条件では、拡張バイナリログを DB クラスターで有効にできません。
  + バックトラック機能が現在有効になっている DB クラスター。
  + バックトラック機能が以前に有効になっていたが、現在は無効化されていない DB クラスター。
  + ソース DB クラスターまたはバックトラック機能が有効になっているスナップショットから復元された DB クラスター。