株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

SQL Server → PostgreSQL 異種DB 準リアルタイム データ連携 (CData Sync)

Oracle ACE Proの渡部です。

本記事では、CData Sync を用いて、SQL Server から PostgreSQL へのニアリアルタイム データ連携(論理レプリケーション)を構成する手順についてご説明します。

なお、弊社コーソルはCData パートナーであり、CData Syncの販売および導入、運用やトライアルの支援が可能です。

CData Syncとは

CData Syncは、非常に多くのデータベース製品、SaaS、アプリケーション、APIに対応したデータ連携ツールです。

以下の特徴を持ちます。

  • 同期元として400種以上の製品およびサービスに、同期先として30種程度のデータベース製品に対応
  • データベースからのChange Data Captureと、異種データベース間のロジカルレプリケーションに対応した製品としては、とても低価格
  • オンプレミス環境およびクラウド環境に対応
  • WebベースのGUI管理コンソールを用いて、お客様自身でデータレプリケーションを簡単に構成可能
  • 差分レプリケーション機能を持ち、サイズが非常に大きいデータでもデータレプリケーション可能。
  • Oracle Database、Microsoft SQL Server、PostgreSQL、MySQL、MariaDB、IBM Db2、IBM InformixからのChange Data Captureに対応
  • エージェントレス構成であるため、既存システムへ最小限の影響で導入可能
  • 方式がロジカルレプリケーションであるため、レプリケーション中にデータを変換したり特定のSQLを伝搬対象から除外したりすることが可能
  • 組込みスケジュール機能によるレプリケーションの自動化が可能

弊社からCData Syncを見積/購入いただくと、以下のサービスを無償でご提供いたします。

  • お客様構成にあわせた簡易導入手順書の提供
  • CData Sync 30日間トライアルライセンスを使用したトライアルの支援
  • トライアル実施時に参考となるチェックリストの提供
  • CData Sync導入後の運用支援(各種Q&A、Web会議、設定変更作業など)

対象ソフトウェアおよび環境

  • CData Sync
    • v25.1 (25.1.9242.0)
    • クロスプラットフォーム版(Java版、オンプレミス / セルフホスティング)
    • systemdサービスとしてCData Syncを起動・運用
  • ソース データベース(同期元データベース)
    • SQL Server 2019
    • 稼働ホスト: Windows Server 2019
    • CData Syncコネクタ: 24.0.9197.0
  • ターゲット データベース(同期先データベース)
    • PostgreSQL 16 (16.3)
    • 稼働ホスト: Oracle Linux 8
    • CData Syncコネクタ: 24.0.9202.0
  • 差分レプリケーション方式: CDC(変更データ キャプチャ)

CData Syncのインストール

以下の記事でご紹介しているため、こちらをご覧ください。

ソースSQL Serverの設定

CDCに、SQL Serverの変更データキャプチャ機能を使用するため、このための設定を行います。

  1. レプリケーション対象となるテーブルを準備します。 ここでは、データベース db1 にテーブル t9 を構成するとします。
C:\Users\Administrator>sqlcmd -S localhost -U u1 -P Pass123- -d db1
1> SELECT @@VERSION;
2> go

-------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)
        Sep 24 2019 13:48:23
        Copyright (C) 2019 Microsoft Corporation
        Standard Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: ) (Hypervisor)

(1 行処理されました)
1> CREATE TABLE t9 (n integer primary key, s varchar(10));
2> go
1>
2> INSERT INTO  t9 VALUES(1, 'AAA');
3> INSERT INTO  t9 VALUES(2, 'BBB');
4> INSERT INTO  t9 VALUES(3, 'CCC');
5> go

(1 行処理されました)

(1 行処理されました)

(1 行処理されました)
1> SELECT * FROM t9;
2> go
n           s
----------- ----------
          1 AAA
          2 BBB
          3 CCC

(3 行処理されました)
1>
  1. SSMSのオブジェクト エクスプローラーから、SQL Serverエージェントを開始します。

  1. sys.sp_cdc_enable_db を実行して、現在のデータベースの変更データ キャプチャを有効にします。
