postgresqlが開始できない

postgresqlが開始できない

当初はマスタ-スレイブとして設計していたスレイブ側のPostgresql。スレイブを別のところに移して、その後結構長い時間放置していました。今朝起動してみると当然ながらマスタとのwalセグメントがかなりかけ離れてしまっていて、起動できません。ログにはこんな感じ。

cp: `/var/lib/pgsql/wal/00000001000000EE0000009A' を stat できません: そのようなファイルやディレクトリはありません
cp: `/var/lib/pgsql/wal/00000001000000EE0000009B' を stat できません: そのようなファイルやディレクトリはありません
<[2019-06-04 11:02:44.018 JST]   13011[1]> LOG:  プライマリのタイムライン1の EE/9A000000からでWALストリーミングを 始めます
<[2019-06-04 11:02:44.019 JST]   13011[2]> FATAL:  WAL ストリームからデータを受信できませんでした: ERROR:  要求さ れた WAL セグメント 00000001000000EE0000009A はすでに削除されています

で対処。

マスタとして設定

といってもこいつにはスレイブはいないので、通常の単独DBとして稼働ってことです。

walディレクトリのリモートマウントを解除

当初設計のマスタからwalファイルをリモートマウントでもらっていました。このリモートマウントポイントを解除。

# umount /var/lib/pgsql/wal

同時に/etc/fstabのマウント指定しているところも削除。

postgresql.conf

hot-standbyの行をコメントアウト。他walに関するところも要らないんだけどあっても問題なし。

recovery.conf

要らないので削除。__recovery.confって名前に変更しておきました。

ログをリセット

以下の通り。

# pg_resetxlog -f /var/lib/pgsql/9.6/data

とりあえずこれでDBは起動できて、古いけどその当時のDBは参照できるようになりました。一旦けして、pg_dump経由で同期させる予定。