OCI GoldenGateを使用して、PostgreSQLOCI Database with PostgreSQLでOCI Databaseをプロビジョニングし、最小ダウンタイムでオンプレミスから移行

はじめに

Oracle Cloud Infrastructure Database with PostgreSQL (OCI Database with PostgreSQL)は、フルマネージドのPostgreSQL互換サービスで、データベース最適化ストレージにより3倍のパフォーマンス、Amazon Web Service (AWS)と比較して半額のコストを提供し、自動バックアップ、高可用性、スケジュールされたメンテナンス、動的なストレージ・スケール、垂直スケーリングなどを提供します。

例: ビジネス継続性

OCI Database with PostgreSQLサービスは、99.99%のアップタイム・サービス・レベル合意(SLA)、マルチノード・データベース・システムでは2分未満のリカバリ時間目標(RTO)、データ損失なしで0のリカバリ・ポイント目標(RPO)を提供します。単一アベイラビリティ・ドメイン(AD)リージョンの単一ノード・データベース・システムの場合、このサービスは99.9%のアップタイムSLA、20分未満のRTO、および0のRPOを提供します。

OCI Database with PostgreSQLでは、OCI Block Volumesを使用してユーザー・データを格納します。したがって、同じ耐久性、セキュリティおよびパフォーマンス保証が適用されます。For more information, see Overview of OCI Database with PostgreSQL and First Principles: Optimizing PostgreSQL for the cloud.

ここにイメージの説明を入力します

このチュートリアルでは、最小限のダウンタイムでOCI GoldenGateを使用して、オンプレミスPostgreSQLデータベースからPostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseへの移行に重点を置いています。

環境詳細:

  ソース・オンプレミス ターゲットOCI
データベース名 product_inventory targetdb
ユーザー ordermanager 管理
スキーマ data_analyze data_analyze
DBバージョン 15.12 15.6

目的

  1. Create OCI Database with PostgreSQL database System.

  2. OCI GoldenGateデプロイメントをプロビジョニングします。

  3. デプロイメント時にオンプレミス・データベースおよびOCIデータベース接続を作成し、接続を割り当てます。

  4. ソース・データベース・サーバーおよびデータベースを準備します。

  5. 初期 ロードExtractを作成します。

  6. pg_dumpユーティリティを使用して、ソース・データベースのメタデータをバックアップします。

  7. PostgreSQLOCI Database with PostgreSQLを使用してOCI Databaseにメタデータをインポートします。

  8. 証跡ファイルを使用して初期ロードReplicatを作成します。

  9. 取得用のログ順序番号(LSN)の開始に変更するオンラインまたはチェンジ・データ・キャプチャ(CDC)抽出を作成します。

  10. CDC Extract証跡ファイルを提供するオンラインReplicatを作成します。

Task 1: Provision OCI Database with PostgreSQL Database System

このタスクでは、データベース・システムの作成方法について説明し、プロビジョニング前に次のポリシーが必要です。詳細は、データベース・システムの管理に関する項を参照してください。

  1. 次のOracle Cloud Infrastructure Identity and Access Management (IAM)ポリシーを追加します。

    Allow group <postgresql-admin-group> to read compartments in tenancy
    Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
    
  2. データベース管理者パスワードのボールトを作成または選択します。詳細は、ボールトの管理を参照してください。

  3. データベース・パスワードのキーを作成します。詳細は、キーの管理に関する項を参照してください。

  4. データベース・パスワードにシークレットを作成します。詳細は、Vaultシークレットの管理を参照してください。

  5. OCIコンソールにログインし、「データベース」PostgreSQL「DBシステム」「新規データベース・システムの作成」に移動して、「次へ」をクリックします。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

  6. 「ハードウェア構成」を選択します。

    ここにイメージの説明を入力します

  7. 「Virtual Cloud Network」および「Subnet」を選択し、データベース・システム管理者資格証明を入力します。この例では、ユーザー名adminになります。

    ここにイメージの説明を入力します

    作成が完了すると、データベース・システムに「アクティブ」状態が表示されます。

    ここにイメージの説明を入力します

  8. 次のコマンドを実行して、コンピュート・ノードからPostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseへの接続を確認します。

    -bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address>  user=admin dbname=postgres"
    Password for user admin:
    psql (15.12, server 15.6)
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
    Type "help" for help.
    postgres=>
    

