こんにちは。CData リードエンジニアの杉本です。
今回はお客様からよく受ける相談トピックの一つ、CDataSync による Salesforce データをデータベースにレプリケート・バックアップする方法をご紹介します。
CData Sync における Salesforce のバックアップ・レプリケートアプローチ
CDataSync はポイント&クリック操作でSalesforceはもちろん、SaasデータやNoSQL DBなどのデータを各種データベースに複製を作成するサーバー製品です。
独自のスケジューリング機能のもと、Salesforce 側で変更が生じたデータのみレプリケートが行われます。
Salesforce 自身も標準で各種バックアップ機能を提供していますが、もっとも大きな違いはバックアップ・レプリケート先となるDB・サービスの種類の多さです。
MySQLやSQL Server・OracleといったRDBを対象にすることも可能ですし、Amazon S3やAzure Blob StorageにCSVとしてデータをレプリケートすることも可能ですし、HadoopやSnowflase、Cassandraといったビッグデータ処理のサービスに接続することもできます。
RDBに保持されてしまえば、API利用コストやネットワークの遅延などが軽減できますので、BIツールで使ったり、DWHとして利用したりといった用途にも活用できます。お客様の中にはマスタデータだけスムーズに他のアプリケーションから参照できるようにしたい、といった用途で使っていただいていることもあります。
制限としては、DBへのデータ登録のみが機能として提供されており、Salesforceへのデータ復元機能は保持していない、という点になります。ですので、どうしても保持したデータをSalesforceに登録し直したい、といった場合は別途API連携の開発やCData Salesfroce DriverやExcel Addinを使った処理が必要となりますので、ご注意ください。
今回の記事のシナリオ
この記事では、Salesforceの取引先責任者(Contact)データをオンプレのMySQLにレプリケート・バックアップを行います。
基本的な手順は以下のGIF動画でも確認できます。
予めSalesforceのアカウント取得およびMySQLの環境は構築しておきましょう。なお、今回はローカルマシンのMySQLですが、例えばAzure MySQLやAmazon RDSのMySQL、GCPの CloudSQLのMySQLに接続することも可能です。
CData Sync製品のダウンロードおよびインストール
まずはCDataSync製品をダウンロード・インストールします。
こちらのCData Sync製品のページにアクセスして「DOWNLOAD」ボタンをクリックします。ダウンロードに必要な情報(メールアドレス必須)を登録してダウンロードします。
setup.exeがダウンロードされるので、レプリケートを実行するマシン上にインストールします。インストーラを起動して、EURAを確認し、ウィザードに従いインストールします。
途中、管理者のパスワードの設定が必要となりますので、任意のパスワードを入力します。インストーラを最後まで進むと「Run CData Data Sync」にチェックがついていることを確認して終了します。
Windowsのステータスバーに、CData Data Syncのアイコンが表示されて、しばらくたつとブラウザが起動します。
ライセンスのアクティベーション
Login画面が表示されるので、User(admin), Passwordはインストール時に指定したパスワードを入力してSign inします。
ログイン後、Licenseのアクティベーションを行います。「30日の評価版をアクティベート」ボタンをクリックします。
名前とEmailを入力して、使用許諾契約書の同意確認を行い、「評価版をアクティベートする」を実行すればOKです。
接続コネクションの設定
次にデータの取得元とバックアップ・レプリケート先のDBそれぞれの接続情報を設定します。
まず、Salesforceの接続を構成しましょう。
「接続」タブをクリックし、データソース一覧の中から「Salesforce」を選択します。
Salesforceへ接続するためのアカウントとなるユーザーのIDとPassword、そしてAPI接続に必要となるSecutrity Tokenを入力し、接続テストで確認の上、変更を保存します。
セキュリティトークンの取得はこちらのHelpを参考にしてみてください。
実行ジョブの設定
最後に実行ジョブを構成します。
「ジョブ」タブに移り、「+ジョブを追加...」ボタンをクリックします。
ジョブに任意な名称を付け、Source(Salesforce)とDestination(MySQL)を選択し、Salesforce内のどのオブジェクト(テーブル)のレプリケーションを作成するかを選択するために「+テーブルを追加」ボタンをクリックします。
Salesforce内のオブジェクト(テーブル)の一覧が表示されるので、今回はContact(取引先責任者)を追加します。
以下のようにテーブルが追加されたら「変更を保存」をクリックします。
追加されたテーブルを選択して、「Run」ボタンをクリックして実行してみましょう。「The job started runnnning...」というメッセージが表示されて実行されます。
実行が正常に完了すると「The job [job name] has completed.」といったメッセージが表示されます。
レプリケート先のMySQLの管理コンソール(MySQL Workbench)からアクセスすると、テーブルが作成されていることを確認できます。試しにContactテーブルのデータをSELECT文で取得して確認してみます。Salesforce内のデータのレプリカが出来ていますね。
作成したJobを10分間隔で実行するといったスケジュール実行の設定も可能です。設定したら「Save Changes」してください。
Salesforce側でデータを追加してみてください。本スケジュールされたJobは追加・変更されたレコードのみ処理の対象をするので、スケジュールされたジョブでは、追加・変更されたレコードのみ処理されたことを確認できます。追加・変更がなけば下記のように「Records affects:0」となります。
おわりに
CDataSyncではMySQL以外にも、OracleやSQL Server、BigQueryなど様々なデータベースへのレプリケートが可能です。
https://www.cdata.com/jp/sync/#destinations
是非試してみてください。