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

Tatsuo Ishii ishii at postgresql.org
Wed Dec 3 20:43:06 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)

So node 1 works as primary (or standalone PostgreSQL).

> # 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

You need to shutdown node 1 PostgreSQL before doing pcp_recovery_node.

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


More information about the pgpool-general mailing list