[pgpool-general: 1742] Re: Problem with 'replicate_select'
Gary Fu
gfu at sigmaspace.com
Wed May 15 01:02:06 JST 2013
Tatsuo,
I'm not sure if it (to use cursor) is from the psql, but I saw it from
the pgpool log (see below).
Again, my pgpool.conf file have the following setups:
replication_mode = on
replicate_select = off
load_balance_mode = off
log_per_node_statement = on
and when I did the 'select 1' query in psql
3:08pm 309 gfu at sd3dev1:~$ psql -h sd3dev1
psql (9.2.4)
Type "help" for help.
[sd3dev1.dev1_admin].sd3dev1> select 1;
?column?
----------
1
(1 row)
The pgpool has the following log and it seems to me that the select sql
is sent to both db servers.
3:08pm 1017 sd3dev1 at sd3dev1:/SD3dev1/pgpool$ pgpool -f
/SD3dev1/pgpool/pgpool.conf -D -n
2013-05-14 15:08:53 LOG: pid 26123: Backend status file
/SD3dev1/pgpool/log/pgpool_status discarded
2013-05-14 15:08:53 LOG: pid 26123: pgpool-II successfully started.
version 3.2.3 (namameboshi)
2013-05-14 15:09:02 LOG: pid 26183: connection received:
host=172.28.20.137 port=32862
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 0 backend pid: 28983
statement: BEGIN
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 1 backend pid: 6369
statement: BEGIN
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 0 backend pid: 28983
statement: DECLARE _psql_cursor NO SCROLL CURSOR FOR
select 1;
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 1 backend pid: 6369
statement: DECLARE _psql_cursor NO SCROLL CURSOR FOR
select 1;
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 0 backend pid: 28983
statement: FETCH FORWARD 1000 FROM _psql_cursor
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 1 backend pid: 6369
statement: FETCH FORWARD 1000 FROM _psql_cursor
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 0 backend pid: 28983
statement: CLOSE _psql_cursor
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 1 backend pid: 6369
statement: CLOSE _psql_cursor
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 1 backend pid: 6369
statement: COMMIT
2013-05-14 15:09:12 LOG: pid 26183: DB node id: 0 backend pid: 28983
statement: COMMIT
By the way, when I run the following perl program:
#----------------------------------------------------
#!/usr/local/bin/perl -w
use strict;
use MTVS::DB;
my $instance = 'dev1_tmp';
die "NPPSD3_INSTANCE environment variable is not defined" unless
($instance);
my $dbh = new MTVS::DB($instance) or die "Failed to connect on instance
$instance ";
my $sql =<<SQL;
select 1
SQL
my $items = $dbh->ScalarOfScalar($sql) or die "Failed SQL: $sql";
exit;
#------------------------------------------------
The following pgpool log seems to show that the sql (select 1), without
cursor, is only sent to the master db (db server 0)
2013-05-14 15:47:23 LOG: pid 26160: connection received:
host=172.28.20.137 port=32884
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 0 backend pid: 29884
statement: Parse: select 1
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 0 backend pid: 29884
statement: B message
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 0 backend pid: 29884
statement: D message
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 0 backend pid: 29884
statement: Execute: select 1
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 0 backend pid: 29884
statement: DEALLOCATE dbdpg_p26993_1
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 0 backend pid: 29884
statement: DISCARD ALL
2013-05-14 15:47:23 LOG: pid 26160: DB node id: 1 backend pid: 7270
statement: DISCARD ALL
Thanks,
Gary
> Hi Gary,
>
> How did you know psql uses the cursor?
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese: http://www.sraoss.co.jp
>
>> Hi Tatsuo,
>>
>> Sorry it takes a while to response on this.
>>
>> The pgpool log included in the email (below) was from the psql
>> session. It looks like to me that psql uses the cursor for the simple
>> select query and passes to pgpool and causes the problem, so that's
>> why I asked if it is because of the psql.
>>
>> By the way, I also tried 'select 1' (under psql) and I got the same
>> result (the select sql sent to both servers, not just the master).
>>
>> Please advise.
>>
>> Thanks,
>> Gary
>>
>>
More information about the pgpool-general
mailing list