ストリーミングレプリケーションはPostgreSQLの本体組み込みで利用可能なレプリケーション機能です。
ストリーミングレプリケーション構成のバックアップは、NetVaultでは公式にはサポートしていません。
PostgreSQLのストリーミングレプリケーション構成はどのようにバックアップするのでしょうか。
PostgreSQLのバックアップとしては2つの方法があります。
- pg_dumpコマンドによるダンプバックアップ
- pg_basebackupとWALを利用するファイルベースバックアップ
ネットでググると、スタンバイノード側でpg_dumpを使用してバックアップができるようです。
NetVaultのPostgreSQLプラグインでpg_dump方式でストリーミングレプリケーション構成のスタンバイ側からバックアップできるか検証してみました
検証で使用したバージョン
- PostgreSQLサーバ(プライマリ側)
- Windows 2019
- PostgreSQL 15.5
- NetVaultサーバ
- Windows 2019
- NetVault Server 13.1.2
- PostgreSQLサーバ(スタンバイ側)
- Windows2019
- PostgreSQL 15.5
- NetVault Client 13.1.2
- NetVault PostgreSQL プラグイン13.1
作業履歴
- まずPostgreSQLのストリーミングレプリケーション構成を設定します
- PostgreSQLサーバプライマリとスタンバイにPostgreSQLをインストール
- プライマリ側でpostgreSQL.conf設定
- プライマリ側でhda.conf設定
- プライマリ側のPostgreSQLサービスを再起動
- セカンダリ側のPostgreSQLサービスを停止
- セカンダリ側のdataフォルダ以下のDBファイルを削除
- セカンダリ側でpg_basebackupを実行
- セカンダリ側にpostgresql.auto.confが生成される
注意:このバージョンではrecovery.confは不要 - セカンダリ側再起動。
- スタンバイ側のログを確認してスタンバイとして動作開始していることを確認します
- プライマリ側で以下のコマンドにより、ストリーミングレプリケーションが動作していることを確認します
- pg_benchを実行してサンプルデータベース内に、pg_benchのテーブルを作ります
- スタンバイ側でpg_benchのテーブルがレプリケーションされたことを確認します
- NetVaultクライアントとPostgreSQLプラグインをスタンバイ側にインストールして設定します
クラスタ名をSTANDBYと設定 - バックアップオプションとしてpg_dumpを選択して、バックアップジョブを作成します
SQL Logical Data Dump がpg_dumpになります
File level Data Copy がpg_basebackupとWALのバックアップになります - バックアップジョブを実行し、正常終了を確認しました
留意事項
- pg_dumpによるバックアップは、フルバックアップのみとなります。増分・差分バックアップできません
- データベースサイズが大きい場合、レプリケーションを一時停止することも検討したほうが良いかもしれません
スタンバイ側で取得したバックアップを、プライマリ側にリストアできるか?
スタンバイ側で取得したバックアップを、プライマリ側にリストアできるか検証してみました
検証内容
- プライマリ側でpgbenchのテーブルをDROP
- スタンバイ側でレプリケーションによりpgbenchのテーブルをDROPされることを確認
- プライマリ側にNetvaultクライアントとPostgreSQLプラグインをインストールして設定します
クラスタ名をPRIMARYとして設定 - リストアジョブの作成でスタンバイ側から取得したバックアップを選択し、pgbenchのテーブルをチェックします
- リストアオプションとして、クラスタ名にPRIMARY
- リストア先クライアント指定をプライマリ側のクライアント(ここではPGPRIMARY)にする
- リストアジョブを実行し正常終了を確認
- プライマリ側のpsqlでpgbenchのテーブルがリストアされたことを確認
- プライマリ側のpsqlでpgbenchのテーブルがレプリケーションされたことを確認
まとめ
- PostgreSQLのストリーミングレプリケーション構成でスタンバイ側からpg_dump方式でバックアップできることを確認しました
- スタンバイ側から取得したバックアップをプライマリ側にリストアできることを確認しました。プライマリ側にリストアすると、スタンバイ側にもレプリケーションされることを確認しました
- 本ドキュメントは、検証作業や検証結果についてまとめたものを紹介しているものであり、本ドキュメントに関する内容について、クエスト・ソフトウェア株式会社が動作を保証するものではありません。各ソフトウェアのバージョンおよび環境等の違いにより動作しない場合も想定されますので、導入の際には事前に検証をされることを推奨いたします。
- 記載されている会社名および製品名などは該当する各社の商標または登録商標です。
- 本ドキュメントで説明している他社製品の操作詳細については、各社のマニュアル等をご参照ください。
作成日付 2023年12月