CData SyncでRedshiftへレプリケーションする

2021.12.22

はじめに

データアナリティクス事業本部のkobayashiです。

自動データレプリケーションツール CData Sync を使うことで様々なSaas製品のデータをDWHに同期することやDBのデータをDHWに同期することでDWHにデータを集約することができます。データソースとしてはCData Drivers を使えるので非常に豊富なデータソースを指定することができます。

今回はCData SyncをAmazon EC2 (Amazon Linux 2)にインストールしてMySQL(RDS)のデータをRedshiftへ同期してみます。

環境

  • Amazon Linux 2
  • CData API Server - 21.0.8003

CData Syncのインストール

はじめにCData Syncをダウンロードしてきます。今回はAmazon Linux2上にインストールするためCross-Platform (Java Edition)をダウンロードします。

CDataSync.zipがダウンロードできるのでこれを解凍すると以下のファイルが展開されます。

├── readme.txt
├── setup.jar
└── sync.war

readme.txtの通りに以下のコマンドでインストールを行います。

java -jar setup.jar -console

インストールが始まるとはじめに「ソフトウェア使用許諾契約書」への同意が求められるので同意して進みます。その後CData Syncをインストールするパスを聞かれるので特に問題なければデフォルトの/opt/syncを指定して実行すればインストールが完了します。インストール後にCData Syncを起動するかを聞かれるので特に問題なければそのまま起動します。

CData Syncが起動したらCross-Platform (Java Edition)ですと8181ポートを使いますのでセキュリティグループの設定でEC2の8181への接続を許可します。その後

https://{ホストアドレス}:8181

へアクセスすると以下の画面が表示されるので管理者用のパスワードを登録して管理ユーザーを作成します。

管理ユーザーを作成すると次にライセンス情報を入力する画面に遷移しますが、今回は評価版をアクティベートするので必要情報を入力して評価版をアクティベートします。

以上でCData Syncのインストールは完了です。次に実際にMySQLからRedshiftへデータを同期してみます。

CData Syncでのデータ同期

データを同期するには以下のステップで行います。

  1. 接続(データソース、同期先)を作成する
  2. 同期ジョブを作成する

接続を作成する

データソースとなるMySQLと同期先となるRedshiftの接続情報を登録します。

手順1) メニュバーの接続を押下し接続設定の画面に遷移し、データソースタブを選択する。

手順2)デフォルトで使用できるデータソースが表示されているのでMySQLを選択し、接続情報を入力し登録する。

  • Name : 適当な名前を入力
  • Server : MySQLサーバのアドレスを入力
  • Port : 3306
  • Database : データベース名を入力
  • User : ユーザー名を入力
  • Password : パスワードを入力

Test Connectionを押下し接続情報が正しければThe connection was successful.が表示されます。

手順3) メニュバーの接続を押下し接続設定の画面に遷移し、同期先タブを選択する。

手順4)デフォルトで使用できるデータソースが表示されているのでRedshiftを選択し、接続情報を入力し登録する。

  • Settingタブ
    • Name : 適当な名前を入力
    • Server : Redshiftエンドポイントを入力
    • Port : 5439
    • Database : データベース名を入力
    • User : ユーザー名を入力
    • Password : パスワードを入力
  • Advancedタブ
    • Auth Scheme : Basicを選択

Test Connectionを押下し接続情報が正しければThe connection was successful.が表示されます。

データソースと同期先を登録すると接続の画面では以下のように表示されます。

これで接続設定は完了したので次に同期ジョブを作成します。

同期ジョブを作成する

作成した接続設定を使って同期ジョブを作成します。

手順1) メニュバーのジョブを押下しジョブ管理の画面に遷移し、Add Jobを押下する。

手順2)ジョブの詳細設定画面に遷移するのでTablesタブにて同期対象のテーブルを選択する。

追加したテーブルを押下すると更に詳細に同期の設定が行なえます。 例えば、Generalタブでは差分更新のフラグとなるIncremental Check ColumnColumn-Mappingタブでは同期先のカラム名の変更や新規カラムの追加が行えます。

手順3)Scheduleタブでジョブを実行するスケジュールを設定し、Save Changesを押下して設定を保存する。

これでジョブの設定まで終わりましたので最後に作成したジョブを実行してみます。手動でのジョブの実行は

  • CData Syncのジョブ管理の画面から実行
  • API経由で実行

の2パターンがありますが今回はジョブ管理の画面から実行します。実行には対象のジョブ名の右側にある実行ボタンを押下するだけです。

実行すると以下のように各テーブルごとに同期した内容が表示されます。

まとめ

CData SyncをAmazon EC2にインストールし、MySQL(RDS)のデータをRedshiftへ同期してみました。インストールから設定まで特に難しい箇所もない一方、詳細設定を行えば差分同期など細かい同期設定も行えるので大変便利なツールだと思います。

最後まで読んで頂いてありがとうございました。