ノート:

フィジカル・スタンバイ・レプリケーションを使用したVMでのPostgreSQLデータベースのクロス・リージョン・ディザスタ・リカバリの実装

イントロダクション

pg_basebackupは、実行中のPostgreSQLデータベース・クラスタの全体バックアップを実行するためにPostgreSQLによって提供されるコマンドライン・ユーティリティです。データベース・クラスタのバイナリ・コピーを作成するように設計されています。このコピーは、レプリケーションまたはリカバリに使用できます。

pg_basebackupは、実行中のPostgreSQLデータベース・クラスタの全体バックアップを実行するためにPostgreSQLによって提供されるコマンドライン・ユーティリティです。データベース・クラスタのバイナリ・コピーを作成するように設計されています。このコピーは、レプリケーションまたはリカバリに使用できます。

pg_basebackupユーティリティの主な利点の1つは、データベースが存在するファイル・システムにアクセスすることなく動作することです。かわりに、ストリーミング・レプリケーション・プロトコルを使用してPostgreSQLサーバーに接続し、サーバーの実行中でも安全で使いやすいようにします。

通常、pg_basebackupユーティリティは、先読みロギング(WAL)アーカイブと組み合せて使用され、ストリーミング・レプリケーションの設定、および仮想マシン(VM)で実行されているPostgreSQL環境の高可用性およびディザスタ・リカバリの確保において重要な役割を果たします。

基本的な特徴:

このチュートリアルでは、コンピュート・仮想マシンでホストされている2つのPostgreSQLデータベース間でリージョン間ストリーミング・レプリケーションを設定するタスクの概要を示します。

目的

前提条件

リージョン全体でVCNピアリングを作成します。複数のリージョンにわたってコンピュート・仮想マシンに接続するには、VCNピアリングを設定する必要があります。詳細は、次の各トピックを参照してください:

異なるリージョン内のデータベース間のシームレスな接続を確立するために、VCNピアリングが正しく構成されていることを確認します。

タスク1: プライマリPostgreSQLデータベースの設定

  1. プライマリPostgreSQLデータベースにreplicatorという名前のユーザーを作成します。

    CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD '*********';
    
  2. ロール/ユーザーを検証します。

    postgres=# \du
                                        List of roles
       Role name    |                         Attributes                         | Member of
    ----------------+------------------------------------------------------------+-----------
    admin          | Superuser                                                  | {}
    guest          |                                                            | {}
    mytestdb       |                                                            | {}
    postgres       | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
    replicator     | Replication  
    
  3. 次の詳細でpostgresql.confファイルを更新します。

    listen_addresses = '*'
    
  4. pg_hba.confファイルを更新します。スタンバイ・データベースのIPアドレスを使用します。

    host    replication     replicator      Standby_DB_IP/32       md5
    
  5. PostgreSQL サービスを再起動します。

    sudo systemctl restart PostgreSQL
    

タスク2: スタンバイPostgreSQLデータベースの設定

  1. PostgreSQLサービスを停止します。

    sudo systemctl stop PostgreSQL
    
  2. 既存のバイナリを削除します。

    cp -R /var/lib/postgresql/13/main /var/lib/postgresql/13/main_old
    rm -rf /var/lib/postgresql/13/main
    
  3. pg_basebackupコマンドを実行して、ストリーミング・レプリケーションを設定します。

    pg_basebackup -h PrimaryDB_IP -D /var/lib/postgresql/13/main -U replicator -P -v -R -X stream -C -S slaveslot1 
    
  4. PostgreSQLサービスを起動します。

    sudo systemctl start PostgreSQL
    

タスク3: プライマリPostgreSQLデータベースでのストリーミング・レプリケーションの確認

プライマリPostgreSQLデータベースで次のコマンドを実行して、プライマリ・データベースとDRデータベース間の同期ステータスを収集します。

SELECT * FROM pg_replication_slots;
SELECT * FROM pg_stat_replication;

確認

その他の学習リソース

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

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