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 GoldenGateコンソール・ユーザー名:
oggadmin
。 - OCI GoldenGateバージョン:
23ai
。 - PostgreSQLOCI Database with PostgreSQL管理名を持つOCI Database:
admin
。
ソース・オンプレミス | ターゲットOCI | |
---|---|---|
データベース名 | product_inventory | targetdb |
ユーザー | ordermanager | 管理 |
スキーマ | data_analyze | data_analyze |
DBバージョン | 15.12 | 15.6 |
目的
-
Create OCI Database with PostgreSQL database System.
-
OCI GoldenGateデプロイメントをプロビジョニングします。
-
デプロイメント時にオンプレミス・データベースおよびOCIデータベース接続を作成し、接続を割り当てます。
-
ソース・データベース・サーバーおよびデータベースを準備します。
-
初期 ロードExtractを作成します。
-
pg_dump
ユーティリティを使用して、ソース・データベースのメタデータをバックアップします。 -
PostgreSQLOCI Database with PostgreSQLを使用してOCI Databaseにメタデータをインポートします。
-
証跡ファイルを使用して初期ロードReplicatを作成します。
-
取得用のログ順序番号(LSN)の開始に変更するオンラインまたはチェンジ・データ・キャプチャ(CDC)抽出を作成します。
-
CDC Extract証跡ファイルを提供するオンラインReplicatを作成します。
Task 1: Provision OCI Database with PostgreSQL Database System
このタスクでは、データベース・システムの作成方法について説明し、プロビジョニング前に次のポリシーが必要です。詳細は、データベース・システムの管理に関する項を参照してください。
-
次の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
-
データベース管理者パスワードのボールトを作成または選択します。詳細は、ボールトの管理を参照してください。
-
データベース・パスワードのキーを作成します。詳細は、キーの管理に関する項を参照してください。
-
データベース・パスワードにシークレットを作成します。詳細は、Vaultシークレットの管理を参照してください。
-
OCIコンソールにログインし、「データベース」、PostgreSQL、「DBシステム」、「新規データベース・システムの作成」に移動して、「次へ」をクリックします。
-
「ハードウェア構成」を選択します。
-
「Virtual Cloud Network」および「Subnet」を選択し、データベース・システム管理者資格証明を入力します。この例では、ユーザー名はadminになります。
作成が完了すると、データベース・システムに「アクティブ」状態が表示されます。
-
次のコマンドを実行して、コンピュート・ノードから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デプロイメントの作成
-
OCIコンソールに移動し、「Oracle Database」、GoldenGate、「デプロイメント」に移動して、「デプロイメントの作成」をクリックします。
-
次のイメージで指定された必要な情報を入力し、PostgreSQLに「テクノロジの選択」を選択します。
-
「デプロイメントの構成」で、「ユーザー名」として
oggadmin
を使用して、管理者としてOCI GoldenGateコンソールにログインします。 -
「作成」をクリックして、作成およびデプロイメントを開始します。正常に完了すると、「アクティブ」状態が表示されます。
タスク3: オンプレミス・データベース接続の作成、デプロイメント時のOCIデータベース接続および接続の割当て
OCI GoldenGateでは、ソースとターゲットの両方のデータベース接続が必要であり、両方の接続をデプロイメントに割り当てます。
-
ソース・データベース接続を作成します。
-
デプロイメント名(
PG_Mig_deployment
)をクリックし、「接続」を選択して、「接続の作成」をクリックします。次の図に示すように、必要な情報を入力します。 -
「タイプ」にPostgreSQLサーバー、「セキュリティ・プロトコル」に「プレーン」を選択し、「作成」をクリックします。
-
-
ターゲット・データベース接続を作成します。
-
デプロイメント名をクリックし、「接続」を選択して、「接続の作成」をクリックします。次の図に示すように、必要な情報を入力します。
-
「タイプ」に「OCI PostgreSQL」を選択します。
-
「セキュリティ・プロトコル」に「TLS」を選択し、「SSLモード」に「必須」を選択します。
-
-
データベース接続をデプロイに割り当てます。
-
「デプロイメント」に移動し、デプロイメント名(
PG_Mig_deployment
)をクリックして、「接続の割当て」を選択し、「接続の割当て」をクリックします。 -
次の図に示すように、必要な情報を入力します。
接続の割当てが完了すると、「アクティブ」状態が表示されます。
-
タスク4: ソース・データベース・サーバーおよびデータベースの準備
-
postgresql15-contrib
パッケージをインストールします。OCI GoldenGateでは、PostgreSQLサーバー・データベースから抽出するために、ソース・データベース・サーバー上の
postgresql14-contrib
パッケージが必要です。パッケージは、sudo yum install postgresql15-contrib
コマンドを使用してインストールできます(ソース・データベース・バージョンは15)。ノート:クライアント・ライブラリのバージョンは、PostgreSQLデータベースのバージョンを一致させることをお薦めします。10未満のクライアント・バージョンはサポートされていません。
-
ソース・データベースでのデータベース・ユーザー作成および必要な権限を準備します。
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のデータベース・ユーザーおよび権限の準備を参照してください。
-
次に、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が提供されます。
-
OCIコンソールに移動し、「データベース」、GoldenGate、「デプロイメント」に移動して、タスク2で作成したデプロイメント名をクリックします。
-
「コンソールの起動」をクリックし、ログイン資格証明を入力します。
-
「DB接続」に移動すると、割り当てられたソースおよびPostgreSQLOCI Database with PostgreSQLデータベース接続を含むOCIデータベースが表示され、接続チェックを確認します。
接続に成功すると、この段階で初期ロードを開始できます。
-
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の作成
-
OCI GoldenGateコンソールに移動し、「Replicat」に移動して、「+」をクリックしてReplicatを作成します。
-
「作成して実行」をクリックして、レプリケートの初期ロードを開始し、完了したら表の行数を確認します。
-
「レポート」に移動して、初期ロードのレプリケート・レポートを確認します。両方のデータベースで少数の表の行数を確認しています。
タスク9: 取得の開始LSNに変更するCDC抽出の作成
CDC Extractは、既存のデータベースでの進行中の変更の取得に使用されるオンライン抽出で、CDC Extractは収集されたLSN番号からの取得を開始します。
-
OCI GoldenGateコンソールに移動し、「Extract」に移動し、「+」をクリックして、次のイメージに示すように必要な情報を入力します。
-
CDCを登録して作成したら、「オプションで開始」をクリックして、タスク5で収集される特定のLSNからの読取りを指示します。
CDC Extractでは、しばらくするとゼロ秒のラグが表示されます。
タスク10: CDC抽出証跡ファイルを指定したオンライン複製の作成
-
OCI GoldenGateコンソールに移動し、「Replicat」に移動し、「+」をクリックして、次のイメージに示すように必要な情報を入力します。
-
MAP
コマンドを変更した後、「作成して実行」をクリックします。オンラインReplicatでは、しばらくするとゼロ秒のラグが表示されます。
検証
次の問合せを実行して、ターゲット・データベースのdata_analyze.table3
表にレプリケートされるソース表data_analyze.table3
に挿入します。
ターゲット側検証表の数およびデータ。
関連リンク
確認
- 著者 - Sivakrishna Burle (Oracle North America Cloud Services - NACIE、シニア・クラウド・エンジニア)
その他の学習リソース
docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39919-02
Copyright ©2025, Oracle and/or its affiliates.