はじめに
AWS上でRDSのデータを使用して何らかの処理を行う場合、DBに接続して直接操作する方法やファイル出力を行い、出力したファイルに対して処理を行う方法などが考えられるかと思います。
今回は後者のRDSデータのファイル出力(CDC)に焦点を当て、DMS・S3を利用して実装します。
本記事ではRDSからDMSを利用してS3へデータ出力(CDC)を行う際の各種設定手順とエラーポイントについてまとめていきます。
前提条件
・コンソール操作で各種リソースを作成
・データベースはMySQLを使用
・RDS、DMSは異なるVPCに配置
・DMSの作成までは以下と同様
CDCのための設定
①DBパラメータグループの作成
・エンジンのタイプおよびパラメータグループファミリーをRDSと同じになるよう設定
・タイプは「DB Parameter Group」を選択
②バイナリログの有効化
・①で作成したパラメータグループに対して変更を適用
・binlog_formatの値を「ROW」に設定
・binlog_checksumの値を「NONE」に設定
・binlog_row_imageの値を「FULL」に設定
③パラメータグループの適用
・RDSで使用するパラメータグループを①で作成したものに変更
※自動バックアップの有効化(バックアップ保持期間が1日以上)が必要です。
動作確認
①エンドポイント(RDS)の接続テスト
・エンドポイントの接続タブよりテストを作成
・作成したレプリケーションインスタンスを選択したうえでテストの実行
②エンドポイント(S3)の接続テスト
・エンドポイントの接続タブよりテストを作成
・作成したレプリケーションインスタンスを選択したうえでテストの実行
③データベース移行タスクの作成
・作成したレプリケーションインスタンスを選択
・作成したソースデータベースエンドポイントを選択
・作成したターゲットデータベースエンドポイントを選択
・移行タイプは「移行と複製」を選択
・CloudWatch ログを有効化
・テーブルマッピングで適切なスキーマ、テーブルを入力
・移行前評価を無効化
・その他の設定はデフォルト
④RDSへのデータ投入
・以下と同様にLambdaを利用したRDSへのデータ登録を実施
エラーポイント
・CDCのための設定不備(パラメータグループの設定ミス)
2024-12-31T09:20:03 [SOURCE_CAPTURE ]E: Error Code [10002] : MySQL binary Logging must use ROW format [1020418] (mysql_endpoint_capture.c:433)
※その他エラーは下記記載のものと同様のため割愛します。
まとめ
DMSを使用したRDSデータのS3ファイル出力(LOAD AND CDC)を実施してみました。
基本的な設定は単純出力と変わりないため設定周りでのミスなどは起こりにくく感じましたが、エラーが起きた際の原因解決が困難な点は変わりないと感じました。
また、作成されたデータ名がタイムスタンプ情報を保持していたため、後のデータ処理で使用する場合に重複データを処理しないよう制御することは可能かと思いました。