pg_rman 1.3

documentation in English
  1. 名前
  2. 概要
  3. 説明
  4. 使用例
  5. オプション
  6. パラメータの指定方法
  7. 使用上の注意と制約
  8. 詳細
  9. 外部スクリプトとの連携
  10. ダウンロード
  11. インストール方法
  12. 動作環境
  13. 関連項目

名前

pg_rman -- PostgreSQL のバックアップとリカバリを管理します。

概要


pg_rman [ OPTIONS ] { init | 
                      backup |
                      restore | 
                      show [ DATE | detail ] | 
                      validate [ DATE ] | 
                      delete DATE | 
                      purge }

pg_rman は以下の機能を持ちます。

DATE には、対象のバックアップのタイムスタンプ (開始日時) を ISO 形式 (YYYY-MM-DD HH:MI:SS) で指定します。DATE の末尾は省略可能で、その場合は指定した DATE の範囲に含まれるバックアップが対象となります。

$ pg_rman show 2009-12 # 2009年12月に取得したバックアップを表示
$ pg_rman validate     # 未検証のすべてのバックアップを検証

以下のコマンドをサポートします。オプション OPTIONS の詳細は オプション を参照してください。

説明

pg_rman は、PostgreSQL のオンライン・バックアップとリカバリを管理するためのプログラムです。 バックアップ方式は、物理オンライン・バックアップです。 バックアップ対象は、データベースクラスタ自体とアーカイブ WAL、サーバログです。

PostgreSQL 9.0以降のレプリケーションを利用している場合、スタンバイサイトでのバックアップに対応しています。

その他、ストレージ・スナップショットを使用したバックアップに対応しています。

バックアップカタログの初期化

pg_rman は、取得したバックアップファイルや管理情報を「バックアップカタログ」という領域に保存します。 このため、まず最初にバックアップカタログを初期化する必要があります。

$ pg_rman init -B <バックアップカタログパス> -D <PostgreSQLのデータベースクラスタパス> -A <アーカイブログの格納パス>

ここで、カタログを初期化する前に postgresql.conf にある log_directoryarchive_modearchive_command を設定しておくことをお奨めします。 これらのパラメータが設定されていると、pg_rman はその値を反映してサーバログの参照先とアーカイブログの参照先を設定することができます。 この場合、PostgreSQL のデータベースクラスタパスを指定する必要があります。

バックアップ取得

バックアップのモードは以下のいずれかで指定します。

バックアップデータの検証

取得したバックアップが適切かどうか検証します。検証にはファイルサイズのチェックとCRCによるチェックを用いています。

バックアップが正常に取得できたら、なるべく早いタイミングでバックアップを検証してください。 未検証のバックアップは、リストアにも増分バックアップの取得基準としても使用できません。

バックアップカタログの情報確認

取得したバックアップは show コマンドにて確認できます。

$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-28 12:13:24  2023-11-28 12:13:26  FULL   375MB     1  OK
2023-11-28 12:13:15  2023-11-28 12:13:17  INCR    33MB     1  OK
2023-11-28 12:12:48  2023-11-28 12:12:50  INCR    33MB     1  OK
2023-11-28 12:12:36  2023-11-28 12:12:38  INCR    33MB     1  OK
2023-11-28 12:11:51  2023-11-28 12:12:00  FULL  3366MB     1  OK

show detail コマンドにて、各バックアップのより詳細な情報を一覧表示できます。

$ pg_rman show detail
======================================================================================================================
 StartTime           EndTime              Mode    Data  ArcLog  SrvLog   Total  Compressed  CurTLI  ParentTLI  Status
======================================================================================================================
2023-11-28 12:13:24  2023-11-28 12:13:26  FULL   369MB    67MB    66kB   375MB       false       1          0  OK
2023-11-28 12:13:15  2023-11-28 12:13:17  INCR   297kB    33MB    63kB    33MB       false       1          0  OK
2023-11-28 12:12:48  2023-11-28 12:12:50  INCR   297kB    33MB    60kB    33MB       false       1          0  OK
2023-11-28 12:12:36  2023-11-28 12:12:38  INCR   297kB    33MB    57kB    33MB       false       1          0  OK
2023-11-28 12:11:51  2023-11-28 12:12:00  FULL   369MB  3053MB  3909kB  3366MB       false       1          0  OK

ここで、表示される列の意味は以下の通りです。

