PostgresForest - オンラインリカバリツール

目次

1   はじめに

1.1   対象読者

このドキュメントは、PostgresForestの接続対象となっているDBサーバの環境構築および運用を行う者を対象としています。 また、読者はRDBMS(PostgreSQL)の管理やOS(Linux)に関する一般的な知識を保持することを前提としています。

1.2   表記について

このマニュアルの本文およびコード例で使用されている表記規則について説明します。

1.2.1   本文の表記規則

本文では、特定の項目が一目でわかるように、次の表記規則を使用しています。

固定幅フォント

コマンド、パラメータ、プログラムコード、SQLキーワード、 ファイル名などのシステム要素や、 画面出力などの入出力を表現するもの全ては、 固定幅フォントを使用します。 プログラム要素には、 大文字と小文字を組み合せて使用するものもありますが、 この場合は記載されているとおりに入力してください。

イタリック

イタリック (斜体)は、実際の値と置き換えられるプレースホルダまたは変数を示します。

1.2.2   コマンドの表記規則

コマンドの書式については、以下の規則を使用します。

大括弧( [ および ] )

オプションである部分を示します。

中括弧 ( { および } ) と縦線 ( | )

いずれか1つを選択しなければならないことを意味します。

点々 ( ... )

前にある要素が繰り返されるという意味です。

分かりやすさのために、

  • シェルコマンドの前には 「 $#
  • psqlで実行するSQLコマンドの前には 「 データベース名 =#

などのプロンプトを付ける場合があります。

1.3   動作環境

1.3.1   対応プラットホーム

オンラインリカバリツールが正常に動作することを確認した構成を以下に示します。

OS RedHat Enterprise Linux 5 Update 1 (x86 32bit)
PostgreSQL 8.3.1 (./configure --prefix= PREFIX )
PostgresForest 5.1.0

2   オンラインリカバリツールの概要

PostgresForestにより冗長化された構成において、 ソフトウェアやハードウェアの障害により、DBサーバが縮退してAPサーバから切り離されることがあります。 縮退後、システムは1台のDBサーバのみで稼動しており、さらなる障害に備えて冗長された構成に復旧する必要があります。

このツールを用いることにより、 現在稼働中のDBサーバにできる限り影響を与えることなく、 縮退した原因を取り除いたサーバ(もしくは事前に準備されていたサーバ)を稼動状態に復旧することができます。

ただし、DBクラスタ内に複数のUDBが存在しており、 一部のUDBのみが縮退していたとしても、DBクラスタ全体が復旧対象となります。 そのため、このツールを利用する上では、 事前に縮退したDBサーバ上のインスタンスを手動で停止し、 縮退したDBサーバ上にある稼働中のUDBを縮退状態とする必要があります。

2.1   パッケージ構成

PGHARecovery.sh:
 オンラインリカバリツール本体
pgha_recovery.conf:
 scpによるオンラインリカバリ設定ファイルのサンプル(両系の postgresql.conf が同じ場合)
pgha_recovery_rsync.conf:
 rsyncによるオンラインリカバリ設定ファイルのサンプル(両系の postgresql.conf が異なる場合)
pgha_recovery_scp.conf:
 scpによるオンラインリカバリ設定ファイルのサンプル(両系の postgresql.conf が異なる場合)
recovery_util.sh:
 pgha_recovery_rsync.conf および pgha_recovery_scp.conf を利用する場合に必要となるサンプルスクリプト

2.2   説明上の構成例

以降の説明では、次の構成により構成されたDBサーバを元に説明します。

ホスト名 IPアドレス UDB1の状態 UDB2の状態
db_active 192.168.1.101 稼働中(1) 稼働中(1)
db_fault 192.168.1.102 縮退中(-1) 稼働中(1)

構成としては、db_activeとdb_faultの2ノードにより冗長化されたDBサーバが存在し、 各々2つのユーザDB(UDB1、UDB2)を保持しています。 しかし、PostgresForestがdb_faultのUDB1に対する処理を行う中で、 何らかの障害を検知して、db_fault上のUDB1を縮退状態となっている状態です。

3   実行環境の構築

3.1   前提条件

