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経由で同期させる予定。