MySQL を実行している Amazon Aurora DB インスタンスがあり、バイナリログ記録が有効になっています。Aurora DB インスタンスを AWS Database Migration Service (AWS DMS) タスクのソースとして使用していますが、エラーが発生しました。このエラーをトラブルシューティングして解決するにはどうすればよいですか?
簡単な説明
FULL LOAD AND CDC または CDC のみの AWS DMS タスクで変更データキャプチャ (CDC) を使用するには、ソース Aurora MySQL 互換エディション DB ライターインスタンスでバイナリログ記録を有効にする必要があります。リードレプリカは CDC オペレーションのソースとしてサポートされていないため、ライターインスタンスを使用する必要があります。詳細については、「AWS DMS のソースとして MySQL データベースを使用する場合の制限」を参照してください。
バイナリログ記録が有効になっていないか、リーダーインスタンスに接続している場合は、次のようなログエントリが表示されます。
メッセージ
[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 を使用してライターインスタンスに接続します。クラスターエンドポイントは常にクラスターの現在のライターを指すため、クラスターエンドポイントに接続するのがベストプラクティスです。
その後、クラスターエンドポイントを使用してソースの Aurora クラスターライターノードに接続し、バイナリログ記録が有効になっていることを確認します。
mysql> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
[log_bin] パラメータが OFF に設定されている場合は、Aurora クラスターの cluster parameter group をチェックして、binlog_format パラメータが ROW に設定されていることを確認します。binlog_format が ROW に設定されていない場合は、パラメータを変更して Aurora for MySQL のバイナリログ記録を有効にします。
注意: これは静的パラメータであるため、この変更を有効にするには Aurora インスタンスを再起動する必要があります。
binlog_format パラメータを ROW に設定したら、Aurora インスタンスに接続してバイナリログ記録が有効になっていることを確認します。
mysql> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
バイナリログ記録を有効にし、AWS DMS でクラスターライターエンドポイントを使用していることを確認したら、タスクを再起動します。
関連情報
MySQL 互換データベースを AWS DMS のソースとして使用する