CData Software Blog

クラウド連携のCData Software の技術ブログです。

IIJ GIO に CDataSync を構築:Salesforce データをMySQLにレプリケーション

こんにちは。CData Software Japanリードエンジニアの杉本です。

前回はIIJが提供するクラウドサービスである IIJ GIO で CData API Server を構成しました。

www.cdatablog.jp

今回は CData Syncを構成する方法を紹介します。

IIJ GIOインフラストラクチャーP2 とは?

IIJが提供するパブリッククラウドプライベートクラウドを融合したIaaSです。

https://www.iij.ad.jp/biz/p2/

f:id:sugimomoto:20200624112652p:plain

一般的なIaaSとして利用可能なパブリックリソースと、VMware環境をそのままクラウドへ移行可能なプライベートリソースが選べることが特徴です。

f:id:sugimomoto:20200624112700p:plain

今回は前者のパブリックリソースにDataSyncを構成してみたいと思います。

CData Sync とは?

f:id:sennanvolar44:20200420213536p:plain

Sansan や kintone などのクラウドSaaS)データ を DB およびデータウェアハウスに同期するレプリケーションツールです。

複雑な設定等は特になく、高度な同期ジョブを作成、運用することができます。また SQL を設定することができるので、柔軟にデータを抽出してデータベースへ連携することができます。

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

CData Sync の構成方法

CData Sync は現在 .NET ベースの「Windows版」とJavaベースの「Cross-Platform版」、およびCross-Platformを予めAMIイメージとして提供している「Amazon AMI版」の3種類が提供されています。

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

今回はその中の「Cross-Platform版」を使って、IIJ GIOのIaaSへ展開する方法を紹介したいと思います。

なお、細かな構成方法は以下のヘルプにも掲載されています。

Cross-Platform版を構成するにあたって

Cross-Platform版は現在大きく分けて2種類の構成方法があります。

一つはCData Sync に予め組み込まれている組み込みJetty サーバーを使うパターン

もう一つはユーザーが任意のJava Servlet コンテナ(TomcatJBossWebLogic、WebSphere、またはJetty)を使うパターンです。

CData Sync をダウンロードすると、以下の2種類のファイルが混同されており、「setup.jar」を実行すればそのままマシンにCData Sync がインストールされますし、

Tomcatなどに「datasync.war」を配置すれば、そのままその Java Servlet コンテナ上でCData DataSync が利用できるように展開されます。

今回は手軽にセットアップが可能な組み込みJetty サーバーを使うパターンでの構成方法で紹介します。

手順

必要なもの

必要になるものは、IIJ GIOのアカウントとDataSyncの本体です。

  • IIJ GIOアカウント
  • CData Sync Cross-Platform版
  • Salesforce アカウント(トライアルの取得方法はこちらを参照)

IIJ GIO で 仮想サーバを構成する

今回、IIJ GIOでは「VB2-3」プランで「CentOS 8 :64bit」をブートマシンとして構成しました。

f:id:sugimomoto:20200626112615p:plain

ここの環境にSSHでアクセスして、DataSync の構築を行っていきます。

CData DataSyncのダウンロード

まず、CData DataSync 本体を入手します。以下のURLからダウンロードに移動し「Cross-Platform版」をダウンロードしてください。

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

ZIPファイルを解答すると、以下のファイルが展開されますので、前述の通り「setup.jar」ファイルをこの後利用します。

f:id:sugimomoto:20200703210130p:plain

なお、サーバーにこの後このwarファイルをアップするのですが、今回はwgetコマンドでインスタンス上にダウンロードするので、予め私はクラウドストレージにアップロードしておきました。もちろん、FTPやSCPでアップロードしてもかまいません。

DataSync のセットアップ

それでは DataSync のセットアップを進めていきます。

Cross-Platform版には、JDKが必要なので、あらかじめ、OpenJDKをインストールしておきます。

sudo yum install -y java-1.8.0-openjdk

その後DataSyncの「setup.jar」をダウンロードし、実行すると、ダイアログに従ってインストールをすすめることができます。

sudo wget https://XXXX/DataSync/setup.jar
sudo java -jar setup.jar

Firewall の構成

続いて、CDataSyncのPort「8181」をFirewallが通過できるように、「cdatasync.xml」を作成します。

cd /usr/lib/firewalld/services/
sudo touch cdatasync.xml
sudo vi cdatasync.xml

「cdatasync.xml」の内容は以下のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>CData Sync</short>
  <description>CData Sync</description>
  <port protocol="tcp" port="8181"/>
</service>

あとは、先程作成したXMLFirewallに登録して、リスタートすればOKです。

sudo firewall-cmd --zone=public --permanent --add-service=cdatasync
sudo systemctl restart firewalld.service

MariaDBの構成

DataSyncを使う前に、DataSyncで取得したデータをレプリケートする先のRDBも構成しておきましょう。

# MariaDB をインストール
$ sudo yum install -y mariadb-server

# MariaDB程度 有効化・自動起動設定
$ sudo systemctl start mariadb

# パスワードなどの設定(任意のパスワードを設定)
$ sudo mysql_secure_installation

mysql_secure_installation」では、サンプルデータベース「mysql」を残しておきました。

ここに今回はSalesforce から取得したデータを流し込んでみたいと思います。

DataSync を使ってみる

それでは実際にDataSync を使ってみましょう。

構成されたIPアドレスでポートNo「8181」を指定することで、DataSyncの管理画面にアクセスすることができます。

http://XXX.XXX.XXX.XXX:8181/

ログイン情報はデフォルトだとadmin/adminでは入れます。

f:id:sugimomoto:20200703210142p:plain

ログイン後、情報タブでライセンスをアクティベーションしましょう。今回はトライアルライセンスでアクティベーションを行いました。

f:id:sugimomoto:20200703210149p:plain

では、続いて簡単なレプリケーションの設定を行ってみます。

今回はSalesforceMySQLレプリケーションを行います。

「接続」→「データソース」から「Salesforce」を選択し

f:id:sugimomoto:20200703210155p:plain

各種接続情報を入力して、保存します。(アカウントなどの詳しい取得方法はこちらを参照してみてください。)

f:id:sugimomoto:20200703210200p:plain

次にレプリケーション先となるMySQLの接続を定義します。「接続」→「同期先」からMySQLを選択し

f:id:sugimomoto:20200703210209p:plain

先程構成したLocalhostの接続情報を入力します。

f:id:sugimomoto:20200703210214p:plain

あとは同期を行うジョブを作成するだけです。「ジョブ」の画面に移動して「ジョブを追加」をクリックし

f:id:sugimomoto:20200703210226p:plain

テーブルを追加しましょう。一覧からSalesforce のエンティティが選べるので、任意のエンティティ(テーブル)を選択します。

f:id:sugimomoto:20200703210233p:plain

任意のテーブルを追加したら、ジョブを実行します。スケジュール実行もできますし、手動での実行も可能です。これでMySQLSalesforce のデータが自動的に登録されます。

f:id:sugimomoto:20200703210239p:plain

おわりに

思いの外簡単にセットアップできることがわかってもらえたんじゃないでしょうか。

今回はローカルのRDBレプリケーションしましたが、IIJ GIOから提供されているRDBレプリケーションすることも可能です。

皆さんの環境に合わせて構成してみてください。