Takehiro Matsushima
takeh****@gmail*****
2014年 2月 27日 (木) 02:26:05 JST
ひがしさん 松島です、お騒がせしております。 追試してみましたところ、完敗でした。 使用したのはコミュニティのリポジトリ版で、pm+corosyncです。 1. 最初からPostgreSQL 9.3.3を使って構成してみる→発生しない 2. PostgreSQL 9.3.3を消して(DBクラスタはそのまま)9.3.2にダウングレードしてみる→発生しない 3. PostgreSQL 9.3.2から9.3.3へアップグレードしてみる→発生しない 4. PostgreSQL 9.3.2でinitdbしてみる→発生しない 5. PostgreSQL 9.3.2から9.3.3へアップグレードしてみる→発生しない 6. PostgreSQL 9.3.1でinitdbしてみる→発生しない 7. PostgreSQL 9.3.2, 9.3.3へアップグレードしつつ確認→発生しない いずれもRDBへのデータ挿入等は行っておりませんので、そのせいかもしれません。 もしかしたらPostgreSQLでもpgsql RAでもなく、DBを使ってきた歴史の問題、ということになりそうです。 ちなみに家で動いていた(コミュニティリポジトリ版pm+corosync) PostgreSQL 9.3.2を 同様に9.3.3に上げたら再現しました(Moodleに使っていたDB)。 なお今回の実験で最初のSlave起動でpsqlでつなぎに行っても拒否されることはありませんでした。 連投になるかもしれませんが、会社のDBもinitdbし直してみて、また報告させていただきます。 2014年2月26日 21:02 Takehiro Matsushima <takeh****@gmail*****>: > ひがしさん > > お世話になっております、松島です。 > いつもありがとうございます。 > >> ただ、1度は起動、promoteに成功しているようなので、関数の仕様が変わった、 >> といった根本的な理由でもない気がします。 > > 最初に起動、promoteに成功したのはちょっと理解しがたいのですが... > psqlでSQLを実行する前に、そもそもリカバリ中に接続そのものを受け付けないように > 変更されたのが原因ではないかと思っております。 > (http://www.sraoss.co.jp/technology/postgresql/9.3.3/ の20番目) > > 件の状況時にpg_isreadyをたたいてみると、1が返ってきます(プロセス生存、接続拒否)。 > > >> 実は、PG9.3系には9.3.2まで以下の操作をするとPostgreSQLプロセスが異常停止する >> バグがあったようです。 >> これによりPG-REXはMaster側を正常停止→起動を何度かやると起動しなくなるという >> 挙動をしていました。(pgsql RAはstop_escalate=0の場合、即immediateでPGを停止するため。) > > PacemakerでPostgreSQLが100発100中で起動しないのは認識していましたが、これのせいでしたか。 > 正常停止から正常起動の手順をどうしたものかと思っていたのですが、 > >> が、9.3.3ではこれは治ったと聞いていました。 >> (http://www.sraoss.co.jp/technology/postgresql/9.3.3/ の18番目の修正) > > ということでしたらなおさら9.3.3を使いたいところではあります。 > > >> (1) PGを普通に起動(recovery.confなし) >> →正常起動 >> (2) immediateで停止(RAによる停止を模擬) >> (3) recovery.confを作り起動(RAによる起動を模擬) >> →Slaveとして正常起動 >> (4) promote(RAによる昇格処理を模擬) >> →正常にMasterに昇格 >> (5) immediateで停止(RAによる停止を模擬) >> (6) recovery.confを作り起動(RAによる起動を模擬) >> →Slaveとして正常起動 >> (7) promote(RAによる昇格処理を模擬) >> →PostgreSQLプロセスが異常停止する!! >> >> 松島さんの事象は、上記手順の(6)でPGが起動しない、というものに >> 見えます。 > > recovery.confをつくって起動すれば、Slaveとして動いてはくれるようです。 > すでにMasterが存在すればそれと接続して動いてくれました。 > >> また、私の方との環境の違いとしてrestart_on_promoteが有効であることも >> 関わっているかもしれません。(PGの停止→起動がカギ?) >> これを無効にしてみたらどうなるでしょうか? >> (PG停止の頻度が少し少なくなるだけなのであまり関係ないかもしれません。) > > 残念ながら変化はありませんでした。 > > 確認ですが、ひがしさんの環境では問題が再現していない、ということでよろしいでしょうか。 > また、PostgreSQLのインストールは最初から9.3.3でしょうか。 > もしかしたら、9.3.2から9.3.3へバージョンアップした場合にだけ問題が再現するのかも、と > 思い立ちましたので今から実験をしてみようと思います。 > > -- > Regards, > Takehiro Matsushima -- Regards, Takehiro Matsushima