オンラインリカバリツールを動作させるための前提条件を以下に示します。

  • 稼働中および復旧対象のDBサーバの構成(ディレクトリ構成)が同じであること。
  • 稼働中のDBサーバのWALアーカイブが有効( archive_modeon )であること。
  • 冗長構成のDBサーバに対して、相互にログイン可能(復旧対象から稼働中のDBサーバ、稼働中から復旧対象のDBサーバへ接続できる)なスーパーユーザが定義されていること。
  • 復旧対象のDBサーバにおいて、PostgreSQLがインストール済みであること。
  • 復旧対象のDBサーバにおいて、 initdb コマンドにより作成可能なDBクラスタが作成されていないこと。
  • PostgreSQL対話的ターミナル( psql ファイル)が PREFIX /bin/psql に配置されていること。
  • 復旧コマンドファイルのサンプル( recovery.conf.sample ファイル)が *PREFIX* /share/recovery.conf.sample に存在し、デフォルトのままであること。
  • サーバ構成ファイル( postgresql.conf )が DBCLUSTERDIR /postgresql.conf に配置されていること。
  • PIDファイル( postmaster.pid )が DBCLUSTERDIR /postmaster.pid に配置されていること。
  • postmaster.pid ファイルがDBクラスタディレクトリ内に存在すること。
  • PostgreSQLの実行ユーザがログイン可能であり、ホームディレクトリが存在すること。
  • WALアーカイブモードでトランザクションログの保管をしている場合、保管後のログファイルのサイズが16MByteであること。(圧縮などによりファイルサイズの異なる保管方法をしていないこと)
  • 稼働中のDBサーバと復旧対象のDBサーバ間でファイル転送を行う手段をFTP、SCP、NFSなどにより確立されていること。
  • 稼働中のDBサーバから復旧対象のDBサーバ上のPostgreSQLインスタンスを起動する手段をTELNET、SSH、RSHなどにより確立されていること。
PREFIX
PostgreSQLのインストールディレクトリの絶対パスを示す。
DBCLUSTERDIR
DBクラスタが作成されたディレクトリの絶対パスを示す。

3.2   構築の手順

3.2.1   オンラインリカバリ構成ファイル( pgha_recovery.conf )の作成

pgha_recovery.conf.sample を元に、各種パラメータを環境に合わせて設定します。 すべての設定が完了したら、PostgreSQLインスタンスの起動ユーザが読み込み可能なファイルパスに配置します。

なお、

3.2.1.1   物理構成設定

pg_dir

PostgreSQLのインストールディレクトリを絶対パスで指定します。

設定例
pg_dir='/home/postgres/app/pgsql-8.3.1'
dbcluster_dir

DBクラスタを作成したディレクトリを絶対パスで指定します。

設定例
dbcluster_dir='/home/postgres/data/dbcluster-8.3.1'
archivexlog_dir

WALアーカイブ先となるディレクトリを絶対パスで指定します。 すでにWALアーカイブモードでトランザクションログの保管をしている場合は、 その保管先のディレクトリとなります。

設定例
archivexlog_dir='/home/postgres/data/dbcluster-8.3.1/pg_archive'

3.2.1.2   接続設定

pg_user

冗長構成の両DBサーバにログインするスーパーユーザを指定します。

設定例
pg_user='postgres'
pg_db

上記のスーパーユーザが接続する際に使用するデータベース名を指定します。 復旧対象のDBクラスタ内に存在する任意のデータベース名で十分であり、基本的に設定例から変更する必要はありません。

設定例
pg_db='template1'
pg_port

上記のスーパーユーザが接続する際に使用するポート番号を指定します。 復旧対象のDBクラスタを構成している postgresql.conf 内の接続設定 port の設定値と同値になります。

設定例
pg_port='5432'
src_pg_host

リストア元となるデータベースサーバのIPアドレスを指定します。 サーバが複数のIPアドレスを保持する場合は、管理情報データベースの作成時に指定したIPアドレスとしてください。

設定例
host_pg_from="192.168.1.101"
dst_pg_host

リストア先となるデータベースサーバのIPアドレスを指定します。 サーバが複数のIPアドレスを保持する場合は、管理情報データベースの作成時に指定したIPアドレスとしてください。

設定例
host_pg_dest="192.168.1.102"

3.2.1.3   DBサーバ構成設定

archive_command

オンラインリカバリ中に再設定されるWAL格納設定 archive_command を指定します。 すでにWALアーカイブモードでトランザクションログの保管をしている場合は、WAL格納設定 archive_command の設定値と同値となります。

