pgsql: Implement backup API functions for non-exclusive backups

Started by Magnus Haganderabout 10 years ago5 messagescomitters
Jump to latest
#1Magnus Hagander
magnus@hagander.net

Implement backup API functions for non-exclusive backups

Previously non-exclusive backups had to be done using the replication protocol
and pg_basebackup. With this commit it's now possible to make them using
pg_start_backup/pg_stop_backup as well, as long as the backup program can
maintain a persistent connection to the database.

Doing this, backup_label and tablespace_map are returned as results from
pg_stop_backup() instead of being written to the data directory. This makes
the server safe from a crash during an ongoing backup, which can be a problem
with exclusive backups.

The old syntax of the functions remain and work exactly as before, but since the
new syntax is safer this should eventually be deprecated and removed.

Only reference documentation is included. The main section on backup still needs
to be rewritten to cover this, but since that is already scheduled for a separate
large rewrite, it's not included in this patch.

Reviewed by David Steele and Amit Kapila

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/7117685461af50f50c03f43e6a622284c8d54694

Modified Files
--------------
doc/src/sgml/func.sgml | 48 ++++++---
src/backend/access/transam/xlog.c | 55 +++++-----
src/backend/access/transam/xlogfuncs.c | 185 ++++++++++++++++++++++++++++++++-
src/backend/catalog/system_views.sql | 2 +-
src/backend/replication/basebackup.c | 17 +--
src/include/access/xlog.h | 4 +-
src/include/access/xlog_fn.h | 1 +
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_proc.h | 4 +-
9 files changed, 265 insertions(+), 53 deletions(-)

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#2Robert Haas
robertmhaas@gmail.com
In reply to: Magnus Hagander (#1)
Re: pgsql: Implement backup API functions for non-exclusive backups

On Tue, Apr 5, 2016 at 2:11 PM, Magnus Hagander <magnus@hagander.net> wrote:

Implement backup API functions for non-exclusive backups

Previously non-exclusive backups had to be done using the replication protocol
and pg_basebackup. With this commit it's now possible to make them using
pg_start_backup/pg_stop_backup as well, as long as the backup program can
maintain a persistent connection to the database.

Doing this, backup_label and tablespace_map are returned as results from
pg_stop_backup() instead of being written to the data directory. This makes
the server safe from a crash during an ongoing backup, which can be a problem
with exclusive backups.

The old syntax of the functions remain and work exactly as before, but since the
new syntax is safer this should eventually be deprecated and removed.

Only reference documentation is included. The main section on backup still needs
to be rewritten to cover this, but since that is already scheduled for a separate
large rewrite, it's not included in this patch.

Reviewed by David Steele and Amit Kapila

We've typically tried to keep the width of commit messages narrow
enough that 'git log' looks OK in an 80-character window; this one is
wide enough that it doesn't.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#3Magnus Hagander
magnus@hagander.net
In reply to: Robert Haas (#2)
Re: pgsql: Implement backup API functions for non-exclusive backups

On Tue, Apr 5, 2016 at 8:35 PM, Robert Haas <robertmhaas@gmail.com> wrote:

On Tue, Apr 5, 2016 at 2:11 PM, Magnus Hagander <magnus@hagander.net>
wrote:

Implement backup API functions for non-exclusive backups

Previously non-exclusive backups had to be done using the replication

protocol

and pg_basebackup. With this commit it's now possible to make them using
pg_start_backup/pg_stop_backup as well, as long as the backup program can
maintain a persistent connection to the database.

Doing this, backup_label and tablespace_map are returned as results from
pg_stop_backup() instead of being written to the data directory. This

makes

the server safe from a crash during an ongoing backup, which can be a

problem

with exclusive backups.

The old syntax of the functions remain and work exactly as before, but

since the

new syntax is safer this should eventually be deprecated and removed.

Only reference documentation is included. The main section on backup

still needs

to be rewritten to cover this, but since that is already scheduled for a

separate

large rewrite, it's not included in this patch.

Reviewed by David Steele and Amit Kapila

We've typically tried to keep the width of commit messages narrow
enough that 'git log' looks OK in an 80-character window; this one is
wide enough that it doesn't.

Huh. It would appear I've somehow screwed up the commit-message-mode that
is supposed to warn me about that.

My apologies.

--
Magnus Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#1)
Re: pgsql: Implement backup API functions for non-exclusive backups

Magnus Hagander <magnus@hagander.net> writes:

Implement backup API functions for non-exclusive backups

Shouldn't the CF entry for this be closed? The docs rewrite
seems like a separate task.

regards, tom lane

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#5Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#4)
Re: pgsql: Implement backup API functions for non-exclusive backups

On Wed, Apr 6, 2016 at 6:38 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Magnus Hagander <magnus@hagander.net> writes:

Implement backup API functions for non-exclusive backups

Shouldn't the CF entry for this be closed? The docs rewrite
seems like a separate task.

It should. I forgot, thanks for the reminder. Done now.

--
Magnus Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/