PostgreSQLからSnowflakeへのデータのレプリケート
OCI GoldenGateを使用して、PostgreSQLからSnowflakeにデータをレプリケートする方法について学習します。
開始する前に
このクイックスタートを正常に完了するには、次が必要です:
-
ソース・データベースとして機能するPostgreSQLインストール(環境設定を参照)
-
VCNのセキュリティ・リストでポート5432を開きます
-
ターゲット・データベースとして機能するスノーフレーク・データベース。
環境設定: PostgreSQL
このクイックスタートの環境を設定するには:
-
次のコマンドを実行して、PostgreSQLをインストールします。
-
PostgreSQLサーバーをインストールします。
sudo yum install postgresql-server -
このSQL例外を回避するために、postgresql-contribモジュールをインストールします。
sudo yum install postgresql-contrib -
新しいPostgreSQLデータベース・クラスタを作成します。
sudo postgresql-setup --initdb -
postgresql.serviceを有効にします。
sudo systemctl enable postgresql.service -
postgresql.serviceを起動します。
sudo systemctl start postgresql.service
-
-
デフォルトでは、PostgreSQLはローカル接続のみを許可します。PostgreSQLへのリモート接続を許可します。
-
/var/lib/pgsql/data/postgresql.confで、データベースをレプリケーション用に準備します。 -
listen_addresses = 'localhost'を見つけてコメント解除し、localhostをアスタリスク(`)に変更します。listen_addresses = '*' -
次のパラメータを次のように設定します。
-
wal_level = logical -
max_replication_slots = 1 -
max_wal_senders = 1 -
track_commit_timestamp = on
ノート:
/var/lib/pgsql/data/pg_hba.confを構成して、Oracle GoldenGateホストからの接続を許可するようにクライアント認証が設定されていることを確認します。たとえば、次を追加します:#Allow connections from remote hosts host all all 0.0.0.0/0 md5詳細は、The pg_hba.conf Fileを参照してください。
- PostgreSQLサーバーを再起動します。
sudo systemctl restart postgresql.service- Oracle Cloud Computeを使用してPostgreSQLをホストする場合は、ポート5432を開きます。
sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all -
-
VCNのセキュリティ・リストでポート5432を開きます。
-
> sudo su - postgres > psqlノート:前述の例が機能しない場合は、
sudo su - postgres psqlを入力することもできます。 -
PostgreSQLを設定します。
-
seedSRCOCIGGLL_PostgreSQL.sqlをダウンロードして実行し、データベースを設定し、サンプル・データをロードします。
-
次のコマンドを実行して、ユーザーを設定します(
<password>を実際のパスワードに置き換えます)。
create user ggadmin with password '<password>'; alter user ggadmin with SUPERUSER; GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin; -
-
環境設定: Snowflake
-
サンプル・スキーマを使用してターゲット表を作成します。
表およびユーザーが正常に作成されたことを確認します。
タスク1: OCI GoldenGateリソースの作成
このクイックスタートの例では、ソースとターゲットの両方のデプロイメントおよび接続が必要です。
-
ソースPostgreSQLデータベースのデプロイメントを作成します。
-
ターゲット・スノーフレーク・データベースのビッグ・データ・デプロイメントを作成します。
-
次の値を使用してPostgreSQL接続を作成します。
-
「タイプ」で、ドロップダウンから「PostgreSQLサーバー」を選択します。
-
「データベース名」に、
ociggllと入力します。 -
「ホスト」に、PostgreSQLが実行されるコンピュート・インスタンスのパブリックIPを入力します。
-
「ポート」に、
5432と入力します。 -
「ユーザー名」に、
ggadminと入力します。 -
「パスワード」に、パスワードを入力します。
-
「セキュリティ・プロトコル」で、ドロップダウンから「プレーン」を選択します。
-
-
次の値を使用してスノーフレーク接続を作成します:
-
「接続URL」に、
jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLLと入力します。ノート:
<account_identifier>および<warehouse name>を適切な値に置き換えてください。 -
「認証タイプ」で、ドロップダウンから「基本認証」を選択します。
-
「ユーザー名」に、名前を入力します。
-
「パスワード」に、パスワードを入力します。
-
-
(オプション)ビッグ・データ・デプロイメントにパブリック・エンドポイントがない場合は、GoldenGateへの接続を作成してから、ソースPostgreSQLデプロイメントにこの接続を割り当てる。
タスク2: サプリメンタル・ログの有効化
サプリメンタル・ロギングの有効化の手順:
-
PostgreSQL GoldenGateデプロイメント・コンソールを起動します:
-
「デプロイメント」ページから、PostgreSQLデプロイメントを選択してその詳細を表示します。
-
PostgreSQLデプロイメントの詳細ページで、「コンソールの起動」を選択します。
-
デプロイメント・コンソールのサインイン・ページで、タスク1のステップ1で提供されるGoldenGate管理資格証明を入力します。
ノート:デプロイメントの作成時にIAMが資格証明ストアとして選択されなかった場合は、サインインが必要です。
-
-
デプロイメント・コンソールで、左側のナビゲーションで「DB接続」を選択し、ソースPostgreSQLデータベース、「Trandata」の順に選択します。
-
「TRANDATA」ページの「TRANDATA Information」の横にある「Add TRANDATA」(プラス・アイコン)を選択します。
-
「Trandata」パネルで、「スキーマ名」に
src_ociggllと入力し、「送信」を選択します。ノート:検索フィールドを使用して
src_ociggllを検索し、表が追加されたことを確認します。
タスク3: Extractの作成
-
チェンジ・データ・キャプチャExtractを追加します。
-
左側のナビゲーションから、「Extract」を選択します。
-
「Extract」ページで、「Extractの追加」(プラス・アイコン)を選択し、次のようにフィールドに入力します。
-
「Extract Information」ページで、次の手順を実行します。
-
「Extractタイプ」で、「Change Data Capture Extract」を選択します。
-
「プロセス名」に、Extractの名前(
ECDCなど)を入力します。 -
「次へ」を選択します。
-
-
「抽出オプション」ページで、次の手順を実行します。
-
ソース資格証明の場合は、「ドメイン」ドロップダウンから「Oracle GoldenGate」を選択します
-
「別名」ドロップダウンからソースPostgreSQLデータベースを選択します。
-
「Extract Trail Name」に、2文字のトレイル名(
C1など)を入力します。 -
「次へ」を選択します。
-
-
「Extractパラメータ」ページで、
MAP *.*, TARGET *.*;を次のものに置き換えます:TABLE SRC_OCIGGLL.*;
-
-
「作成および実行」を選択します。
-
-
初期ロードExtractの追加:
-
「Extract」ページで、「Extractの追加」を選択し、「Extractの追加」フォームに次のように入力します。
-
「Extract Information」ページで、次の手順を実行します。
-
「Extractタイプ」で、「初期ロードExtract」を選択します。
-
「プロセス名」に、名前(
EILなど)を入力します。 -
「次へ」を選択します。
-
-
「抽出オプション」ページで、次の手順を実行します。
-
ソース資格証明の場合は、「ドメイン」ドロップダウンから「Oracle GoldenGate」を選択します。
-
「別名」ドロップダウンからPostgreSQLデータベースを選択します。
-
「トレイル名の抽出」に、2文字のトレイル名(
I1など)を入力します。 -
「次へ」を選択します。
-
-
「Extractパラメータ」ページで、テキスト領域の内容を次のように置き換えます。
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;ノート:移動する前に、必ず
USERIDALIASの前にあるSOURCEDBパラメータを削除してください。
-
-
「作成および実行」を選択します。
-
「Extract」ページに戻り、Extractの開始を確認できます。
タスク4: 初期ロードExtractの分散パスの作成
初期ロードExtractの分散パスを作成するには:
-
Oracle Cloudコンソールの「デプロイメント」ページで、ターゲット・ビッグ・データ・デプロイメントを選択します。
-
デプロイメントの詳細ページで、「コンソールの起動」を選択し、管理ユーザーとしてログインします。
-
IAM資格証明ストアを使用する場合は、「分散パスの作成」ステップに進みます。GoldenGate資格証明ストアを使用する場合は、ソースGoldenGateがターゲットGoldenGateへの接続に使用するユーザーを作成します。
-
ナビゲーション・メニューで、「ユーザー管理」を選択します。
-
「新規ユーザーの追加」(プラス・アイコン)を選択し、次のようにフィールドに入力します。「送信」を選択します:
-
「ユーザー名」に、
ggsnetと入力します。 -
「ロール」で、「演算子」を選択します。
-
確認のためにパスワードを2回入力します。
-
-
-
ソースのPostgreSQLデプロイメント・コンソールで、前のステップで作成したユーザーのパス接続を作成します。
-
ナビゲーション・メニューで、「パス接続」を選択します。
-
「Add Path Connection」(プラス・アイコン)を選択し、次のようにフィールドに入力して「Submit」を選択します。
-
「資格証明別名」に、
dpuserと入力します。 -
「ユーザーID」に、
ggsnetと入力します -
「パスワード」に、前のステップで使用したものと同じパスワードを入力します。
-
-
-
分散パスの作成
-
サービス・メニュー・バーで、「パス」を選択し、「分散パスの追加」(プラス・アイコン)を選択します。
-
「パスの追加」フォームに次のように入力します。
-
「パス情報」ページで、次の手順を実行します。
-
「パス名」に、このパスの名前を入力します。
-
「次へ」を選択します。
-
-
「ソース・オプション」ページで、次の手順を実行します。
-
「ソース抽出」では、空白のままにします。
-
「トレイル名」に、初期ロードExtractのトレイル名(
I1)を入力します。 -
「次へ」を選択します。
-
-
「ターゲット・オプション」ページで、次の手順を実行します。
-
「ターゲット」で、「wss」を選択します。
-
「ターゲット・ホスト」に、ターゲット3デプロイメントURLをhttps://または後続のスラッシュなしで入力します。
-
「ポート番号」に、
443と入力します。 -
「トレイル名」に、
I1と入力します。 -
「ターゲット認証方式」で、「ユーザーID別名」を選択します。
-
「ドメイン」に、前のステップで作成したドメイン名を入力します。
-
「別名」に、前のステップで作成した別名を入力します(
dpuser)。 -
「次へ」を選択します。
-
-
-
「作成および実行」を選択します。
「Distribution Service」ページに戻り、作成したパスを確認できます。
-
-
ターゲット・デプロイメント・コンソールで、分散パスの結果として作成された受信パスを確認します:
-
「パス」を選択します。
-
パスの詳細を確認します。
-
タスク5: 初期ロードのためのReplicatの追加
-
ターゲットのビッグ・データ・デプロイメント・コンソールで、初期ロードReplicatを追加します。
-
ナビゲーション・メニューで、「Replicat」を選択し、「Replicatの追加」(プラス・アイコン)を選択します。
-
「Replicat」ページで、「Replicatの追加」フィールドに次のように入力します。
-
「レプリケーション情報」ページで、次の手順を実行します。
-
「Replicatタイプ」で、「クラシック」または「調整済」を選択します。
-
「プロセス名」に、名前(
RILなど)を入力します。 -
「次へ」を選択します。
-
-
「Replicatオプション」ページで、次の手順を実行します。
-
「Replicatトレイル名」に、タスク2からトレイルの名前(
I1)を入力します。 -
「ターゲット資格証明」で、スノーフレーク接続の「ドメイン」および「別名」を選択します。
-
「使用可能な別名」で、ドロップダウンから別名(スノーフレークなど)を選択します。
-
(オプション)外部ストレージの有効化: ドロップダウンから使用可能なステージングの場所を選択します。
-
「次へ」を選択します。
-
-
「パラメータ・ファイル」ページで、次のマッピングを追加します。
INSERTALLRECORDS MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY; MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION; MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER; MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS; MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES; MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT; -
「プロパティ」ページでプロパティを確認し、「作成および実行」を選択します。
「Replicat」ページに戻り、Replicatの詳細を確認できます。
-
-
-
初期ロードを確認するには、Snowflakeデータベースに接続し、次の問合せを実行します。
select * from SRCMIRROR_OCIGGLL.SRC_CITY; select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
出力では、初期ロードの結果としてターゲット・データベース表にロードされたデータが返されます。
タスク6: 変更データ取得のための分散パスの作成
-
ソースのPostgreSQLデプロイメント・コンソールで、「分散サービス」を選択します。
-
「分散パスの追加」を選択します。
-
「パスの追加」フォームに次のように入力します。
-
「パス情報」ページで、次の手順を実行します。
-
「パス名」に、名前を入力します。
-
「次へ」を選択します。
-
-
「ソース・オプション」ページで、次の手順を実行します。
-
「ソースExtract」で、チェンジ・データ・キャプチャExtract (
ECDC)を選択します。 -
「トレイル名」で、変更データ取得のトレイル・ファイル(
C1)を選択します。 -
「次へ」を選択します。
-
-
「ターゲット・オプション」ページで、次の手順を実行します。
-
「ターゲット」で、「wss」を選択します。
-
「ターゲット・ホスト」に、ターゲット・デプロイメント・コンソールのURLを入力します(これは、デプロイメントの詳細ページでhttps://または後続のスラッシュなしで確認できます)。
-
「ポート番号」に、
443と入力します。 -
「トレイル名」に、
C1と入力します。 -
「ターゲット認証方式」で、「ユーザーID別名」を選択します。
-
「ドメイン」に、ドメイン名を入力します。
-
「別名」に、別名を入力してください。
-
-
「パスの作成」および「実行」を選択します。
-
-
ターゲット・ビッグ・データ・デプロイメント・コンソールから、「受信サービス」を選択し、作成された受信パスを確認します。
タスク7: 変更データ取得のためのReplicatの追加
ソースPostgreSQLデータベースに対する更新を実行して、Snowflakeへのレプリケーションを確認します。
-
Replicatを追加します。
-
ターゲットのBig Dataデプロイメント・コンソールで、「Administration Service」を選択し、ナビゲーション・メニューで「Replicats」を選択します。
-
「Replicat」ページで、「Replicatの追加」(プラス・アイコン)を選択し、次のように「Replicatの追加」フォームに入力します。
-
「Replicat情報」ページで、次の手順を実行します。
-
「Replicatタイプ」で、「クラシック」または「調整済」を選択します。
-
「プロセス名」に、名前(
RCDCなど)を入力します。 -
「次へ」を選択します。
-
-
「Replicatオプション」ページで、次の手順を実行します。
-
「Replicatトレイル名」に、タスク3からトレイルの名前(
C1)を入力します。 -
「ターゲット資格証明」で、スノーフレーク接続のドメインと別名を選択します。
-
(オプション)外部ストレージの有効化: ドロップダウンから使用可能なステージングの場所を選択します。
-
-
「パラメータ・ファイル」ページで、次のマッピングを追加し、「次へ」を選択します。
MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY; MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION; MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER; MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS; MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES; MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT; -
「プロパティ」ページでプロパティを確認し、「作成および実行」を選択します。
「Replicat」ページに戻り、Replicatの詳細を確認できます。
-
-
-
変更データ取得の検証:
-
ソースPostgreSQLデータベースに対する更新を実行して、Snowflakeへのレプリケーションを確認します。次のスクリプトを実行して、PostgreSQLデータベースへの挿入を実行します。
Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
-
-
ソースのPostgreSQLデプロイメント・コンソールで、
RCDCを選択し、「統計」を選択します。src_ociggll.src_cityに10の挿入があることを確認します。ノート: Extractで挿入が行われなかった場合は、
ECDCExtractを再起動します。 -
ターゲットのビッグ・データ・デプロイメント・コンソールで、
RCDCを選択し、その「詳細」および「統計」を確認して挿入数を確認します。