[pgpool-general: 3233] Re: pgpool with Slony replication delay
Tatsuo Ishii
ishii at postgresql.org
Sat Oct 18 08:53:39 JST 2014
Using pgpool-II's own replication mode is an idea. However it has it's
own downside: write performance could drop up to 50% of single
PostgreSQL, you may have difficulties with certain queries (see manual
for more details). I recommend you to test before switching to the
mode.
BTW why do you use slony? From my experience PostgreSQL's streaming
replication shows better performance than slony.
If you are going to use streaming replication, you may be interested
in upcoming pgpool-II 3.4's new feature: more control on load
balancing. From 3.4 doc:
database_redirect_preference_list
you can set "database name:node id" pair to specify the node id
when connecting to the database. For example, by specifying
"test:1", pgpool-II always redirects SELECT to node 1 in case of
connecting to database "test". You can specify multiple "database
name:node id" pair by separating them using comma (,). Regular
expressions are accepted for database name. Special keyword
"primary" indicates the primary node and "standby" indicates one
of standby nodes.
Here is an example.
database_redirect_preference_list = 'postgres:primary,mydb[01]:1,mydb2:standby'
SELECTs will be redirected to primary if you connect to postgres
database. Connecting to mydb0 or mydb1 will redirect SELECTs to
node 1. Connecting to mydb2 will redirect SELECTs to one of
standby nodes.
You need to reload pgpool.conf if you change this directive.
app_name_redirect_preference_list
you can set "application name:node id" pair to specify the node id
when the application is used. "Application name" is a name
specified by a client when it connects to database. You can use it
in PostgreSQL 9.0 or later. For example, application of psql
command is "psql". pgpool-II recognize application names only when
clients sends a start up packet. Clients can send application
names later on but pgpool-II will not recognize them.
The notion of app_name_redirect_preference_list is same as
database_redirect_preference_list. Thus you can use regular
expressions for application name.
Here is an example.
app_name_redirect_preference_list = 'psql:primary,myapp1:1,myapp2:standby'
In this example, psql sends SELECTs to primary node, myapp1 sends
to node 1, and myapp2 sends to one of standby nodes.
app_name_redirect_preference_list takes precedence over
database_redirect_preference_list. See the next example.
database_redirect_preference_list = 'bigdb:primary'
app_name_redirect_preference_list = 'myapp:2'
Applications connecting to bigdb database send SELECTs to primary
node. However myapp sends SELECTs to node 2 even if it connects to
bigdb. This is useful in a scenario: myapp2 sends very heavy
SELECTs to execute analysis jobs. You want to use node 2 solely
for analysis purpose.
You need to reload pgpool.conf if you change this directive.
> Thank you Tatsuo,
>
> What solution is there for implementing HA in such a scenario? Threaded
> requests, to threaded client connections, to a master/slave replication
> system. Would I have to use pgpool's Replication Mode and ditch the Slony
> approach?
>
> --Cal
>
> <cal at fbsdata.com>
>
> On Thu, Oct 16, 2014 at 6:06 PM, Tatsuo Ishii <ishii at postgresql.org> wrote:
>
>> > Hi everyone,
>> >
>> > I have encountered a problem with pgpool using Slony for replication to
>> > slaves. The client to pgpool in my case is an API, so requests come in
>> > concurrently on independent connections. If we have an insert directly
>> > followed by a select for that record, the select is load balanced between
>> > the master and slave, resulting in a 50% chance of a failure. Since the
>> > select ends up coming from a separate httpd child process, there is no
>> way
>> > to keep the insert and select in the same transaction.
>> >
>> > Am I missing something in the documentation and configs? Can pgpool
>> > intelligently recognize specific records that have been inserted to a
>> > table, then direct all selects for that record to the master until Slony
>> > has replicated it to the slaves?
>>
>> No. That's the limitaion of Slony (more presicely, asynchronous
>> replication systems include streaming replication).
>>
>> 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