個別のバックアップについての詳細な情報は、「Start」に表示される日付を show コマンドに指定することで表示できます。

$ pg_rman show '2023-11-28 12:14:03'
# configuration
BACKUP_MODE=FULL
FULL_BACKUP_ON_ERROR=false
WITH_SERVERLOG=true
COMPRESS_DATA=false
# result
TIMELINEID=1
START_LSN=0/c2000028
STOP_LSN=0/c2000ee0
START_TIME='2023-11-28 12:14:03'
END_TIME='2023-11-28 12:14:05'
RECOVERY_XID=22719
RECOVERY_TIME='2023-11-28 12:14:05'
TOTAL_DATA_BYTES=369864268
READ_DATA_BYTES=369864034
READ_ARCLOG_BYTES=33554780
READ_SRVLOG_BYTES=68692
WRITE_BYTES=342403000
BLOCK_SIZE=8192
XLOG_BLOCK_SIZE=8192
STATUS=OK

リストア

取得した検証済みバックアップを用いて、必要なファイルをリストアします。

リストアを行う前に、PostgreSQL サーバを停止させる必要があります。

また、既存のデータベースクラスタは残しておいてください。 pg_rmanがリストアの際にタイムラインやデータチェックサム有無などの情報を読み取る必要があるためです。 pg_rmanがリストア中に未アーカイブの WAL をバックアップしつつ、その他のデータを削除します。 未アーカイブの WAL のバックアップは次に全体バックアップを取得するまで保持されるので、リカバリ結果が望んだものでなかった場合は再度リストアからやり直すことが可能です。

リストア時に、pg_rmanは、リカバリに関連する設定を行います。設定先のファイルは、PostgreSQLのバージョン、 及び、pg_rmanのバージョンに依存します。必要に応じてこのファイルを編集してから PostgreSQL を起動して、 PITR を実行してください。

# PostgreSQLが12よりも前の場合
$ cat $PGDATA/recovery.conf
# recovery.conf generated by pg_rman 1.2.11
restore_command = 'cp /home/postgres/arclog/%f %p'
recovery_target_timeline = '1'

# PostgreSQLが12以上、pg_rmanが1.3.12以下のバージョンの場合
$ tail -n 3 $PGDATA/postgresql.conf
# postgresql.conf generated by pg_rman 1.3.12
restore_command = 'cp /home/postgres/arclog/%f %p'
recovery_target_timeline = '1'

# PostgreSQLが12以上、pg_rmanが1.3.12よりも後のバージョンの場合
$ tail -n 1 $PGDATA/postgresql.conf
include = 'pg_rman_recovery.conf' # added by pg_rman 1.3.16
$ cat $PGDATA/pg_rman_recovery.conf
# added by pg_rman 1.3.16
restore_command = 'cp /home/postgres/arclog/%f %p'
recovery_target_timeline = '1'

リカバリ結果が確認できたら、速やかに全体バックアップを取得してください。また、pg_rmanが実施した recovery関連の設定を手動で削除することを推奨いたします。 PostgreSQLのバージョン12から、recovery.confがpostgresql.confにマージされたことに起因し、HAクラスタソフトと連携させて動作させた場合などに、 正常に動作しない可能性があるためです。一部のHAクラスタソフト(pacemaker)では、プライマリとして起動する場合でも、 必ず、初めにスタンバイとして起動します。そのため、予期せず、リカバリ関連の設定が有効に働いてしまい、正常に起動しない可能性があります。 例えば、PostgreSQLが12以上、pg_rmanが1.3.12よりも後のバージョンの場合は、$PGDATA/postgresql.confに追加されたincludeディレクティブと、 $PGDATA/pg_rman_recovery.confを削除してください。

--recovery-target-timeline を指定しなかった場合は、制御ファイル($PGDATA/global/pg_control) の最終チェックポイントタイムラインをターゲットとしてリストアします。 pg_control が存在しない場合は、リストアのベースとなる全体バックアップのタイムラインをターゲットとしてリストアします。

--recovery-target-timeを使用する場合、復元のベースとしたいバックアップ(FULL、INCR、ARCH)のEndTime以降の時刻をする必要があります。

バックアップ時にアーカイブWALを圧縮していない場合、アーカイブ格納領域に存在しないアーカイブWALはシンボリックリンクとして、リストアされます。本挙動を想定していない周辺ツール(ex. PG-REX)と組み合わせて利用する場合は、物理的にコピーを行うオプション(--hard-copy)を指定してください。

