From: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
---|---|
To: | digoal(at)126(dot)com |
Cc: | PostgreSQL mailing lists <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #13448: DOC about : pg_dump use logical replication snapshot |
Date: | 2015-06-18 00:39:52 |
Message-ID: | CAB7nPqSVOtoKB7pGSVBg+tYeFeVe5GjNsai+R1ty1K0zEoJp6w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Wed, Jun 17, 2015 at 9:45 AM, <digoal(at)126(dot)com> wrote:
> Allow pg_dump to share a snapshot taken by another session using --snapshot
> (Simon Riggs, Michael Paquier)
>
> The remote snapshot must have been exported by pg_export_snapshot() or been
> defined when creating a logical replication slot. This can be used by
> parallel pg_dump to use a consistent snapshot across pg_dump processes.
>
> There is no problem, But how to use a logical replication slot's snapshot?
> Now we must do it manual?
Or you can do it at application level with something able to maintain
alive the replication connection that created the logical replication
slot.
> Like this:
> pg95(at)db-172-16-3-150-> psql 'hostaddr=127.0.0.1 port=1922 user=postgres
> dbname=postgres replication=database'
> psql (9.5devel)
> Type "help" for help.
> postgres=# CREATE_REPLICATION_SLOT ab12 LOGICAL
> "/opt/pgsql9.5/lib/test_decoding.so";
> slot_name | consistent_point | snapshot_name | output_plugin
>
> -----------+------------------+---------------+------------------------------------
> ab12 | 7/77B59A00 | 00000736-1 |
> /opt/pgsql9.5/lib/test_decoding.so
> (1 row)
>
> pg95(at)db-172-16-3-150-> pg_dump --snapshot=00000736-1
Yep, that's it.
> And there is no document descript it.
> Another command pg_recvlogical also can use stream replication protocol to
> create slot,but it exit soon and no any snapshot info output to stdout, we
> can use log_replication_commands to trace the snapshot, but we can't use it
> because pg_recvlogical exit soon.
I concur that this is underdocumented. We could add a section
"External snapshots" or similar here:
http://www.postgresql.org/docs/devel/static/logicaldecoding.html
Thoughts?
> I think , pg_recvlogical can add option --wait-dump | --wait second for
> --create-slot, wait a moment or wait some body import the snapshot, then
> close it or send the next replication commands.
This looks like a solution for something that you could do with a
small tool, the point being to maintain the replication connection
alive until the dump is taken. Depending on your environment the
timeout would vary as well, so it does not look a solid solution to
me. Another solution may be to allow pg_recvlogical to run a custom
script while the replication connection is maintained alive by it to
be able to perform actions while the replication connection is on, but
I don't see that happen at least in 9.6.
Regards,
--
Michael
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2015-06-18 01:26:26 | Re: BUG #13449: Auto type cast (int -> numeric) non-reasonable, will case performance problem |
Previous Message | Jeff Janes | 2015-06-17 17:58:53 | Re: BUG #13443: master will remove dead rows when hot standby(use slot) disconnect |