diff options
author | Robert Haas <rhaas@postgresql.org> | 2022-02-03 13:57:27 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2022-02-03 14:05:02 -0500 |
commit | 5ef1eefd76f404ddc59b885d50340e602b70f05f (patch) | |
tree | 85146bd90a7039c50498ff09aedbc501468afb65 /src/backend/utils/misc | |
parent | 7c1aead6cbe7dcc6c216715fed7a1fb60684c5dc (diff) | |
download | postgresql-5ef1eefd76f404ddc59b885d50340e602b70f05f.tar.gz postgresql-5ef1eefd76f404ddc59b885d50340e602b70f05f.zip |
Allow archiving via loadable modules.
Running a shell command for each file to be archived has a lot of
overhead and may not offer as much error checking as you want, or the
exact semantics that you want. So, offer the option to call a loadable
module for each file to be archived, rather than running a shell command.
Also, add a 'basic_archive' contrib module as an example implementation
that archives to a local directory.
Nathan Bossart, with a little bit of kibitzing by me.
Discussion: http://postgr.es/m/20220202224433.GA1036711@nathanxps13
Diffstat (limited to 'src/backend/utils/misc')
-rw-r--r-- | src/backend/utils/misc/guc.c | 12 | ||||
-rw-r--r-- | src/backend/utils/misc/postgresql.conf.sample | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index b3fd42e0f18..f505413a7f9 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -3881,7 +3881,7 @@ static struct config_string ConfigureNamesString[] = { {"archive_command", PGC_SIGHUP, WAL_ARCHIVING, gettext_noop("Sets the shell command that will be called to archive a WAL file."), - NULL + gettext_noop("This is used only if \"archive_library\" is not set.") }, &XLogArchiveCommand, "", @@ -3889,6 +3889,16 @@ static struct config_string ConfigureNamesString[] = }, { + {"archive_library", PGC_SIGHUP, WAL_ARCHIVING, + gettext_noop("Sets the library that will be called to archive a WAL file."), + gettext_noop("An empty string indicates that \"archive_command\" should be used.") + }, + &XLogArchiveLibrary, + "", + NULL, NULL, NULL + }, + + { {"restore_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY, gettext_noop("Sets the shell command that will be called to retrieve an archived WAL file."), NULL diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 817d5f53246..56d0bee6d9b 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -245,6 +245,9 @@ #archive_mode = off # enables archiving; off, on, or always # (change requires restart) +#archive_library = '' # library to use to archive a logfile segment + # (empty string indicates archive_command should + # be used) #archive_command = '' # command to use to archive a logfile segment # placeholders: %p = path of file to archive # %f = file name only |