AWS DMSを用いたRDSからBigQueryでデータ転送するメモ
このbinlogを吸い込む機能のことをCDCと呼んでいる LOBsと呼ばれている巨大データ型のcolumnはデフォで無視されるので使うなら適切に設定する必要がある
binlogとは言いつつ、これDynamoDB Streamsと同じOLD/NEWの結果が来るっぽい
RDS => DMS
設定すればOK
binlog_formatは ROW
とすることで行レベルレプリになる
DMS => Kinesis Data Streams
特別な設定をする必要はない
キャパシティに応じてどれくらいのStreamを用意するかは調整する必要がある
Kinesis Data Streams => Lambda
Batchingを行うことで一定のイベントを溜めて実行できる
たとえば1000バッチにしておくと高々1000レコードを一気に処理することができる
必ず1000バッチが溜められた上で実行されるわけではない
ReportBatchItemFailures を有効にしないとバッチ内で一部コケたときにわけわからんことになる
Lambda => BigQuery
Lambdaによる処理が失敗した時にはKinesisのShard Iteratorがその時点で止まる
失敗した時点から再実行できる
Lambdaの側で適切にbinlog (というかMySQLレコード) をBigQueryに翻訳して送り付ける
DELETEやUPDATEも適切に扱える必要がある
memo