[pgpool-general: 3337] Re: Pgpool and backup by PITR

Michal Šťava stavamichal at gmail.com
Wed Dec 3 20:33:58 JST 2014


Both backends returns this (f):

# psql -U postgres -h 10.18.1.14 -p 5444 postgres
psql (9.3.5)
Type "help" for help.

postgres=# select pg_is_in_recovery();
 pg_is_in_recovery
-------------------
 f
(1 row)

# psql -U postgres -h 10.18.1.13 -p 5444 postgres
psql (9.3.5)
Type "help" for help.

postgres=# select pg_is_in_recovery();
 pg_is_in_recovery
-------------------
 f
(1 row)

and for command (call pcp on pgpool server port 9898):
pcp_recovery_node -d 30 localhost 9898 postgres password 1

i get from log this:
DEBUG: send: tos="R", len=46
DEBUG: recv: tos="r", len=21, data=AuthenticationOK
DEBUG: send: tos="D", len=6
DEBUG: recv: tos="e", len=20, data=recovery failed
DEBUG: command failed. reason=recovery failed
BackendError
DEBUG: send: tos="X", len=4

2014-12-03 12:31:27: pid 21555: DEBUG:  received PCP packet
2014-12-03 12:31:27: pid 21555: DETAIL:  PCP packet type of service 'M'
2014-12-03 12:31:27: pid 21555: DEBUG:  PCP: sent md5 salt to client
2014-12-03 12:31:27: pid 21555: DEBUG:  initializing backend status
2014-12-03 12:31:27: pid 21555: DEBUG:  received PCP packet
2014-12-03 12:31:27: pid 21555: DETAIL:  PCP packet type of service 'R'
2014-12-03 12:31:27: pid 21555: DEBUG:  PCP: processing authentication
request
2014-12-03 12:31:27: pid 21555: DETAIL:  authentication OK
2014-12-03 12:31:27: pid 21555: DEBUG:  initializing backend status
2014-12-03 12:31:27: pid 21555: DEBUG:  received PCP packet
2014-12-03 12:31:27: pid 21555: DETAIL:  PCP packet type of service 'O'
2014-12-03 12:31:27: pid 21555: DEBUG:  PCP: processing recovery request
2014-12-03 12:31:27: pid 21555: DETAIL:  start online recovery
2014-12-03 12:31:27: pid 21555: LOG:  starting recovering node 1
2014-12-03 12:31:27: pid 21555: ERROR:  node recovery failed, node id: 1 is
alive
2014-12-03 12:31:27: pid 21555: DEBUG:  initializing backend status

for node 0 i get info that primary not cannot be recovery. That is probably
ok.

There is info about backends from pgpool.conf:
backend_hostname0 = '10.18.1.13'
backend_port0 = 5444
backend_weight0 = 1
backend_data_directory0 = '/home/postgres/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'

backend_hostname1 = '10.18.1.14'
backend_port1 = 5444
backend_weight1 = 1
backend_data_directory1 = '/home/postgres/data/'
backend_flag1 = 'ALLOW_TO_FAILOVER'

Thanks again for helping,
Michal Stava

2014-12-03 12:25 GMT+01:00 Tatsuo Ishii <ishii at postgresql.org>:

