Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
6559c4a2
Commit
6559c4a2
authored
Nov 28, 2007
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add additional PITR documentation.
Simon Riggs
parent
bb0e3011
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
11 deletions
+119
-11
doc/src/sgml/backup.sgml
doc/src/sgml/backup.sgml
+119
-11
No files found.
doc/src/sgml/backup.sgml
View file @
6559c4a2
<!-- $PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.10
8 2007/11/28 15:42:30 petere
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.10
9 2007/11/28 22:35:54 momjian
Exp $ -->
<chapter id="backup">
<title>Backup and Restore</title>
...
...
@@ -641,10 +641,22 @@ archive_command = 'test ! -f .../%f && cp %p .../%f'
<para>
Also, you can force a segment switch manually with
<function>pg_switch_xlog</>, if you want to ensure that a
just-finished transaction is archived
immediately
. Other utility
just-finished transaction is archived
as soon as possible
. Other utility
functions related to WAL management are listed in <xref
linkend="functions-admin-backup-table">.
</para>
<para>
When <varname>archive_mode</> is <literal>off</> some SQL commands
are optimized to avoid WAL logging, as described in <xref
linkend="populate-pitr">. If archiving were turned on during execution
of one of these statements, WAL would not contain enough information
for archive recovery. (Crash recovery is unaffected.) For
this reason, <varname>archive_mode</> can only be changed at server
start. (<varname>archive_command</> can be changed with a
configuration file reload, and setting it to <literal>''</> does
prevent archiving.)
</para>
</sect2>
<sect2 id="backup-base-backup">
...
...
@@ -973,14 +985,24 @@ restore_command = 'cp /mnt/server/archivedir/%f %p'
<para>
Normally, recovery will proceed through all available WAL segments,
thereby restoring the database to the current point in time (or as
close as we can get given the available WAL segments). But if you want
to recover to some previous point in time (say, right before the junior
DBA dropped your main transaction table), just specify the required
stopping point in <filename>recovery.conf</>. You can specify the stop
point, known as the <quote>recovery target</>, either by date/time or
by completion of a specific transaction ID. As of this writing only
the date/time option is very usable, since there are no tools to help
you identify with any accuracy which transaction ID to use.
close as we can get given the available WAL segments). So a normal
recovery will end with a "file not found" message, the exact text
of the error message depending upon your choice of
<varname>restore_command</>. You may also see an error message
at the start of recovery for a file named something like
<filename>00000001.history</>. This is also normal and does not
indicate a problem in simple recovery situations. See
<xref linkend="backup-timelines"> for discussion.
</para>
<para>
If you want to recover to some previous point in time (say, right before
the junior DBA dropped your main transaction table), just specify the
required stopping point in <filename>recovery.conf</>. You can specify
the stop point, known as the <quote>recovery target</>, either by
date/time or by completion of a specific transaction ID. As of this
writing only the date/time option is very usable, since there are no tools
to help you identify with any accuracy which transaction ID to use.
</para>
<note>
...
...
@@ -1214,6 +1236,92 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows
</para>
</sect2>
<sect2 id="backup-tips">
<title>Tips and Examples</title>
<para>
Some examples of configuring Continuous Archiving are given here.
</para>
<sect3 id="backup-standalone">
<title>Recovery Settings</title>
<para>
It is possible to use the existing backup facilities to produce
standalone hot backups. These are backups that cannot be used for
point-in-time recovery, yet are much faster to backup and restore
than <application>pg_dump</>.
</para>
<para>
To configure standalone backups you should use a switch file. If the
file exists then archives are made, otherwise archiving is ignored.
<programlisting>
archive_command = 'test -f /var/lib/pgsql/backup_in_progress && cp -i %p /var/lib/pgsql/archive/%f </dev/null'
</programlisting>
Backup can then be taken using a script like the following:
<programlisting>
touch /var/lib/pgsql/backup_in_progress
psql -c "select pg_start_backup('hot_backup');"
tar -cvf /var/lib/pgsql/backup.tar /var/lib/pgsql/data/
psql -c "select pg_stop_backup();"
sleep 20
rm /var/lib/pgsql/backup_in_progress
tar -rvf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/
</programlisting>
The switch file <filename>/var/lib/pgsql/backup_in_progress</> is
created first, allowing archiving to start prior to the backup.
After the backup the switch file is removed. Archived WAL files are
then added to the backup so that both base backup and all required
WAL files are part of the same <application>tar</> file.
</para>
</sect3>
<sect3 id="backup-scripts">
<title><varname>archive_command</varname> scripts</title>
<para>
Many people choose to use scripts to define their
<varname>archive_command</varname>, so that their
<filename>postgresql.conf</> looks very simple:
<programlisting>
archive_command = 'local_backup_script.sh'
</programlisting>
This allows all complexity to be managed within the script, which
can be written in a popular scripting language such as
<application>bash</> or <application>perl</>. Statements echoed to
<literal>stderr</> will appear in the database server log, allowing
complex configurations to be easily diagnosed if they fail.
</para>
<para>
Example of how scripts might be used include:
<itemizedlist>
<listitem>
<para>
Copying data to a secure off-site data storage provider
</para>
</listitem>
<listitem>
<para>
Batching WAL files so they are transferred every three hours, rather than
one at a time as they fill
</para>
</listitem>
<listitem>
<para>
Interfacing with other backup and recovery software
</para>
</listitem>
<listitem>
<para>
Interfacing with monitoring software to report errors directly
</para>
</listitem>
</itemizedlist>
</para>
</sect3>
</sect2>
<sect2 id="continuous-archiving-caveats">
<title>Caveats</title>
...
...
@@ -1435,7 +1543,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows
Pseudocode for a suitable <varname>restore_command</> is:
<programlisting>
triggered = false;
while (!NextWALFileReady() &
&
!triggered)
while (!NextWALFileReady() &
amp;&
!triggered)
{
sleep(100000L); /* wait for ~0.1 sec */
if (CheckForExternalTrigger())
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment