バイナリロギングが有効になっている Amazon Aurora MySQL 互換エディション DB インスタンスを使用しています。その DB インスタンスを AWS Database Migration Service (AWS DMS) タスクのソースとして使用すると、エラーが発生するため、この問題をトラブルシューティングしたいと考えています。
簡単な説明
フルロードと変更データキャプチャ (CDC) を使用する AWS DMS タスク、または CDC のみの AWS DMS タスクで CDC を使用するには、ソース DB のライターインスタンスでバイナリロギングを有効にします。リードレプリカは CDC 操作をサポートしていないため、ライターインスタンスを使用してください。詳細については、「Limitations on using a MySQL database as a source for AWS DMS」(MySQL データベースを AWS DMS のソースとして使用する場合の制限) を参照してください。
バイナリロギングを有効にしていない場合や、リーダーインスタンスに接続している場合は、次のようなログエントリが表示されます。
Messages
[SOURCE_CAPTURE ]I: System var 'log_bin' = 'OFF'
[SOURCE_CAPTURE ]E: Error Code [10001] : Binary Logging must be enabled for MySQL server [1020418] (mysql_endpoint_capture.c:366)
解決策
リーダーインスタンスに接続する場合は、ライターインスタンスを特定してから、AWS DMS を使用してライターインスタンスに接続します。クラスターエンドポイントは常にクラスターの現在のライターを指すため、クラスターエンドポイントに接続することをおすすめします。
バイナリロギングが有効になっているかどうかを確認するには、クラスターエンドポイントを使用してソースクラスターのライターノードに接続します。
mysql> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
log_bin パラメータが OFF に設定されている場合は、クラスターのパラメータグループで binlog_format パラメータが ROW に設定されているかどうかを確認します。binlog_format が ROW に設定されていない場合は、このパラメータを変更して Aurora MySQL 互換のバイナリロギングを有効にします。
注: これは静的パラメータなので、この変更を有効にするには Aurora MySQL 互換インスタンスを再起動する必要があります。
binlog_format パラメータを ROW に設定した後、バイナリロギングが有効になっていることを確認するために、Aurora MySQL 互換インスタンスに接続します。
mysql> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
バイナリロギングを有効にし、AWS DMS でクラスターのライターエンドポイントを使用していることを確認した後、タスクを再開します。
関連情報
Using a MySQL-compatible database as a source for AWS DMS (MySQL 互換データベースを AWS DMS のソースとして使用する)