[pgpool-general: 79] Re: Pgpool disconnect clients when recovery nodes.

Tatsuo Ishii ishii at postgresql.org
Fri Dec 9 22:53:47 JST 2011


By definition of streaming replication, you can only recover slave.

Suppose we have a master (node A) and a slave (node B).

1) A fails and B becomes master.
2) A is recovered and now A is slave.

So clients are never disconnected when a node is recovered in
streaming replication.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> Hi again. 
> 
> I have one more question. 
> 
> If the node that fails is the master, when I recover it, clients are disconnected. It is ok? 
> 
> When I recover slave node, clients aren't disconnected. 
> 
> Thanks again. 
> 
> ----- Mensaje original -----
> 
> De: "Tatsuo Ishii" <ishii at postgresql.org> 
> Para: "joaquin llano" <joaquin.llano at cpxextremadura.com> 
> CC: pgpool-general at pgpool.net 
> Enviados: Miércoles, 7 de Diciembre 2011 14:48:03 
> Asunto: Re: [pgpool-general: 51] Re: Pgpool disconnect clients when recovery nodes. 
> 
>> Hi again. 
>> 
>> First of all thanks for your advice Tatsuo. 
> 
> You are welcome! 
> 
>> I've compiled and installed Pgpool 3.1.1. 
>> 
>> Now when recovery a node clients aren't disconnected. But they are disconnected when a node fails (not matter if the node is primary or slave). 
>> 
>> Is there any way to no disconnect clients when a node fails? 
>> 
>> PostgreSQL version is 9.1.1. 
>> 
>> Thanks again. 
> 
> Sorry but currently there's no way to prevent it. 
> -- 
> Tatsuo Ishii 
> SRA OSS, Inc. Japan 
> English: http://www.sraoss.co.jp/index_en.php 
> Japanese: http://www.sraoss.co.jp 
> 
>> ----- Mensaje original ----- 
>> 
>> De: "Tatsuo Ishii" <ishii at postgresql.org> 
>> Para: "joaquin llano" <joaquin.llano at cpxextremadura.com> 
>> CC: pgpool-general at pgpool.net 
>> Enviados: Martes, 29 de Noviembre 2011 13:00:16 
>> Asunto: Re: [pgpool-general: 10] Pgpool disconnect clients when recovery nodes. 
>> 
>> With pgpool's native replication mode, there's no way to avoid 
>> disconnection to clients at recovery. 
>> 
>> In pgpool-II 3.1 or later, with streaming replication mode and 
>> recovery does not disconnect existing client connections. 
>> 
>>>From pgpool-II 3.1's "Enhancements" in NEWS: 
>> 
>> - Enhance online recovery in streaming replication mode. 
>> Now restarting pgpool-II children is avoided when recovery finished. So 
>> existing sessions can be continued while doing online recovery(Tatsuo) 
>> -- 
>> Tatsuo Ishii 
>> SRA OSS, Inc. Japan 
>> English: http://www.sraoss.co.jp/index_en.php 
>> Japanese: http://www.sraoss.co.jp 
>> 
>>> I have a cluster with 2 postgresql 8.4 backends and 1 pgpool2 3.0.3 version. They are running on Debian Squeeze using backports repository. 
>>> 
>>> When I try to recovery one of the backends using pcp_recovery_node its fails to recover until all clients connected to pgpool are disconnected. 
>>> 
>>> Also I tried streaming replication in other machines with PostgreSQL 9.1 but when recover a backend Pgpool drops all clients connected to it. 
>>> 
>>> Is there ant way to Pgpool maintain clients connected when I recover a dead node? 
>>> 
>>> This is my pgpool.conf for PostgreSQL 8.4 nodes. 
>>> 
>>> listen_addresses = '*' 
>>> port = 5432 
>>> pcp_port = 9898 
>>> socket_dir = '/var/run/postgresql' 
>>> pcp_socket_dir = '/var/run/postgresql' 
>>> backend_socket_dir = '/var/run/postgresql' 
>>> pcp_timeout = 10 
>>> num_init_children = 32 
>>> max_pool = 4 
>>> child_life_time = 300 
>>> connection_life_time = 0 
>>> child_max_connections = 0 
>>> client_idle_limit = 0 
>>> authentication_timeout = 60 
>>> logdir = '/var/run/postgresql' 
>>> pid_file_name = '/var/run/postgresql/pgpool.pid' 
>>> replication_mode = true 
>>> load_balance_mode = true 
>>> replication_stop_on_mismatch = true 
>>> replicate_select = false 
>>> reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT' 
>>> print_timestamp = true 
>>> master_slave_mode = false 
>>> connection_cache = true 
>>> health_check_timeout = 3 
>>> health_check_period = 5 
>>> health_check_user = 'pgpool2' 
>>> failover_command = 'pgpool-failover %d %h %p %D %m %M' 
>>> failback_command = 'pgpool-failback %d %h %p %D %m %M' 
>>> insert_lock = true 
>>> ignore_leading_white_space = true 
>>> log_statement = false 
>>> log_connections = false 
>>> log_hostname = false 
>>> parallel_mode = false 
>>> enable_query_cache = false 
>>> pgpool2_hostname = 'ppsqlft1' 
>>> system_db_hostname = 'localhost' 
>>> system_db_port = 5432 
>>> system_db_dbname = 'pgpool' 
>>> system_db_schema = 'pgpool_catalog' 
>>> system_db_user = 'pgpool' 
>>> system_db_password = '' 
>>> backend_hostname0 = 'PPSQLBK1' 
>>> backend_port0 = 5432 
>>> backend_weight0 = 1 
>>> backend_data_directory0 = '/var/lib/postgresql/8.4/main' 
>>> backend_hostname1 = 'PPSQLBK2' 
>>> backend_port1 = 5432 
>>> backend_weight1 = 1 
>>> backend_data_directory1 = '/var/lib/postgresql/8.4/main' 
>>> enable_pool_hba = true 
>>> recovery_user = 'pgpool2' 
>>> recovery_password = '' 
>>> recovery_1st_stage_command = 'base-backup' 
>>> recovery_2nd_stage_command = 'pgpool-recovery-pitr' 
>>> recovery_timeout = 90 
>>> client_idle_limit_in_recovery = 10 
>>> 
>>> 
>>> Thanks for your help 
>>> 
>>> -- 
>>> 
>>> Joaquín Manuel Llano Montero 
>>> 
>>> ________________________________________ 
>>> 
>>> C O MPAREX España S.A. 
>>> C/ Severo Ochoa, 20 
>>> 06800 Mérida (Badajoz) España 
>>> phone: +34 924 373 573 
>>> fax: +34 924 374 518 
>>> mobile: +34 615 848 019 
>>> email : joaquin.llano at comparex.es 
>>> web: www.comparex.es 
> 


More information about the pgpool-general mailing list