Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

やっぱりダメかぁ

先日の件で、TBいただきました。ありがとうございます:-)


もうリカバリは終わってしまっているので、ダメなんじゃないでしょうか。再び待機させたいのであればバックアップしたtarファイルからやり直しだと思います。

もうちょい詳しく書くと、pg_start_backup()すると自分のデータディレクトリの中にちょっと細工をするわけです。で、スタンバイ側のはその細工を見て、「お、standbyモードで立ち上げっか」となるわけです。

ちなみにファイル名が00000002...になるのはタイムラインというやつです。

そうそう。このキーワードが欲しかった。「タイムライン/timeline」で調べてみると、日本語マニュアルでは「時系列」と訳されているようです。また、PostgreSQL 8 PITR Guide(pdf)がPITRについてよくまとまっていて、p.11にある図でタイムラインを説明していました。で、これらを読んでみると、

  • タイムラインは複雑なリカバリを実現するために用意されている
  • リカバリが終わった時点で新しいタイムラインになる

ので、一度スタンバイ状態を解除(=リカバリ終了)すると、再度スタンバイ状態に戻すにはバックアップから戻すしかなさそうですね。


いや。間違ってトリガーファイルをtouchしちゃったとか、意図せずにスタンバイ状態を解除した場合ってどうなるんだろ?ってことでやってみました。「間違ってtouchできちゃう環境が間違ってる」のは分かってるんですが。。。