タスク2: 移行のためのOCI GoldenGateデプロイメントの作成

  1. OCIコンソールに移動し、「Oracle Database」GoldenGate「デプロイメント」に移動して、「デプロイメントの作成」をクリックします。

  2. 次のイメージで指定された必要な情報を入力し、PostgreSQL「テクノロジの選択」を選択します。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

  3. 「デプロイメントの構成」で、「ユーザー名」としてoggadminを使用して、管理者としてOCI GoldenGateコンソールにログインします。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

  4. 「作成」をクリックして、作成およびデプロイメントを開始します。正常に完了すると、「アクティブ」状態が表示されます。

    ここにイメージの説明を入力します

タスク3: オンプレミス・データベース接続の作成、デプロイメント時のOCIデータベース接続および接続の割当て

OCI GoldenGateでは、ソースとターゲットの両方のデータベース接続が必要であり、両方の接続をデプロイメントに割り当てます。

  1. ソース・データベース接続を作成します。

    1. デプロイメント名(PG_Mig_deployment)をクリックし、「接続」を選択して、「接続の作成」をクリックします。次の図に示すように、必要な情報を入力します。

      ここにイメージの説明を入力します

    2. 「タイプ」PostgreSQLサーバー「セキュリティ・プロトコル」「プレーン」を選択し、「作成」をクリックします。

      ここにイメージの説明を入力します

  2. ターゲット・データベース接続を作成します。

    1. デプロイメント名をクリックし、「接続」を選択して、「接続の作成」をクリックします。次の図に示すように、必要な情報を入力します。

      ここにイメージの説明を入力します

    2. 「タイプ」「OCI PostgreSQL」を選択します。

      ここにイメージの説明を入力します

    3. 「セキュリティ・プロトコル」「TLS」を選択し、「SSLモード」「必須」を選択します。

      ここにイメージの説明を入力します

  3. データベース接続をデプロイに割り当てます。

    1. 「デプロイメント」に移動し、デプロイメント名(PG_Mig_deployment)をクリックして、「接続の割当て」を選択し、「接続の割当て」をクリックします。

      ここにイメージの説明を入力します

    2. 次の図に示すように、必要な情報を入力します。

      ここにイメージの説明を入力します

      接続の割当てが完了すると、「アクティブ」状態が表示されます。

      ここにイメージの説明を入力します

タスク4: ソース・データベース・サーバーおよびデータベースの準備

  1. postgresql15-contribパッケージをインストールします。

    OCI GoldenGateでは、PostgreSQLサーバー・データベースから抽出するために、ソース・データベース・サーバー上のpostgresql14-contribパッケージが必要です。パッケージは、sudo yum install postgresql15-contribコマンドを使用してインストールできます(ソース・データベース・バージョンは15)。

    ノート:クライアント・ライブラリのバージョンは、PostgreSQLデータベースのバージョンを一致させることをお薦めします。10未満のクライアント・バージョンはサポートされていません。

  2. ソース・データベースでのデータベース・ユーザー作成および必要な権限を準備します。

    product_inventory=# create user  ggreplication with password 'abc1234';
    ERROR:  role "ggreplication" already exists
    product_inventory=#
    product_inventory=#  select current_database();
     current_database
    -------------------
     product_inventory
    (1 row)
    
    product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication;
    GRANT
    product_inventory=# ALTER USER ggreplication WITH 	REPLICATION;
    ALTER ROLE
    product_inventory=# ALTER USER ggreplication WITH SUPERUSER;
    ALTER ROLE
    product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE ON DATABASE product_inventory  TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=#
    

    各権限の特定の目的の詳細は、PostgreSQLのデータベース・ユーザーおよび権限の準備を参照してください。

  3. 次に、PostgreSQLデータベース構成ファイル内のパラメータを示します。構成ファイルの場所は、$PGDATA/postgresql.confです。

    wal_level = logical   **# set to logical for Capture**
    
    max_replication_slots = 1 **# max number of replication and one slot for Extract/Client**
    
    max_wal_senders = 1 **# one sender per max repl slot**
    
    track_commit_timestamp = on **# optional, correlates tx commit time**  with begin tx log record (useful for  # timestamp-	based positioning)
    

    ノート:

    • 前述のいずれかの変更を加えた後、データベースを再起動します。
    • OCI GoldenGateレプリケーションでは、サポートされているPostgreSQLデータ型およびサポートされているデータ型の制限、サポートされているオブジェクトおよび操作は、ドキュメントから確認できます。詳細は、データベースの準備を参照してください。