バックアップの削除

delete コマンドで日時を指定すると、そこまでのリカバリに不要なバックアップを削除できます。以下の例では、2015年3月27日の 14:59:00 時点にリカバリするのに不要なバックアップを削除しています。

$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-28 12:14:03  2023-11-28 12:14:05  FULL   342MB     1  OK
2023-11-28 12:13:56  2023-11-28 12:13:57  ARCH    16MB     1  OK
2023-11-28 12:13:52  2023-11-28 12:13:53  ARCH    16MB     1  OK
2023-11-28 12:13:24  2023-11-28 12:13:26  FULL   375MB     1  OK
2023-11-28 12:13:15  2023-11-28 12:13:17  INCR    33MB     1  OK
2023-11-28 12:12:48  2023-11-28 12:12:50  INCR    33MB     1  OK
2023-11-28 12:12:36  2023-11-28 12:12:38  INCR    33MB     1  OK
2023-11-28 12:11:51  2023-11-28 12:12:00  FULL  3366MB     1  OK

$ pg_rman delete 2023-11-28 12:13:30
WARNING: cannot delete backup with start time "2023-11-28 12:13:24"
DETAIL: This is the latest full backup necessary for successful recovery.
INFO: delete the backup with start time: "2023-11-28 12:13:15"
INFO: delete the backup with start time: "2023-11-28 12:12:48"
INFO: delete the backup with start time: "2023-11-28 12:12:36"
INFO: delete the backup with start time: "2023-11-28 12:11:51"
 
$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-28 12:14:03  2023-11-28 12:14:05  FULL   342MB     1  OK
2023-11-28 12:13:56  2023-11-28 12:13:57  ARCH    16MB     1  OK
2023-11-28 12:13:52  2023-11-28 12:13:53  ARCH    16MB     1  OK
2023-11-28 12:13:24  2023-11-28 12:13:26  FULL   375MB     1  OK

削除済みバックアップの消去

delete コマンドで削除したバックアップは、データ自体はファイルシステムから削除されますが、管理情報が残ります。これらの管理情報をファイルシステムから除外するには purge コマンドを実行してください。

$ pg_rman show -a
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-28 12:14:03  2023-11-28 12:14:05  FULL   342MB     1  OK
2023-11-28 12:13:56  2023-11-28 12:13:57  ARCH    16MB     1  OK
2023-11-28 12:13:52  2023-11-28 12:13:53  ARCH    16MB     1  OK
2023-11-28 12:13:24  2023-11-28 12:13:26  FULL   375MB     1  OK
2023-11-28 12:13:15  2023-11-28 12:13:17  INCR    33MB     1  DELETED
2023-11-28 12:12:48  2023-11-28 12:12:50  INCR    33MB     1  DELETED
2023-11-28 12:12:36  2023-11-28 12:12:38  INCR    33MB     1  DELETED
2023-11-28 12:11:51  2023-11-28 12:12:00  FULL  3366MB     1  DELETED

$ pg_rman purge
INFO: DELETED backup "2023-11-28 12:13:15" is purged
INFO: DELETED backup "2023-11-28 12:12:48" is purged
INFO: DELETED backup "2023-11-28 12:12:36" is purged
INFO: DELETED backup "2023-11-28 12:11:51" is purged

$ pg_rman show -a
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-28 12:14:03  2023-11-28 12:14:05  FULL   342MB     1  OK
2023-11-28 12:13:56  2023-11-28 12:13:57  ARCH    16MB     1  OK
2023-11-28 12:13:52  2023-11-28 12:13:53  ARCH    16MB     1  OK
2023-11-28 12:13:24  2023-11-28 12:13:26  FULL   375MB     1  OK

スタンバイサイトでのバックアップ

PostgreSQL 9.0 以降のレプリケーションを利用している場合、スタンバイサイトでもバックアップを取得することができます。 基本的な使用方法は、単体の PostgreSQL で利用する場合と同様なので、注意が必要な点のみ記述します。

スタンバイサイトでバックアップを取得する場合もアーカイブWALをバックアップ対象にする必要があります。 共有ディスクなどを用意し、マスタのアーカイブ領域をスタンバイからも参照できるような構成か、 archive_modeを 'always' として、スタンバイサイトでもアーカイブを出力するような構成にしてください。