設定例
archive_command='cp %p /home/postgres/data/dbcluster-8.3.1/pg_archive/%f'
restore_command

復旧対象のサーバに対して、オンラインリカバリ実行中に発生したトランザクションログを適用する際に使用する 保管済みセグメントを取り出すために実行するシェルコマンド restore_command を指定します。 (http://www.postgresql.jp/document/pg831doc/html/continuous-archiving.html#RECOVERY-CONFIG-SETTINGS)

設定例
restore_command='cp /home/postgres/data/dbcluster-8.3.1/pg_archive/%f %p'

3.2.1.4   待ち時間設定

idle_wait_timeout

全てのUDBの状態を待ち状態(0)とし、PostgresForestからの問い合わせを抑制した後、活動中のトランザクションが存在しなくなるまでの最大待ち時間[sec]を指定します。 正確には、UDBの状態更新した後、「PostgresForestの管理情報更新間隔の最大値 + この設定値」を超えても活動中のトランザクションが存在する場合、タイムアウトとなります。

設定例
idle_wait_timeout=60
archive_wait_timeout

オンラインリカバリ実行中に保管される最後のトランザクションログ(pg_stop_backup()実行後の保管されるトランザクションログ)が正常に格納されるまでの最大待ち時間[sec]を指定します。

設定例
archive_wait_timeout=60

3.2.1.5   ファイル転送設定

base_recovery_command

稼働中のDBサーバから復旧対象のDBサーバに対して、DBクラスタディレクトリを転送する際に使用するコマンドを指定します。 転送完了後にコマンドが終了する必要があり、コマンドの返り値は転送に成功した場合が0、それ以外の場合は0以外である必要があります。 一般的に、DBクラスタのファイルサイズに比例した時間が実行時間と考えられ、ベースリカバリフェーズの所用時間に影響します。

設定例
base_recovery_command='/usr/bin/scp -24Bq -r /home/postgres/data/dbcluster-8.3.1 postgres@db_fault:/home/postgres/data'
sync_recovery_command

稼働中のDBサーバから復旧対象のDBサーバに対して、保管されたトランザクションログを転送する際に使用するコマンドを指定します。 転送完了後にコマンドが終了する必要があり、コマンドの返り値は転送に成功した場合が0、それ以外の場合は0以外である必要があります。 一般的に、 DBクラスタのファイルサイズおよびDBの更新頻度に比例した時間が実行時間と考えられ、差分リカバリフェーズの所要時間に影響します。

設定例
sync_recovery_command='/usr/bin/scp -24Bq -r /home/postgres/data/dbcluster-8.3.1/pg_archive postgres@db_fault:/home/postgres/data/dbcluster-8.3.1'

3.2.1.6   復旧実行設定

instance_startup_command

稼働中のDBサーバから、復旧対象のPostgreSQLインスタンスを起動するコマンドを指定します。 起動完了後にコマンドが終了する必要があり、コマンドの返り値は起動に成功した場合が0、それ以外の場合は0以外である必要があります。

設定例
instance_startup_command='/usr/bin/ssh -24q postgres@db_fault /home/postgres/app/pgsql-8.3.1/bin/pg_ctl start -w -t 180 -D /home/postgres/data/dbcluster-8.3.1 -l /home/postgres/data/postmaster.log'

4   実行の流れ

オンラインリカバリツールのコマンドは稼働中のDBサーバにおいて、PostgreSQLインスタンスの起動ユーザで実行します。 前述の構成の場合、db_activeにて実行することになります。

4.1   パスワードファイル( .pgpass )の作成

稼働中および復旧対象のDBサーバにおけるPostgreSQL実行ユーザのホームディレクトリ内に .pgpass ファイル(http://www.postgresql.jp/document/pg831doc/html/libpq-pgpass.html)を作成します。 内容としては、``psql`` コマンドにより稼働中および復旧対象のDBサーバにログイン可能なスーパーユーザーを記載します。 ただし、UNIXドメインソケットによるアクセスも行いますので、localhostに対するパスワードも記述してください。

前述の構成における記載例を以下に示します。

localhost:5432:*:postgres:pw_postgres
192.168.1.101:5432:*:postgres:pw_postgres
192.168.1.102:5432:*:postgres:pw_postgres
運用時に .pgpass を利用されている場合
元の設定項目を保持したまま不足している項目を追記する必要があります。変更前の .pgpass ファイルをコピーしてバックアップしておくことをお勧めします。

4.2   復旧対象のPostgreSQLインスタンスに含まれるUDBの状態変更

稼働中の管理DBの状態を更新して、 すでに停止している復旧対象のPostgreSQLに含まれる UDB で稼働中のものが存在すれば、すべて縮退中とする。

前述の構成では db_fault サーバに含まれる UDB2 を縮退中に更新する。

4.3   一括実行

設定ファイルが妥当であることを確認後、以下のコマンドを実行します。 また、ベースリカバリフェーズから個別のフェーズを順次実行してもリカバリは可能です。

postgres $ ./PGHARecovery.sh -all pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。 復旧対象のDBサーバで運用状態復旧フェーズを実行してください。

execute -cleanup for recovery node

4.4   フェーズごとの実行

4.4.1   ベースリカバリフェーズ

稼働中のDBサーバにPostgreSQLインスタンスの起動ユーザでログインし、以下のコマンドを実行します。

postgres $ ./PGHARecovery.sh -base pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。

online recovery (base) successful

4.4.2   トランザクション閉塞フェーズ

稼働中のDBサーバにPostgreSQLインスタンスの起動ユーザでログインし、以下のコマンドを実行します。 APから発行されるトランザクションはJDBCドライバ内で待ち状態となり、 トランザクション開放フェーズが完了した後、トランザクションが再開されます。

postgres $ ./PGHARecovery.sh -closevm pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。

online recovery (closevm) successful

4.4.3   差分リカバリフェーズ

稼働中のDBサーバにPostgreSQLインスタンスの起動ユーザでログインし、以下のコマンドを実行します。

postgres $ ./PGHARecovery.sh -sync pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。

online recovery (sync) successful

4.4.4   復旧対象起動フェーズ

稼働中のDBサーバにPostgreSQLインスタンスの起動ユーザでログインし、以下のコマンドを実行します。

postgres $ ./PGHARecovery.sh -recovery pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。

online recovery (recovery) successful

4.4.5   トランザクション開放フェーズ

稼働中のDBサーバにPostgreSQLインスタンスの起動ユーザでログインし、以下のコマンドを実行します。

postgres $ ./PGHARecovery.sh -openvm pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。

online recovery (openvm) started

4.4.6   運用状態復旧フェーズ

稼働中および復旧対象のDBサーバにPostgreSQLインスタンスの起動ユーザでログインし、以下のコマンドを実行します。

postgres $ ./PGHARecovery.sh -cleanup pgha_recovery.confのファイルパス

以下のメッセージが表示されれば、正常に終了しています。

online recovery (cleanup) successful

4.5   パスワードファイル( .pgpass )の削除

セキュリティ上の問題が考えられるため、開始時に設置した .pgpass ファイルを削除します。

運用時に .pgpass を利用されている場合
追記した項目を削除して、変更前の .pgpass ファイルに戻します。

5   こんなときには

5.1   オンラインリカバリと中断したい場合

以下のコマンドを実行後、復旧対象のPostgreSQLインスタンスが起動している場合は停止してください。

postgres $ ./PGHARecovery.sh -cancel pgha_recovery.confのファイルパス

ただし、復旧対象のPostgreSQLインスタンスに含まれるUDBはすべて縮退状態となります。

5.2   エラーメッセージと対策方法

実行中に出力される可能性のあるエラーメッセージおよび対処方法について、記載します。

file not found

引数に指定したオンラインリカバリ構成ファイルパス上にファイルにアクセスできなかった場合に出力されます。

ツールの実行ユーザがアクセス可能なファイルパスにオンラインリカバリ構成ファイルを設置して、異常終了したフェーズを再実行してください。

発生する可能性のあるフェーズ
全フェーズ
online recovery (base) failed

ベースリカバリフェーズが正常終了しなかった場合に出力されます。

他の出力メッセージを元に障害箇所を特定し、障害に基づいた対処方法を実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ
online recovery (closevm) failed

トランザクション閉塞フェーズが正常終了しなかった場合に出力されます。

他の出力メッセージを元に障害箇所を特定し、障害に基づいた対処方法を実行してください。

発生する可能性のあるフェーズ
トランザクション閉塞フェーズ
online recovery (sync) failed

何らかの原因により差分リカバリフェーズが正常終了しなかった場合に出力されます。

他の出力メッセージを元に障害箇所を特定し、障害に基づいた対処方法を実行してください。

発生する可能性のあるフェーズ
差分リカバリフェーズ
online recovery (recovery) failed

何らかの原因により復旧対象起動フェーズが正常終了しなかった場合に出力されます。

他の出力メッセージを元に障害箇所を特定し、障害に基づいた対処方法を実行してください。

発生する可能性のあるフェーズ
復旧対象起動フェーズ
online recovery (openvm) failed

何らかの原因によりトランザクション開放フェーズが正常終了しなかった場合に出力されます。

他の出力メッセージを元に障害箇所を特定し、障害に基づいた対処方法を実行してください。

発生する可能性のあるフェーズ
トランザクション開放フェーズ
online recovery (cleanup) failed

何らかの原因により運用状態復旧フェーズが正常終了しなかった場合に出力されます。

他の出力メッセージを元に障害箇所を特定し、障害に基づいた対処方法を実行してください。

発生する可能性のあるフェーズ
運用状態復旧フェーズ
failed to execute base_recovery_command

稼働中のDBサーバから復旧対象のDBサーバへのファイル転送コマンドが正常終了しなかった場合に出力されます。

base_recovery_command で指定されたコマンドが正常終了しなかった原因を取り除き、ベースリカバリフェーズを実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ
failed to execute sync_recovery_command

稼働中のDBサーバから復旧対象のDBサーバへのファイル転送コマンドが正常終了しなかった場合に出力されます。

sync_recovery_command で指定されたコマンドが正常終了しなかった原因を取り除き、差分バックアップフェーズを実行してください。

発生する可能性のあるフェーズ
差分バックアップフェーズ
failed to execute instance_startup_command

稼働中のDBサーバで実行された復旧対象のPostgreSQLインスタンスを起動するコマンドが正常終了しなかった場合に出力されます。

instance_startup_command で指定されたコマンドが正常終了しなかった原因を取り除き、復旧対象起動フェーズを実行してください。

発生する可能性のあるフェーズ
復旧対象起動フェーズ
failed to execute pg_start_backup()

稼働中のDBサーバにおいて、ベースバックアップの開始が正常終了しなかった場合に出力されます。

WALアーカイブモードでトランザクションログの保管をしており、定期的にPostgreSQLのオンラインバックアップを実施している場合はその時間帯と重複していないかどうか、ご確認ください。 失敗した原因を取り除いた後、ベースリカバリフェーズを再実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ
failed to execute pg_stop_backup()

稼働中のDBサーバにおいて、ベースバックアップの終了が正常終了しなかった場合に出力されます。

WALアーカイブモードでトランザクションログの保管をしており、定期的にPostgreSQLのオンラインバックアップを実施している場合はその時間帯と重複していないかどうか、ご確認ください。 失敗した原因を取り除いた後、差分バックアップフェーズを再実行してください。

発生する可能性のあるフェーズ
差分バックアップフェーズ
timeout. there is busy transaction(s)

idle_wait_timeout で設定された時間が経過したにも関わらず、活動中のトランザクションが存在する場合に出力されます。

その場合、統計情報コレクタの情報( pg_stat_activity ビューなど)から活動中のトランザクションを特定する必要があります。 DBサーバに対する新たなトランザクションがJDBC側で待ち状態となっているため、活動が長時間続くことが想定される場合は、 差分バックアップフェーズ、トランザクション開放フェーズ、サーバ再設定フェーズ(稼動中のみ)の順で実行し、別の時間帯にオンラインリカバリツールを実行してください。 一方、短時間で活動中のトランザクションが終了する場合は再度トランザクション閉塞フェーズを実行してください。

発生する可能性のあるフェーズ
トランザクション閉塞フェーズ
timeout. wal file is not archived.

保管されるべきトランザクションログ(pg_stop_backup()実行後の保管されるトランザクションログ)が archive_wait_timeout で指定された時間内に生成されなかった場合に出力されます。

稼働中のDBサーバのディスク空き容量を確認し、``stop wal location`` メッセージにて出力されたファイルが archivexlog_dir ディレクトリ内に生成されていないかどうか、確認してください。 もし生成されていることを確認できたら、差分バックアップフェーズを再実行してください。

発生する可能性のあるフェーズ
差分リカバリフェーズ
failed to kill SIGHUP process

PostgreSQLインスタンスのサーバ構成を再設定できなかった場合に出力されます。

実行ユーザとPostgreSQLインスタンスの起動ユーザが一致しているかどうか、ご確認ください。 失敗した原因を取り除いた後、ベースリカバリフェーズを再実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ、運用状態復旧フェーズ
failed to execute checkpoint

稼働中のDBサーバに対して、CHECKPOINTが実行できなかった場合に出力されます。

pgha_recovery.conf の設定項目 pg_userpg_dbpg_port が適切であるかどうか、ご確認ください。 また、 .pgpass の設定が適切であるかどうかもご確認ください。 失敗した原因を取り除いた後、ベースリカバリフェーズを再実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ
failed to copy file(s)

postgresql.conf を運用時設定への復旧に失敗した場合に出力されます。

ツールの実行ユーザとPostgreSQLインスタンスの起動ユーザが一致しているかどうか、ご確認ください。 失敗した原因を取り除いた後、運用状態復旧フェーズを再実行してください。

発生する可能性のあるフェーズ
運用状態復旧フェーズ
failed to remove file(s)

recovery.conf もしくは不要となったアーカイブWALファイルの削除に失敗した場合に出力されます。

ツールの実行ユーザとPostgreSQLインスタンスの起動ユーザが一致しているかどうか、ご確認ください。 失敗の原因が取り除かれたら、異常終了したフェーズを再実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ、運用状態復旧フェーズ
failed to configure file(s)

postgresql.confrecovery.conf の配置に失敗した場合に出力されます。

DBCLUSTERDIR /postgresql.conf.online が生成されているかどうか、 PREFIX /share/recovery.conf.sample が適切に配置されているかどうか、ご確認ください。 失敗した原因を取り除いた後、ベースリカバリフェーズを再実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ
failed to get pghainfo database name (%_pghainfo)

管理DBの一覧取得に失敗した場合に出力されます。

pgha_recovery.conf の設定項目 pg_userpg_dbpg_port が適切であるかどうか、ご確認ください。 また、 .pgpass の設定が適切であるかどうかもご確認ください。 失敗した原因を取り除いた後、異常終了したフェーズを再実行してください。

発生する可能性のあるフェーズ
トランザクション閉塞フェーズ、トランザクション開放フェーズ
failed to change server_info.udb_validity

管理DB内のUDB状態の変更に失敗した場合に出力されます。

pgha_recovery.conf の設定項目 pg_userpg_dbpg_port が適切であるかどうか、ご確認ください。 また、 .pgpass の設定が適切であるかどうかもご確認ください。 失敗した原因を取り除いた後、異常終了したフェーズを再実行してください。

発生する可能性のあるフェーズ
トランザクション閉塞フェーズ、トランザクション開放フェーズ
failed to load serverinfo_read_duration

JDBCによる管理DBの読み込み間隔の取得に失敗した場合に出力されます。

pgha_recovery.conf の設定項目 pg_userpg_dbpg_port が適切であるかどうか、ご確認ください。 また、 .pgpass の設定が適切であるかどうかもご確認ください。 失敗した原因を取り除いた後、トランザクション閉塞フェーズを再実行してください。

発生する可能性のあるフェーズ
トランザクション閉塞フェーズ
failed to execute env_check_command

予期せぬ環境で実行された場合に出力されます。

env_check_command で指定されたコマンドが正常終了しなかった原因を取り除き、異常終了したフェーズを再実行してください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ、トランザクション閉塞フェーズ、差分リカバリフェーズ、復旧対象起動フェーズ、トランザクション開放フェーズ
invalid file exist. (maybe forgot to execute this script with '-cleanup' or '-cancel' option)

何らかの原因により、不正なファイルが残っている場合に出力されます。

前回、正常に完了していない可能性があるため、どのフェーズまで処理が完了していたかご確認ください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ
invalid HA status. there are many master database instances.

複数のインスタンスが稼動しているUDBが存在する場合に出力されます。

本スクリプトを実行する上での前提条件をご確認ください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ、トランザクション閉塞フェーズ、差分リカバリフェーズ、復旧対象起動フェーズ、トランザクション開放フェーズ
invalid host. this database instance is not master.

実行しているサーバが稼働中でない場合に出力されます。

本スクリプトを実行する上での前提条件をご確認ください。

発生する可能性のあるフェーズ
ベースリカバリフェーズ、トランザクション閉塞フェーズ、差分リカバリフェーズ、復旧対象起動フェーズ、トランザクション開放フェーズ