このガイドでは、MySQL ClickPipe を使用して、Amazon RDS MySQL から ClickHouse Cloud にデータをレプリケートできるように設定する方法を説明します。MySQL CDC に関するよくある質問については、MySQL のよくある質問ページ を参照してください。
バイナリログは、MySQL サーバーインスタンスで行われたデータ変更に関する情報を含む一連のログファイルであり、レプリケーションにはバイナリログファイルが必要です。RDS MySQL でバイナリログの保持期間を設定するには、バイナリログを有効にし、binlog の保持期間を延長する必要があります。
自動バックアップ機能の設定によって、MySQL のバイナリログの有効/無効が決まります。自動バックアップは、RDS Console で Modify > Additional configuration > Backup の順に進み、Enable automated backups チェックボックスを選択すると、対象のインスタンスで設定できます (まだ選択していない場合) 。
レプリケーションの用途に応じて、Backup retention period は十分に長い値に設定することを推奨します。
ClickPipes がレプリケーションの再開を試みた際、設定された binlog の保持期間により必要な バイナリログ ファイルがすでに削除されていると、ClickPipe はエラー状態となり、再同期が必要になります。
デフォルトでは、Amazon RDS は バイナリログ をできるだけ早く削除します (つまり、遅延パージ) 。障害発生時でもレプリケーションに必要な バイナリログ ファイルを利用できるよう、binlog の保持期間を少なくとも 72 時間 に延長することを推奨します。バイナリログ の保持期間 (binlog retention hours) を設定するには、mysql.rds_set_configuration プロシージャを使用します。
mysql=> call mysql.rds_set_configuration('binlog retention hours', 72);
この設定がされていない場合や、間隔が短すぎる場合、バイナリログに欠落が生じ、ClickPipes でレプリケーションを再開できなくなるおそれがあります。
RDS Console で MySQL インスタンスをクリックし、Configuration タブに移動すると、パラメータグループを確認できます。
MySQL クラスターを使用している場合、以下のパラメータは DB インスタンスグループではなく、DB cluster のパラメータグループで確認できます。
パラメータグループのリンクをクリックすると、専用ページに移動します。右上に Edit ボタンが表示されるはずです。
以下のパラメータを次のように設定する必要があります。
binlog_format を ROW に設定します。
binlog_row_metadata を FULL に設定します。
binlog_row_image を FULL に設定します。
その後、右上の Save Changes をクリックします。変更を反映するにはインスタンスの再起動が必要になる場合があります。RDS インスタンスの Configuration タブで、パラメータグループのリンクの横に Pending reboot と表示されていれば、その状態になっています。
MySQL ClickPipe は、GTID モードを使わないレプリケーションにも対応しています。ただし、パフォーマンスの向上とトラブルシューティングのしやすさのため、GTID モードを有効にすることを推奨します。
Global Transaction Identifiers (GTIDs) は、MySQL でコミットされた各トランザクションに割り当てられる一意の ID です。これにより、binlog レプリケーションが簡素化され、トラブルシューティングも容易になります。MySQL ClickPipe が GTID ベースのレプリケーションを使用できるようにするため、GTID モードを有効にすることを 推奨 します。
GTID ベースのレプリケーションは、Amazon RDS for MySQL バージョン 5.7、8.0、8.4 でサポートされています。Aurora MySQL インスタンスで GTID モードを有効にするには、次の手順に従ってください。
- RDS Console で MySQL インスタンスをクリックします。
- Configuration タブをクリックします。
- パラメータグループのリンクをクリックします。
- 右上の Edit ボタンをクリックします。
enforce_gtid_consistency を ON に設定します。
gtid-mode を ON に設定します。
- 右上の Save Changes をクリックします。
- 変更を反映するため、インスタンスを再起動します。
MySQL ClickPipe は、GTID モードを使わないレプリケーションにも対応しています。ただし、パフォーマンスの向上とトラブルシューティングのしやすさのため、GTID モードを有効にすることを推奨します。
管理者ユーザーとして RDS MySQL インスタンスに接続し、次のコマンドを実行します。
-
ClickPipes 専用のユーザーを作成します。
CREATE USER 'clickpipes_user'@'host' IDENTIFIED BY 'some-password';
-
スキーマに対する権限を付与します。次の例は、
mysql データベースに対する権限を示しています。レプリケートする各データベースとホストについて、これらのコマンドを繰り返します。
GRANT SELECT ON `mysql`.* TO 'clickpipes_user'@'host';
-
ユーザーにレプリケーション権限を付与します。
GRANT REPLICATION CLIENT ON *.* TO 'clickpipes_user'@'%';
GRANT REPLICATION SLAVE ON *.* TO 'clickpipes_user'@'%';
Aurora MySQL インスタンスへのトラフィックを制限するには、ドキュメントに記載されている固定 NAT IP を、RDS のセキュリティグループの Inbound rules に追加します。
AWS PrivateLink 経由のプライベートアクセス
プライベートネットワーク経由で RDS インスタンスに接続するには、AWS PrivateLink を使用できます。接続を設定するには、ClickPipes 向け AWS PrivateLink セットアップガイドに従ってください。
Amazon RDS MySQL インスタンスでの binlog レプリケーションと、ClickHouse Cloud への安全な接続の設定が完了したら、最初の MySQL ClickPipe を作成できます。MySQL CDC に関するよくある質問は、MySQL よくある質問ページを参照してください。