変更データキャプチャ(CDC)でMySQL のデータをRedshift に反復同期する方法: CData Sync

對馬陽子 | 2022年09月13日

こんにちは。マーケティング担当の對馬です。

今回はCDC 機能を使ってMySQL のデータをAmazon Redshift にレプリケートする処理を、CData Sync で構築する方法をご紹介します。

CData Sync とは

CData Sync は、ノーコードでデータレプリケーション処理を構築できるデータパイプラインツールです。400+ のデータソースに対応しており、主要DB / DWH にデータをレプリケートする処理を3ステップで構築できます。

https://www.cdata.com/jp/sync/

CData Sync はMySQL の変更データキャプチャに対応しており、差分でのデータ取得をログベースで行うことが可能です。

MySQL の変更データキャプチャ(CDC 機能)とは?

MySQL では、binlog というサーバーから出力されるバイナリログがあります。MySQL のレコードの更新内容をログとして保存してくれています。MySQL 8.0 以降ではデフォルトでこのbinlog 設定が[有効]になっています。8.0以前のMySQL を使っている場合には、binlog を有効化する必要があります。

このbinlog のレコード更新ログをCData Sync が読み込むことで、MySQL の変更をCData Sync の同期先DB/DWH に反映させることができます。CDC を使わない場合だとMySQL の対象となるテーブルデータを全件SELECT してDB に負荷をかけてしまったり、フィルタリング条件を上手に設定するような手間がかかります。CData Sync では、MySQL 以外にもPostgreSQL、SQL Server、Oracle などのRDB のCDC に対応しているほか、多くのSaaS データソースで差分更新を実現しています。

MySQL の商談データをRedshift にレプリケートする

本記事では、MySQL に格納されている商談データをMySQL のCDC 機能を使って、Amazon Redshift にレプリケートする処理をCData Sync で構築する方法をご紹介します。

MySQL 利用データ(Opportunity テーブル)

CData Sync でMySQL への接続設定

※ハンズオンでは不要※

CData Sync からMySQL への接続を設定します。

CData Sync を起動し、「接続」タブを開きます。

「接続の追加」の「同期先」から「MySQL」アイコンを選択します。

MySQL 接続設定画面が開かれます。

「MySQL」などわかりやすい名前を設定します。接続に必要な情報を入力し、「接続テスト」ボタンで接続を確認します。

接続成功のメッセージを確認し、「変更を保存」ボタンで設定内容を保存します。

Redshift 接続設定

CData Sync からAmazon Redshift への接続を設定します。

「接続」タブを開き、「接続の追加」の「同期先」から「Amazon Redshift」を選択します。

必要な情報を入力し、「接続テスト」ボタンで接続を確認します。

接続の成功を確認し、「変更を保存」ボタンで設定内容を保存します。

MySQL データのRedshift へのレプリケーションジョブの作成

作成したMySQL とRedshift の接続情報を使い、データレプリケーションのジョブを作成します。

「ジョブ」タブを開き、「ジョブを作成」ボタンを押下します。

ジョブ作成画面が開かれます。

以下を設定します。

設定項目 設定内容 備考
ジョブ名 わかりやすい名前 例:MySQL2Redshift
ソース 作成したMySQL 接続設定 ※テキストでは接続名が異なるものを利用しています
同期先 作成したRedshift 接続設定
レプリケーションの種類 変更データキャプチャ

設定ができたら「作成」ボタンを押下し、ジョブを作成します。

ジョブが作成され、設定画面が開かれます。

ジョブ設定から「テーブルを追加」ボタンを押下し、レプリケートするテーブルを選択します。

スキーマで「handson」(画像と異なります)を選択し、Opportunity テーブルを選択します。「追加」ボタンを押下し、選択したテーブルを追加します。

テーブル名の変更

CData Sync は、デフォルトでは取得したテーブル名と同じテーブル名で同期先にテーブルを作成し、データをレプリケートします。今回は同じテーブル名でのレプリケートを回避するため、Redshift で作成するテーブル名を変更します。

追加したテーブルを選択します。

タスク設定が開かれます。

テーブル名を開き、「新規テーブルを作成」を選択します。

任意の名前を設定し、「OK」ボタンを押下します。

「変更を保存」ボタンで設定内容を保存します。

CData Sync での設定は以上です。

ジョブの実行

ジョブを実行します。

テーブルにチェックを入れ、「実行」ボタンでジョブを実行します。

実行結果がCData Sync 画面に表示されます。

Redshift のデータを確認します。

Redshift にデータがレプリケートされています。

CDC を使った差分レプリケーションの確認

CDC を使って差分データのレプリケートを確認します。MySQL のOpportunity テーブルにデータを追加します。

CData Sync でジョブを再度実行します。追加分のデータがRedshift に追加されたことが確認できます。

まとめ

MySQL の変更データキャプチャを使って、CData Sync 経由でのRedshift への差分更新ができました。MySQL の場合はMySQL での事前設定などが不要でCDC を使ってジョブを作成することができます。いかがでしたでしょうか。

Redshift 以外にもSnowflake などクラウドDWH やDB にもデータをレプリケート可能です。CData Sync は30日間の無償トライアルがありますので、ぜひ体感してください。

https://www.cdata.com/jp/sync/