> Ok, probably node 1 is out of sync or streaming replication is not
> working. To confirm you type:
>
> psql -h 10.18.1.14 -p 5444 postgres
>
> then
>
> select pg_is_in_recovery();
>
> If it returns t, it works as standby. If not, you could resync the
> standby by using pcp_recovery_command.
>
> Best regards,
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp
>
> > %/home/postgres/config# psql -p 9999 -U postgres -h localhost
> > psql (9.3.5)
> > Type "help" for help.
> >
> > postgres=# show pool_nodes;
> >  node_id |  hostname  | port | status | lb_weight |  role
> > ---------+------------+------+--------+-----------+---------
> >  0       | 10.18.1.13 | 5444 | 2      | 0.500000  | primary
> >  1       | 10.18.1.14 | 5444 | 2      | 0.500000  | standby
> > (2 rows)
> >
> > 2014-12-03 12:11 GMT+01:00 Tatsuo Ishii <ishii at postgresql.org>:
> >
> >> What does "show pool_nodes" show?
> >>
> >> Best regards,
> >> --
> >> Tatsuo Ishii
> >> SRA OSS, Inc. Japan
> >> English: http://www.sraoss.co.jp/index_en.php
> >> Japanese:http://www.sraoss.co.jp
> >>
> >> > Hi Tatsuo,
> >> >
> >> > this tutorial i tried before using replication mode. But there is one
> >> > problem i can't figure.
> >> >
> >> > I have master and slave server but only master is accepting my
> queries.
> >> If
> >> > i try to create new db by:
> >> > createdb -p 9999 -U postgres -h localhost DB5
> >> > on pgpool-II server, i get info below from log but only master create
> >> this
> >> > DB5. If i try to connect by pgpool-II to this new db, i get another
> info
> >> > below.
> >> >
> >> > Is there anything i am doing wrong?
> >> >
> >> > PS:
> >> > both are hot_standby and use configuration from manual, only
> pg_hba.conf
> >> is
> >> > set to specific hosts for trust reading all databases from postgres
> and
> >> > also trust replication
> >> >
> >> > Thanks,
> >> > Michal Stava
> >> >
> >> > LOG when connecting new DB:
> >> > 2014-12-03 08:55:28: pid 21237: LOG:  pool_read_kind: error message
> from
> >> > 1 th backend:database "DB5" does not exist
> >> > 2014-12-03 08:55:28: pid 21237: ERROR:  unable to read message kind
> >> > 2014-12-03 08:55:28: pid 21237: DETAIL:  kind does not match between
> >> > master(53) slot[1] (45)
> >> >
> >> > LOG when creating new DB:
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  I am 21153 accept fd 11
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading startup packet
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  Protocol Major: 1234 Minor:
> 5679
> >> > database:  user:
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  selecting backend connection
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  SSLRequest from client
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  SSL is requested but SSL
> support
> >> is
> >> > not available
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading startup packet
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  application_name: createdb
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading startup packet
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  Protocol Major: 3 Minor: 0
> >> > database: postgres user: postgres
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  sending backend key data
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  send pid 15378 to frontend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: Query:"SET
> >> > application_name TO 'createdb'"
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  waiting for query response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  waiting for backend:0 to
> >> complete
> >> > the query
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: S
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: kind: 'S'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: kind: 'C'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: kind: 'Z'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: Query:"SET
> >> > application_name TO 'createdb'"
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  waiting for query response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  waiting for backend:1 to
> >> complete
> >> > the query
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: S
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: kind: 'S'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: kind: 'C'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  do_command: kind: 'Z'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> >> > transaction isolation. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> writing
> >> > transaction. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> failed
> >> > transaction. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> failed
> >> > transaction. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing skip
> >> > reading from backends. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> ignore
> >> > till sync. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing frontend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received kind 'Q'(51) from
> >> frontend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> doing
> >> > extended query messaging. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: setting
> query in
> >> > progress. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  decide where to send the
> queries
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  destination = 0 for query=
> >> "CREATE
> >> > DATABASE "DB5";
> >> >     "
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  waiting for query response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  waiting for backend:0 to
> >> complete
> >> > the query
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: C
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: C
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: C
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: C
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  backend:0 of 2 kind = 'C'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing backend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received kind 'C'(43) from
> >> backend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: setting
> command
> >> > success. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  backend:0 of 2 kind = 'Z'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing backend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received kind 'Z'(5a) from
> >> backend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing backend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  Ready For Query received
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading message length
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  slot: 0 length: 5
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing ReadyForQuery
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  transaction state 'I'(49)
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing frontend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received kind 'X'(58) from
> >> frontend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: clearing
> doing
> >> > extended query messaging. DONE
> >> > 2014-12-03 08:51:03: pid 21153: LOG:  Frontend terminated
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received message kind 'X'
> from
> >> > frontend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: setting
> query in
> >> > progress. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  decide where to send the
> queries
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  destination = 3 for query= "
> >> > DISCARD ALL"
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  waiting for query response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  waiting for backend:0 to
> >> complete
> >> > the query
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: S
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: S
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: S
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  detect error: kind: S
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  parameter name: is_superuser
> >> > value: "on"
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  parameter name:
> >> > session_authorization value: "postgres"
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  parameter name:
> application_name
> >> > value: "createdb"
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  backend:0 of 2 kind = 'C'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing backend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received kind 'C'(43) from
> >> backend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  session context: setting
> command
> >> > success. DONE
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading backend data packet
> kind
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  backend:0 of 2 kind = 'Z'
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing backend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  received kind 'Z'(5a) from
> >> backend
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing backend response
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  Ready For Query received
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  reading message length
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  slot: 0 length: 5
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  processing ReadyForQuery
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  transaction state 'I'(49)
> >> > 2014-12-03 08:51:03: pid 21153: DEBUG:  setting backend connection
> close
> >> > timer
> >> > 2014-12-03 08:51:03: pid 21153: DETAIL:  close time 1417593063
> >> >
> >> > 2014-12-03 0:05 GMT+01:00 Tatsuo Ishii <ishii at postgresql.org>:
> >> >
> >> >> > Hi,
> >> >> >
> >> >> > frstly I want to say "Good job, your technology is really good,
> thank
> >> >> you."
> >> >> > and secondly "Sorry for my bad english, I do my best."
> >> >> >
> >> >> > Ok, so what's my problem:
> >> >> >
> >> >> > I created replication model for my application (1 server with
> pgpool2
> >> >> > instance and 2 servers like host0 and host1). Everything is ok
> except
> >> >> > online_recovery part which I really have problem to understand.
> >> >> >
> >> >> > For now I have 3 empty scripts so adding node works, but there is
> no
> >> >> > sychronization of DBs:
> >> >> > basebackup
> >> >> > pgpool_recovery_pitr
> >> >> > pgpool_remote_start
> >> >> >
> >> >> >
> >> >> > There is a sample of basebackup script:
> >> >> >
> >> >> > #! /bin/sh
> >> >> > DATA=$1
> >> >> > RECOVERY_TARGET=$2
> >> >> > RECOVERY_DATA=$3
> >> >> > psql -c "select pg_start_backup('pgpool-recovery')"
> >> >> > postgres echo "restore_command = 'scp
> $HOSTNAME:/data/archive_log/%f
> >> >> > %p'" > /data/recovery.conf
> >> >> > tar -C /data -zcf pgsql.tar.gz pgsql
> >> >> > psql -c 'select pg_stop_backup()' postgres
> >> >> > scp pgsql.tar.gz $RECOVERY_TARGET:$RECOVERY_DATA
> >> >> >
> >> >> > I really need some advices there, because can't understand it.
> >> >> >
> >> >> > 1] there is something like /data/ so its $DATA or its other data?
> >> >> > 2] there is tar on pgsql in data directory, but i have no pgsql
> >> directory
> >> >> > there
> >> >> > 3] do you have some working example? not only common sample?
> >> >> > 4] very similar problem I have with other two scripts
> >> >> >
> >> >> > Last 2 days I spent many hours by trying to understand this online
> >> >> recovery
> >> >> > mechanism, but
> >> >> > my karma is probably too low.
> >> >> >
> >> >> > Thank you for any advice,
> >> >> > Michal Stava,
> >> >> > CZECH REPUBLIC
> >> >>
> >> >> I recommend to start with this tutorial:
> >> >>
> >> >>
> >> >>
> >>
> http://www.pgpool.net/pgpool-web/contrib_docs/simple_sr_setting2_3.3/index.html
> >> >>
> >> >> Best regards,
> >> >> --
> >> >> Tatsuo Ishii
> >> >> SRA OSS, Inc. Japan
> >> >> English: http://www.sraoss.co.jp/index_en.php
> >> >> Japanese:http://www.sraoss.co.jp
> >> >>
> >>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.sraoss.jp/pipermail/pgpool-general/attachments/20141203/c2d9fecc/attachment-0001.html>


More information about the pgpool-general mailing list