C:\Users\Administrator>sqlcmd -S localhost -U sa -P cosol -d db1
1> EXEC sys.sp_cdc_enable_db;
2> GO
1> SELECT name, is_cdc_enabled FROM sys.databases
2> GO
name       is_cdc_enabled
---------- --------------
master                  0
tempdb                  0
model                   0
msdb                    0
db1                     1

(5 行処理されました)
1>      
  1. sys.sp_cdc_enable_table を実行して、1. で作成したテーブル t9 について変更データ キャプチャを有効にします。
1> EXEC sys.sp_cdc_enable_table
2> @source_schema = dbo,
3> @source_name   = t9,
4> @role_name     = NULL
5> GO
ジョブ 'cdc.db1_capture' が正常に開始しました。
ジョブ 'cdc.db1_cleanup' が正常に開始しました。
1>

CData SyncでソースSQL Serverへの接続を構成

ここでは、ユーザーsaで接続し、データベースに対する変更をキャプチャすることにしています。

  1. 「接続」をクリック

  1. 「接続を追加」をクリック

  1. 上部タブで「データソース」が選択されていることを確認したうえで、検索ボックスに"sql server"と入力しENTER →「SQL Server」が表示されるので、「SQL Server」の「接続を設定」をクリック

  1. ソースSQL Serverに関する項目を入力し、「作成およびテスト」をクリック

ターゲットPostgreSQLのデータベース/ユーザーの準備

ターゲットデータベース側で、データの連携先となるデータベースとユーザーを準備します。 ここでは、データベースdb1およびユーザーu1を作成しています。以下の手順に従います。

CData SyncでターゲットPostgreSQLへの接続を構成

CData Syncの管理コンソールで、ターゲットPostgreSQLへの接続「tgt_pg」を構成します。以下の手順に従います。

弊社からCData Syncを見積/購入いただくと、以下のサービスを無償でご提供いたします。

  • お客様構成にあわせた簡易導入手順書の提供
  • CData Sync 30日間トライアルライセンスを使用したトライアルの支援
  • トライアル実施時に参考となるチェックリストの提供
  • CData Sync導入後の運用支援(各種Q&A、Web会議、設定変更作業など)

CData Syncでジョブ(レプリケーションジョブ)とタスクを作成

CData Syncの管理コンソールで、でジョブ(レプリケーションジョブ)とタスクを作成します。

  1. 「ジョブ」をクリック

  1. 「ジョブを追加」をクリック

  1. 「新しいジョブを追加」をクリック

  1. 「名前」にジョブ名を入力

  1. データソースにソースSQL Serverに対応する接続「src_ms」を選択

  1. 「変更データキャプチャ」を選択します。

  1. 同期先にターゲットPostgreSQLに対応する接続「tgt_pg」を選択

  1. 「ジョブを追加」をクリック。ジョブが作成されました。

  1. 「タスク」をクリック

  1. 「タスクを追加」をクリック

  1. 検索ボックスに「t9」を入力し、表示されたテーブル一覧から「[dbo].[t9]」を選択し、「タスクを追加」をクリックします。

  1. 「[dbo].[t9]」を選択します。

  1. 「同期先情報」の「Edit Settings」をクリックします。

  1. 「スキーマ名」に「u1」を選択し、「保存」をクリックします。

  1. 「ms2pg」をクリックし、ジョブ「ms2pg」の画面に遷移します。

ジョブの初回実行

作成したジョブを実行します。

  1. ジョブ「ms2pg」の画面で「実行」をクリックします。

初回実行であるため、ターゲットPostgreSQLに対してテーブルが作成され、ソースSQL Serverのデータが連携されます(レプリケーションされます)。

[postgres@l8rep3db2 ~]$ psql -U u1 -d db1 -h localhost
Password for user u1:
psql (16.3)
Type "help" for help.

db1=> SELECT * FROM t9;
 n |  s  | _cdatasync_deleted
---+-----+--------------------
 1 | AAA | f
 2 | BBB | f
 3 | CCC | f
(3 rows)

db1=>

なお、_cdatasync_deleted列は、ソースデータベースにおけるデータの削除状況を示すフラグのような役割をする列です。

ジョブの2回目実行

ソースSQL Serverにデータを追加してから、ジョブを実行します。 ジョブの実行手順は初回実行と同じです。 2回目の実行であるため、前回のジョブ実行からの差分だけがデータ連携(レプリケーション)されます。

ソースSQL Serverにデータを追加

