From: Peter Eisentraut Date: Wed, 16 Aug 2017 23:46:50 +0000 (-0400) Subject: pg_dump: Support using synchronized snapshots on standbys X-Git-Tag: REL_11_BETA1~1774 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cf851519d40e85c8129515c06532515386eaf41c;p=postgresql pg_dump: Support using synchronized snapshots on standbys This became possible by commit 6c2003f8a1bbc7c192a2e83ec51581c018aa162f. This just makes pg_dump aware of it and updates the documentation. Author: Petr Jelinek --- diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index ad5b6fc703..7ccbee4855 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -337,14 +337,16 @@ PostgreSQL documentation but to abort the dump. - For a consistent backup, the database server needs to support synchronized snapshots, - a feature that was introduced in PostgreSQL 9.2. With this - feature, database clients can ensure they see the same data set even though they use - different connections. pg_dump -j uses multiple database - connections; it connects to the database once with the master process and - once again for each worker job. Without the synchronized snapshot feature, the - different worker jobs wouldn't be guaranteed to see the same data in each connection, - which could lead to an inconsistent backup. + For a consistent backup, the database server needs to support + synchronized snapshots, a feature that was introduced in + PostgreSQL 9.2 for primary servers and 10 + for standbys. With this feature, database clients can ensure they see + the same data set even though they use different connections. + pg_dump -j uses multiple database connections; it + connects to the database once with the master process and once again + for each worker job. Without the synchronized snapshot feature, the + different worker jobs wouldn't be guaranteed to see the same data in + each connection, which could lead to an inconsistent backup. If you want to run a parallel dump of a pre-9.2 server, you need to make sure that the diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index b6e66267ff..75f08cd792 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1134,9 +1134,9 @@ setup_connection(Archive *AH, const char *dumpencoding, AH->remoteVersion >= 90200 && !dopt->no_synchronized_snapshots) { - if (AH->isStandby) + if (AH->isStandby && AH->remoteVersion < 100000) exit_horribly(NULL, - "Synchronized snapshots are not supported on standby servers.\n" + "Synchronized snapshots on standby servers are not supported by this server version.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n");