タスク5: 初期ロード抽出の作成

初期ロードExtractを作成する必要があります。これにより、OCIのGoldenGate Extractレポート・セクションにLSNが提供されます。

  1. OCIコンソールに移動し、「データベース」GoldenGate「デプロイメント」に移動して、タスク2で作成したデプロイメント名をクリックします。

    ここにイメージの説明を入力します

  2. 「コンソールの起動」をクリックし、ログイン資格証明を入力します。

    ここにイメージの説明を入力します

  3. 「DB接続」に移動すると、割り当てられたソースおよびPostgreSQLOCI Database with PostgreSQLデータベース接続を含むOCIデータベースが表示され、接続チェックを確認します。

    ここにイメージの説明を入力します

    接続に成功すると、この段階で初期ロードを開始できます。

  4. OCI GoldenGateコンソールに移動し、「Extract」に移動して、「+」をクリックします。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

    初期ロードExtractが停止したら、OCI GoldenGateレポート・ファイルを検証し、LSNの詳細を書き留めて、タスク9で使用するのに便利です。

    ここにイメージの説明を入力します

タスク6: pg_dumpコマンドを使用したソース・データベース・メタデータのバックアップ

pg_dumpコマンドは、ソース・データベースのproduct_inventoryメタデータのみをダンプするために使用します。

pg_dump -h localhost  -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump

タスク7: PostgreSQLOCI Database with PostgreSQLを使用したOCIデータベースへのメタデータのインポート

pg_restoreバイナリを使用して、PostgreSQLOCI Database with PostgreSQLを使用してターゲットOCI Databaseにインポートします。ここでは、OCIデータベース名はtargetdbです。

タスク1.8で接続コマンドを正常に実行したOCIコンピュート・ノードからrestoreコマンドを実行します。

pg_restore -h <OCI IP address>  -U admin -d targetdb  -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
         List of schemas
     Name     |       Owner
--------------+-------------------
 data_analyze | admin
 ordermanager | admin
 public       | pg_database_owner
(3 rows)

ノート: select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name;問合せを使用して、ターゲットでのメタデータ・インポート後に表名を確認します。

タスク8: 証跡ファイルを使用した初期ロードReplicatの作成

  1. OCI GoldenGateコンソールに移動し、「Replicat」に移動して、「+」をクリックしてReplicatを作成します。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

  2. 「作成して実行」をクリックして、レプリケートの初期ロードを開始し、完了したら表の行数を確認します。

  3. 「レポート」に移動して、初期ロードのレプリケート・レポートを確認します。両方のデータベースで少数の表の行数を確認しています。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

タスク9: 取得の開始LSNに変更するCDC抽出の作成

CDC Extractは、既存のデータベースでの進行中の変更の取得に使用されるオンライン抽出で、CDC Extractは収集されたLSN番号からの取得を開始します。

  1. OCI GoldenGateコンソールに移動し、「Extract」に移動し、「+」をクリックして、次のイメージに示すように必要な情報を入力します。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

  2. CDCを登録して作成したら、「オプションで開始」をクリックして、タスク5で収集される特定のLSNからの読取りを指示します。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

    CDC Extractでは、しばらくするとゼロ秒のラグが表示されます。

    ここにイメージの説明を入力します

タスク10: CDC抽出証跡ファイルを指定したオンライン複製の作成

  1. OCI GoldenGateコンソールに移動し、「Replicat」に移動し、「+」をクリックして、次のイメージに示すように必要な情報を入力します。

    ここにイメージの説明を入力します

    ここにイメージの説明を入力します

  2. MAPコマンドを変更した後、「作成して実行」をクリックします。

    ここにイメージの説明を入力します

    オンラインReplicatでは、しばらくするとゼロ秒のラグが表示されます。

    ここにイメージの説明を入力します

検証

次の問合せを実行して、ターゲット・データベースのdata_analyze.table3表にレプリケートされるソース表data_analyze.table3に挿入します。

ここにイメージの説明を入力します

ターゲット側検証表の数およびデータ。

ここにイメージの説明を入力します

確認

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。