C:\Users\Administrator>sqlcmd -S localhost -U u1 -d db1
パスワード:
1> INSERT INTO t9 VALUES(4, 'DDD');
2> INSERT INTO t9 VALUES(5, 'EEE');
3> GO

(1 行処理されました)

(1 行処理されました)
1> SELECT * FROM t9;
2> GO
n           s
----------- ----------
          1 AAA
          2 BBB
          3 CCC
          4 DDD
          5 EEE

(5 行処理されました)
1>

ジョブ実行後、ターゲットPostgreSQLでデータを確認

db1=> SELECT * FROM t9;
 n |  s  | _cdatasync_deleted
---+-----+--------------------
 1 | AAA | f
 2 | BBB | f
 3 | CCC | f
 4 | DDD | f
 5 | EEE | f
(5 rows)

db1=>

ジョブ実行の自動化

スケジュールを設定して、ジョブ実行を自動化することも可能です。

なぜコーソルからCData Syncを購入すべきなのか

弊社コーソルはCData パートナーであり、CData Syncの製品販売を行います。加えて、コーソルが得意とするデータベース技術領域を含めたCData Syncの導入、技術支援、サポートを行います。

CData Syncを用いたデータ連携をご検討されている場合は、ぜひコーソルへご相談いただければとと思います。

  • 製品販売 : CData Syncの販売
  • 製品導入 : CData Syncの設計および導入
  • 製品サポート: CData Syncの製品サポート
  • 技術支援 : トライアル支援、運用支援

コーソルからCData Syncを購入いただくと

データベースのレプリケーションにおいては、データベース製品およびレプリケーション製品の両方の知識が必要です。このような知識を持つエンジニアの確保は一般に困難です。弊社のサービスがこの問題のお役に立てると考えております。

また、弊社からCData Syncを見積/購入いただくと、以下のサービスを無償でご提供いたします。

  • お客様構成にあわせた簡易導入手順書の提供
  • CData Sync 30日間トライアルライセンスを使用したトライアルの支援
  • トライアル実施時に参考となるチェックリストの提供
  • CData Sync導入後の運用支援(各種Q&A、Web会議、設定変更作業など)

多数のOracle関連書籍を執筆

コーソルはORACLE MASTER Platinum 累計取得者数No.1

コーソルからデータベース関連製品をご購入いただくと、ORACLE MASTER Platinum 単年取得者数7年連続No.1、2016年6月以降 累計保持者数No.1という指標に裏付けされた高い技術力により、安心して製品を導入/利用いただけます。

ORACLE MASTER Platinumとは、2日間にわたる実技試験により認定されるOracle Database最高難度の資格です。 グローバルで有効な資格であり、海外では"Oracle Certified Master"と呼ばれます。

ORACLE MASTER Platinumとは何か / コーソルはPlatinum取得者数No.1!

Oracle DatabaseのDBAサービスを提供可能

Oracle Databaseについても製品販売、製品サポート、製品の導入を行います。また、リモート回線経由でスポット的なDBA実務を行うリモートDBAサービス、コンサルティングやベンダコントロールを含めたOracle Databaseプロフェッショナルサービスを時間制で提供する時間制コンサルサービスも提供しています。

データベース運用保守なら常駐しないリモートDBA

基幹系DB運用支援および製品サポートについては、3拠点体制による24時間365日対応が可能です。

コーソルは多数のデータベース関連製品を取り扱っています

コーソルは、Oracle Databaseをはじめとするデータベース製品に関する深い知識を活かし、多数のデータベース関連製品を取り扱っております。

  • オラクル製品全般 (Oracle Database, Oracle Cloud, Oracle GoldenGate, Oracle WebLogic Serverなど)
  • Dbvisit Standby
  • SharePlex for Oracle
  • CData Sync
  • Qlik Replicate
  • Solarwinds Database Performance Analyzer (DPA)
  • Toad for Oracle / Toad for SQL Server
  • MaxGuage
  • Spotlight for Oracle / Spotlight for SQL Server
  • SIOS LifeKeeper
  • Delphix
  • PISO
  • D'amo
  • Nutanix Database Service (NDB)

これらの製品について、販売・導入・運用を様々な形でご支援します。お困りの際はぜひ弊社にお声がけくださいませ。

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