ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了する場合は、これらの値をクラウド環境に固有の値に置き換えてください。
OCIコンソールを使用してPostgreSQLプライマリ・データベースと2つのスタンバイ・データベースを設定し、データ・レプリケーションを検証します
イントロダクション
PostgreSQLは、オープン・ソースのオブジェクト・リレーショナル・データベース管理システムです。拡張性と拡張性が高く、多くの機能があります。PostgreSQLは、複数のデータ・センター間のデータ・レプリケーションをサポートします。
データを変更できるサーバーは、マスター・サーバーまたはプライマリ・サーバーと呼ばれます。プライマリの変更を追跡するサーバーは、スタンバイ・サーバーと呼ばれます。プライマリ・サーバーに昇格するまで接続できないスタンバイ・サーバーはウォーム・スタンバイ・サーバーと呼ばれ、接続を受け入れて読取り専用問合せを処理できるスタンバイ・サーバーはホット・スタンバイ・サーバーと呼ばれます。
リソース・マネージャは、OCIリソースのプロビジョニング処理を自動化できるOracle Cloud Infrastructure (OCI)サービスです。Terraformを使用する場合、Resource Managerでは、「infrastructure-as-a-code」モデルを使用してリソースをインストール、構成および管理できます。
Oracle Cloud Infrastructureは、データベースへのステートフル接続、CPUまたはGPUによるRAW処理、数百万のストレージIOPS、GB/sのスループットなど、一貫した高パフォーマンスを必要とするワークロード用に設計されています。最初はゼロトラスト・アーキテクチャです。Oracle Cloudの設計においては、すべてのアプリケーションに対して優れたパフォーマンスを発揮するクラウドが必要でしたが、コスト・パフォーマンスも向上しました。
目標
OCI Resource ManagerでTerraformコードを使用して、1つのプライマリ・サーバーと2つのホット・スタンバイ・サーバーを構成します。これは、3つの異なるアベイラビリティ・ドメインの3つのコンピュート・インスタンスにデプロイされます。
デプロイメント後、プライマリ・サーバーからスタンバイ・サーバーへの表のレプリケーションを確認し、ホット・スタンバイ・データベースに接続してデータを問い合せます。
-
terraformスタックを使用して、ネットワーク(PostgreSQLプライマリ・サーバーと2つのスタンバイ・サーバー)をデプロイします。
-
プライマリにサンプル表を作成し、表にいくつかのレコードを挿入します。
-
次に、これらのサンプル表および行が両方のスタンバイ・サーバーにレプリケートされているかどうかを確認します。
タスク1: スタックの作成
-
ブラウザでOracle Cloudにデプロイのリンクを開きます。
-
まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
-
スタックをデプロイするリージョンを選択します。
-
「スタック情報」ページで、「Oracle使用条件を確認して同意します」チェック・ボックスを選択します。「スタック情報」セクションに詳細が表示されます。
-
「次へ」をクリックします。
-
「変数の構成」ページで、次の設定を構成します:
ノート: このチュートリアルでは、パブリック・サブネットにPostgreSQLバージョン12をデプロイしています。
-
必要な可用性ドメインおよびPostgreSQLバージョンを選択します。
-
「プライベート・サブネットに作成」チェック・ボックスの選択を解除します。
-
「拡張オプションの表示」チェック・ボックスを選択し、ネットワーク、コンピュート、ストレージ、スタンバイおよびその他の設定の詳細を指定します。
-
必要なOS、バックアップ・ポリシーおよびその他の詳細を指定します。
-
OCPUおよびメモリーに必要な値を指定します。
-
プライマリ・ノードのシェイプおよびreplicatユーザーを選択します。
-
Hotstandby1の詳細を指定します(AD-2の選択)。
-
Hotstandby2の詳細を指定します(AD-3の選択)。
-
-
「次へ」をクリックします。
-
-
「レビュー」ページで詳細を確認し、リソースをすぐにプロビジョニングするために「適用の実行」チェック・ボックスが選択されていることを確認します。
-
「Create」をクリックします。
-
次のスクリーンショットに示すように、スタック・ジョブのログをモニターします(「開発者サービス」、「リソース・マネージャ」、「スタック」に移動します)。
ノート: このチュートリアルで使用されるテスト設定では、スタックが適用され、選択したシェイプに対して11分でリソースが正常に構成されました。これは、選択した構成設定によって異なります。
次のスクリーンショットは、完了したプライマリおよびスタンバイ・サーバー構成を示しています。
タスク2: 接続とレプリケーションの確認
-
プライマリ・ノードにopcユーザーとしてsshし、次のコマンドを実行します。
sudo su - postgres
-
プライマリ・ノードに表
order_details
を作成します。CREATE TABLE order_details (order_detail_id integer CONSTRAINT order_details_pk PRIMARY KEY, order_id integer NOT NULL, order_date date, qty integer, ACCEPTED_QUANTITY integer);
-
作成された表の説明
\dt order_details
-
データを問い合せると、0行が返されます。
select * from order_details;
-
standby1サーバーにログインし、
order_details
表がレプリケートされていることを確認します。 -
standby2サーバーにログインし、
order_details
表がレプリケートされていることを確認します。 -
プライマリ・データベース表
order_details
に2行挿入します。BEGIN; INSERT INTO order_details (order_detail_id,order_id,order_date,qty,ACCEPTED_QUANTITY) values (101,1,'2022-07-14',10,5); INSERT INTO order_details (order_detail_id,order_id,order_date,qty,ACCEPTED_QUANTITY) values (102,2,'2022-07-14',100,100); COMMIT;
-
standby1サーバーの行がレプリケートされたことを確認します。
-
standby2サーバーの行もここにレプリケートされていることを確認してください。
関連リンク
謝辞
- 作成者 - Bhushan Arora (プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Set up PostgreSQL primary and two standby databases using OCI Console and validate data replication
F76214-01
January 2023
Copyright © 2023, Oracle and/or its affiliates.