後者の構成の場合は、スタンバイ構築時にプライマリに存在するアーカイブWAL(historyファイルを含む)を同期して、 リストアに必要なファイルを漏れなく、バックアップ出来るようにしてください。また、--keep-arclog-files / --keep-arclog-daysを 利用することでバックアップ時に古いアーカイブを削除することが可能ですが、バックアップ取得対象ではないアーカイブ領域は、 削除対象にならない点に注意してください。そのため、スタンバイサイトでバックアップを取得する場合は、本オプションを利用しても、 マスタの古いアーカイブを削除することはできません。

バックアップカタログの初期化時には、-D/--pgdata で、 スタンバイのデータベースクラスタへのパスを指定してください。

$ pg_rman init -B <バックアップカタログパス> -D <(スタンバイの)PostgreSQLのデータベースクラスタパス>

スタンバイサイトでのバックアップを行うためには、通常の pg_rman の利用方法と異なるオプションを指定する必要があります。 スタンバイサイトでバックアップを取得するには、-D/--pgdata オプションでスタンバイサイトの データベースクラスタを指定し、その他の接続オプション(-d/--dbname-h/--host-p/--port など)でマスタサイトの設定情報を指定します。 スタンバイ接続オプション (--standby-host--standby-port) でスタンバイサイトの設定情報を指定します。--standby-host--standby-port は両方とも指定する必要があります。

以下の環境において、スタンバイサイトからバックアップを取得する際のコマンド例を示します。

使用例

バックアップ対象のPostgreSQLが以下のような設定になっているとします。

postgres=# SHOW log_directory ;
 log_directory
---------------
 pg_log
(1 row)

postgres=# SHOW archive_command ;
              archive_command
--------------------------------------------
 cp %p /home/postgres/arc_log/%f
(1 row)

また、PostgreSQLのデータベースクラスタのパスを環境変数 PGDATA に、pg_rmanが管理するバックアップカタログのパスを環境変数 BACKUP_PATH に設定しておきます。 これによりpg_rmanの各コマンド実行時に毎回これらの値をオプションで指定する必要がなくなります。

$ echo $PGDATA
/home/postgres/pgdata
$ echo $BACKUP_PATH
/home/postgres/backup

バックアップカタログの初期化を行います

$ pg_rman init
INFO: ARCLOG_PATH is set to '/home/postgres/arclog'
INFO: SRVLOG_PATH is set to '/home/postgres/pgdata/pg_log'

バックアップカタログの初期化を行うと、BACKUP_PATH 配下にファイル pg_rman.ini が生成されます。 このファイルに記載したオプションは、各pg_rmanのコマンド実行時にデフォルトとして使用されるため、コマンドラインオプションにて指定する必要がなくなります。 一般的な運用では、ほぼ全てのパラメータは設定ファイルで指定し、バックアップモードのみをコマンドラインで与えることになるでしょう。 pg_rman.ini内で指定する際のオプション名については、パラメータの指定方法を参照してください。

今回は以下の様なオプション設定をデフォルトとして採用するとします。

$ cat $BACKUP_PATH/pg_rman.ini
ARCLOG_PATH = /home/postgres/arclog
SRVLOG_PATH = /home/postgres/pgdata/pg_log

BACKUP_MODE = F
COMPRESS_DATA = YES
KEEP_ARCLOG_FILES = 10
KEEP_DATA_GENERATIONS = 3
KEEP_SRVLOG_FILES = 10

バックアップを行います。 まずはデータベース全体のバックアップを取得します。 今回は合わせてサーバログもバックアップするとします。

$ pg_rman backup --backup-mode=full --with-serverlog --progress
INFO: copying database files
Processed 2049 of 2049 files, skipped 0
INFO: copying archived WAL files
Processed 21 of 21 files, skipped 0
INFO: copying server log files
Processed 10 of 10 files, skipped 0
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 10)
INFO: delete "0000000300000000000000E2"
INFO: delete "0000000300000000000000E2.00000028.backup"
INFO: delete "0000000300000000000000E1"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10)
INFO: start deleting old backup (keep generations = 3)
INFO: does not include the backup just taken
$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-29 16:04:17  2023-11-29 16:04:26  FULL    50MB     5  DONE

Status列の値がDONEになっているのは、バックアップ取得は完了したが、検証を実施していないためです。 validate コマンドを実行して、上記で取得したバックアップの検証を行います。

