質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1686閲覧

pgpool-II でフェールオーバ時に no primary node found となってしまう

takito

総合スコア3111

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2015/07/01 13:02

VirtualBox で2台のマシンを起動し、両方に PostgreSQL を入れて
ストリーミングレプリケーションによる DB レプリケーションを行っています。

CentOS 6.5
PostgreSQL 9.3
pgpool-II 3.4.2

マシン構成(2台)

srv1 : マスタ, pgpool-II + PostgreSQL
srv2 : スレーブ, PostgreSQL

マスタのDBをダウンさせてフェールオーバが実行されるところまできたのですが、
no primary node found
となり、スレーブ側がマスタに昇格してくれません。

フェールオーバのスクリプトは以下の通りです。

------------------------------failover_stream.sh--------------------------------------
#! /bin/bash

Failover command for streming replication.

This script assumes that DB node 0 is primary, and 1 is standby.

If standby goes down, does nothing(do pgsql9 stop only). If primary goes down, create a

trigger file so that standby take over primary node.

Arguments: $1: failed node id. $2: new master hostname. $3: path to

trigger file.

failed_node=$1
new_master=$2
trigger_file=$3

Do nothing if standby goes down.

if [ $failed_node = 1 ]; then
exit 0;
fi

Create trigger file.

su -l postgres -c "/usr/bin/ssh -T $new_master /bin/touch $trigger_file"
#ssh -T $new_master /bin/touch $trigger_file

exit 0;

srv2 の方に trigger_file は作成されているのでこのスクリプトは正常に動作しており、また srv2 が新マスタであると認識してくれていると思うのですが・・・。

フェールオーバ処理付近の pgpool.log は以下の通りです。


2015-07-01 16:43:40: pid 5259: LOG: execute command: /usr/local/bin/failover_stream.sh 0 srv2 /tmp/trigger_file0
2015-07-01 16:43:40: pid 5259: LOCATION: pgpool_main.c:2467
2015-07-01 16:43:41: pid 5259: LOG: find_primary_node_repeatedly: waiting for finding a primary node
2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2627
2015-07-01 16:43:41: pid 5259: LOG: find_primary_node: checking backend no 0

2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2569
2015-07-01 16:43:41: pid 5259: LOG: find_primary_node: checking backend no 1

2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2569
2015-07-01 16:43:41: pid 5259: DEBUG: SSL is requested but SSL support is not available
2015-07-01 16:43:41: pid 5259: LOCATION: pool_ssl.c:333
2015-07-01 16:43:41: pid 5259: DEBUG: authenticate kind = 0
2015-07-01 16:43:41: pid 5259: LOCATION: child.c:1394
2015-07-01 16:43:41: pid 5259: DEBUG: authenticate backend: key data received
2015-07-01 16:43:41: pid 5259: LOCATION: child.c:1484
2015-07-01 16:43:41: pid 5259: DEBUG: authenticate backend: transaction state: I
2015-07-01 16:43:41: pid 5259: LOCATION: child.c:1518
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: extended:0 query:"SELECT pg_is_in_recovery()"
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2318
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: kind: 'T'
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2458
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: received ROW DESCRIPTION ('T')
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2569
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: row description: num_fileds: 1
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2591
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: kind: 'D'
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2458
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: received DATA ROW ('D')
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2646
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: kind: 'C'
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2458
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: received COMMAND COMPLETE ('C')
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2528
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: kind: 'Z'
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2458
2015-07-01 16:43:41: pid 5259: DEBUG: do_query: received READY FOR QUERY ('Z')
2015-07-01 16:43:41: pid 5259: LOCATION: pool_process_query.c:2521
2015-07-01 16:43:41: pid 5259: DEBUG: find_primary_node: 1 node is standby
2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2586
2015-07-01 16:43:41: pid 5259: DEBUG: find_primary_node: no primary node found
2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2594
2015-07-01 16:43:41: pid 5259: DEBUG: reaper handler
2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2045
2015-07-01 16:43:41: pid 5259: DEBUG: reaper handler: exited due to switching
2015-07-01 16:43:41: pid 5259: LOCATION: pgpool_main.c:2057
2015-07-01 16:43:42: pid 5259: LOG: find_primary_node: checking backend no 0

2015-07-01 16:43:42: pid 5259: LOCATION: pgpool_main.c:2569
2015-07-01 16:43:42: pid 5259: LOG: find_primary_node: checking backend no 1


srv1 と srv2 の pg_hda.conf は全通しするようにしています。

local all all trust
host all all 0.0.0.0/0 trust

どのような些細なことでも結構です、何かお気づきのことがありましたらアドバイスいただけないでしょうか。

どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このページの「Streaming Replicationでのフェイルオーバ」にある、recovery.confの設定は、
どの様にされているでしょうか?
この設定がうまくされていないと、trigger_fileを認識しないのでは無いかと思います。

前の質問を見ても、recovery.confについて触れられていなかったので気になりました。

投稿2015/07/01 22:37

編集2015/07/02 01:28
eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takito

2015/07/02 01:15

回答ありがとうございます。 大変助かりました。 ご指摘を受けてはっと思い出し、いろいろと試しているうちに編集していたことを思い出しました。 案の定、target_fileの記述がそっくる抜けてました・・・。 おかげさまで無事にフェールオーバされ、スタンバイ側がプライマリに昇格しました。 ありがとうございました。
eripong

2015/07/02 01:29

良かったです。 recovery.confをrecocery.confと誤記してしまっていたので回答を修正しました。
takito

2015/07/02 06:22

ご丁寧にありがとうございました。 すでに解決しております、その後 pg_ctl promote コマンドを使うことで trigger_file を使わずに直接マスタ昇格させることにも成功しました 今はオンラインリカバリに挑戦中です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問