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

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

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

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

PostgreSQL

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

解決済

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

takito
takito

総合スコア0

CentOS

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

PostgreSQL

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

1回答

0評価

0クリップ

37閲覧

投稿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

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

CentOS

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

PostgreSQL

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