$ pg_rman validate
INFO: validate: "2023-11-29 16:04:17" backup, archive log files and server log files by CRC
INFO: backup "2023-11-29 16:04:17" is valid

$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status
=====================================================================
2023-11-29 16:04:17  2023-11-29 16:04:26  FULL    50MB     5  OK

検証が成功したため、showコマンドの出力結果にてStatus列の値がOKになっています。

現在のデータベースを破棄し、バックアップからリストアします。

$ pg_ctl stop -m immediate
$ pg_rman restore

リストア完了後にpg_rmanが生成した設定内容を確認し、必要に応じて修正を行います。 今回の場合は、最新の状態までリカバリするため特に修正せず、そのままPostgreSQLを起動してPITRを実施させます。

$ cat $PGDATA/pg_rman_recovery.conf
# added by pg_rman 1.3.16
restore_command = 'cp /dbfp/pgarch/arc1/%f %p'
recovery_target_timeline = '4'
$ pg_ctl start

オプション

pg_rman では、下記のコマンドライン引数を指定できます。一部のオプションは環境変数でも指定できます。詳細はパラメータの指定方法を参照してください。

共通オプション

データの場所に関するパスは、絶対パスで指定する必要があります。

バックアップ・オプション

リストア・オプション

––recovery で始まる変数は、PostgreSQLのリカバリターゲットのパラメータに対応します。

以下は、リストア時の挙動に関連するパラメータです。

カタログ・オプション

接続オプション

PostgreSQLに接続するためのパラメータです。

スタンバイ接続オプション

スタンバイサイトの PostgreSQL に接続するためのパラメータです。 スタンバイサイトからバックアップを取得する際のみに使用します。

一般オプション

パラメータの指定方法

pg_rman では、一部の設定項目は、環境変数や設定ファイルでも指定できます。コマンドラインオプション、環境変数、設定ファイル項目の対応関係は以下の表の通りです。

短形式 長形式 環境変数 設定ファイル 意味 備考
-h –host PGHOST データベースホスト名およびソケットディレクトリ名
-p –port PGPORT データベースポート番号
-d –dbname PGDATABASE データベース名
-U –username PGUSER データベースユーザ名
PGPASSWORD データベースパスワード
-w –no-password データベースパスワード入力プロンプトを出さない
-W –password データベースパスワード入力の強制
-D –pgdata PGDATA 指定可 データベースクラスタのパス
-B –backup-path BACKUP_PATH 指定可 バックアップカタログのパス
-A –arclog-path ARCLOG_PATH 指定可 WALアーカイブ先のパス
-S –srvlog-path SRVLOG_PATH 指定可 サーバログディレクトリのパス
-b –backup-mode BACKUP_MODE 指定可 バックアップ対象 (full, incremental, or archive)
-s –with-serverlog WITH_SERVERLOG 指定可 サーバログを共にバックアップ 環境変数、設定ファイルにはboolean型で指定
-Z –compress-data COMPRESS_DATA 指定可 データ圧縮あり 環境変数、設定ファイルにはboolean型で指定
-C –smooth-checkpoint SMOOTH_CHECKPOINT 指定可 平滑化チェックポイント 環境変数、設定ファイルにはboolean型で指定
–standby-host STANDBY_HOST 指定可 スタンバイサイトのホスト名
–standby-port STANDBY_PORT 指定可 スタンバイサイトのポート番号
–keep-data-generations KEEP_DATA_GENERATIONS 指定可 データベースバックアップの保存世代数
–keep-data-days KEEP_DATA_DAYS 指定可 データベースバックアップの保存日数
–keep-srvlog-files KEEP_SRVLOG_FILES 指定可 サーバログの保存ファイル数
–keep-srvlog-days KEEP_SRVLOG_DAYS 指定可 サーバログの保存日数
–keep-arclog-files KEEP_ARCLOG_FILES 指定可 アーカイブ WAL の保存ファイル数
–keep-arclog-days KEEP_ARCLOG_DAYS 指定可 アーカイブ WAL の保存日数
–recovery-target-timeline RECOVERY_TARGET_TIMELINE 指定可 リカバリ到達点のタイムライン ID
–recovery-target-xid RECOVERY_TARGET_XID 指定可 リカバリ到達点のトランザクション ID
–recovery-target-time RECOVERY_TARGET_TIME 指定可 リカバリ到達点のタイムスタンプ
–recovery-target-inclusive RECOVERY_TARGET_INCLUSIVE 指定可 リカバリ到達点自体をリカバリするか
–recovery-target-action RECOVERY_TARGET_ACTION 指定可 リカバリ対象に到達した場合にサーバがする動作 1.3.12よりも後のバージョンで利用可能
–hard-copy HARD_COPY 指定可 アーカイブWALのリストア方法 環境変数、設定ファイルにはboolean型で指定

