From: | Tomonari Katsumata <katsumata(dot)tomonari(at)po(dot)ntts(dot)co(dot)jp> |
---|---|
To: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com> |
Cc: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #7803: Replication Problem(no master is there) |
Date: | 2013-01-16 05:48:41 |
Message-ID: | 50F63F39.7080306@po.ntts.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Hi,
(2013/01/16 4:03), Fujii Masao wrote:
> On Tue, Jan 15, 2013 at 5:25 PM, Heikki Linnakangas
> <hlinnakangas(at)vmware(dot)com> wrote:
>> On 15.01.2013 10:14, Simon Riggs wrote:
>>>
>>> On 15 January 2013 05:12, Tomonari Katsumata
>>> <katsumata(dot)tomonari(at)po(dot)ntts(dot)co(dot)jp> wrote:
>>>
>>>>> We added a REPLICATION privelge onto user accounts to control access.
>>>>>
>>>>> Perhaps we should add a CASCADE privilege as well, so that we can
>>>>> control whether we can connect to a master and/or a standby.
>>>>>
>>>>> Syntax would be
>>>>>
>>>>> ALTER USER foo
>>>>> [MASTER | CASCADE] REPLICATION
>>>>>
>>>>> REPLICATION allows both master and cascaded replication (same as now)
>>>>> MASTER REPLICATION allows master only
>>>>> CASCADE REPLICATION allows cascaded replication only
>>>>> NOREPLICATION allows neither option
>>>>>
>>>
>>>> Someone is working for it already ?
>>>> If not yet, may I try to implement it ?
>>>
>>>
>>> Please do. It looks fairly short.
>>
>>
>> To me, permissions doesn't feel like the right vehicle for
controlling this.
>> Not sure what to suggest instead, a new GUC perhaps.
>>
If this is before releasing 9.2.0, it is not problem to have a new GUC.
But 9.2 has released already.
I'm thinking about this change is for 9.3, right ?
And I'm thinking about compatibility when version up too.
If we control this with permissions, I think it is easy to
upgrade from 9.1 and 9.2 to 9.3 using pg_upgrade/pg_dumpall.
Type of pg_authid.rolreplication is boolean.
---------------------------------------------------------------------
9.1 false(f=0) true(t=1)
9.2 false(f=0) true(t=1)
---------------------------------------------------------------------
If I add permissions for cascading replication,
it will become integer and represent each permission like this:
---------------------------------------------------------------------
9.3 noreplication(0) replication(1) master-only(2) cascade-only(3)
---------------------------------------------------------------------
If pg_upgrade/pg_dumpall handle like bellow, user would never mind about
difference between versions.
from 9.1 to 9.3.
false(f=0) --> noreplication(0)
true(t=1) --> master-only(2)
from 9.2 to 9.3.
false(f=0) --> noreplication(0)
true(t=1) --> replication(1)
>> BTW, is there any reason to not allow streaming replication when
>> hot_standby=off? A streaming replication connection doesn't execute any
>> queries, so it doesn't need the system to be consistent.
>
> I was thinking that the system must be consistent since streaming
replication
> connection reads the system catalog (e.g., ROLE information).
>
And I think it's because replication connection is established
by same way with another backend connection.
>> Another thing to consider is that "pg_basebackup -X stream" also uses
>> streaming replication, so if you forbid cascade replication, you
also forbid
>> using "pg_basebackup -X stream" on the standby. At the protocol level,
>> pg_basebackup streams the WAL just like a standby server does, so we
cannot
>> distinguish those two cases in the server. The client could tell the
server
>> which one it is, but using permissions to allow/forbid based on that
would
>> make no sense as the client could lie which one it is.
>
> Probably I'm missing something, but the standby server only has to
reject the
> replication connection if cascade replication is disabled, whether
it's from
> another standby or pg_basebackup. ISTM there is no need to distinguish
> those connections. No?
>
> When "pg_basebackup -X stream" fails to establish the replication
connection,
> it only has to just fail or automatically switch to "pg_basebackup -X
fetch".
>
I think so too.
If user who does not have right permission executes "pg_basebackup -X
stream",
it would make fail.
regards,
--------
NTT Software Corporation
Tomonari Katsumata
From | Date | Subject | |
---|---|---|---|
Next Message | Abhijit Menon-Sen | 2013-01-16 07:48:17 | Re: Review of "pg_basebackup and pg_receivexlog to use non-blocking socket communication", was: Re: Re: [BUGS] BUG #7534: walreceiver takes long time to detect n/w breakdown |
Previous Message | Magnus Hagander | 2013-01-15 21:35:36 | Re: BUG #7809: Running pg_dump on slave w/ streaming replication fails if there are unlogged tables |