また、このユーティリティは、他のほとんどの PostgreSQL ユーティリティと同様、 libpq でサポートされる環境変数を使用します。詳細については、環境変数の項目を参照してください。

使用上の注意と制約

pg_rman を使用する際には、以下の使用上の注意と制約があります。

スタンバイサイトでのバックアップ取得の際には、以下の制約事項があります。

ストレージ・スナップショットを利用する際には、以下の制約事項があります。

詳細

Recovery to Point-in-Time

pg_rman では、タイムラインやトランザクション ID、タイムスタンプでリカバリ到達点を指定することにより、任意の時点の状態にデータベースをリカバリすることができます。正確なリカバリ到達点を決定するには、pg_xlogdump(9.3~) / xlogdump (~9.2) などのツールで WAL に書かれているトランザクション内容を確認してください。タイムラインやリカバリ到達点の詳細については継続的アーカイブとポイントインタイムリカバリ(PITR)を参照してください。

設定ファイルには「設定項目=設定値」の書式でパラメータを指定します。指定可能な項目は パラメータの指定方法 を参照してください。設定値に空白を含む場合はシングルクォートで囲んでください。設定ファイル内の “#” 以降はコメントとして無視されます。また、設定値以外の空白及びタブは無視されます。

プログラム終了コード

pg_rman ではエラーの種別ごとに異なるプログラム終了コードを返します。

コード 名前 意味
0 SUCCESS 正常に終了しました。
1 HELP ヘルプを表示し、終了しました。
2 ERROR 未分類のエラーです。
3 FATAL エラーが再帰的に発生し強制終了しました。
4 PANIC 未知の致命的エラーです。
10 ERROR_SYSTEM I/O またはシステムエラーです。
11 ERROR_NOMEM メモリ不足です。
12 ERROR_ARGS 入力パラメータが不正です。
13 ERROR_INTERRUPTED シグナルにより中断されました。(Ctrl+C 等)
14 ERROR_PG_COMMAND PostgreSQL サーバへ発行したSQLが失敗しました。
15 ERROR_PG_CONNECT PostgreSQL サーバに接続できません。
20 ERROR_ARCHIVE_FAILED WAL アーカイブに失敗しました。
21 ERROR_NO_BACKUP バックアップが見つかりません。
22 ERROR_CORRUPTED バックアップが破損しています。
23 ERROR_ALREADY_RUNNING 他の pg_rman が実行中です。
24 ERROR_PG_INCOMPATIBLE PostgreSQL サーバとの互換性がありません。
25 ERROR_PG_RUNNING PostgreSQL サーバが起動中のためリストアできません。
26 ERROR_PID_BROKEN postmaster.pid ファイルが破損しています。

外部スクリプトとの連携

ストレージ・スナップショット利用時にスナップショットの取得とファイルシステムへのマウントを行うスクリプトです。外部スクリプトを追加する場合は、外部スクリプトの各インタフェースをストレージのマニュアル等を参考に実装します。実装すべき内容は インタフェース仕様 を参照してください。

コマンド仕様

$ </samp><kbd>${BACKUP_PATH}/snapshot_script { split | resync | mount | umount | freeze | unfreeze } [cleanup]

インタフェース仕様

LVM(Logical Volume Manager)向けの外部スクリプト(サンプル)の処理内容

ダウンロード

pg_rmanのソースコード、もしくはRPMはここからダウンロードできます。


インストール方法

pg_rman のインストールは、標準の contrib モジュールと同様です。

データベースへの登録は不要です。

ソースコードからのインストール

pgxs を使ってビルドできます。

$ cd pg_rman
$ make
$ make install

RPMを用いたインストール

利用環境でのOSのバージョンとPostgreSQLのバージョンに合わせたRPMをダウンロードし、インストールしてください。

# rpm -ivh pg_rman-x.x.xx-x.pgxx.rhelx.x86_64.rpm

動作環境

PostgreSQLバージョン
PostgreSQL 12, 13, 14, 15, 16
OS
RHEL 7, 8, 9

関連項目

バックアップとリストア