diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml
index 0180df5ddb..ea639e925e 100644
--- a/doc/src/sgml/backup.sgml
+++ b/doc/src/sgml/backup.sgml
@@ -724,7 +724,72 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_xlog/
Making a Base Backup
- The procedure for making a base backup is relatively simple:
+ The easiest way to perform a base backup is to use the
+ tool. It can create
+ a base backup either as regular files or as a tar archive. If more
+ flexibility than can provide is
+ required, you can also make a base backup using the low level API
+ (see ).
+
+
+
+ It is not necessary to be concerned about the amount of time it takes
+ to make a base backup. However, if you normally run the
+ server with full_page_writes> disabled, you might notice a drop
+ in performance while the backup runs since full_page_writes> is
+ effectively forced on during backup mode.
+
+
+
+ To make use of the backup, you will need to keep all the WAL
+ segment files generated during and after the file system backup.
+ To aid you in doing this, the base backup process
+ creates a backup history file> that is immediately
+ stored into the WAL archive area. This file is named after the first
+ WAL segment file that you need for the file system backup.
+ For example, if the starting WAL file is
+ 0000000100001234000055CD> the backup history file will be
+ named something like
+ 0000000100001234000055CD.007C9330.backup>. (The second
+ part of the file name stands for an exact position within the WAL
+ file, and can ordinarily be ignored.) Once you have safely archived
+ the file system backup and the WAL segment files used during the
+ backup (as specified in the backup history file), all archived WAL
+ segments with names numerically less are no longer needed to recover
+ the file system backup and can be deleted. However, you should
+ consider keeping several backup sets to be absolutely certain that
+ you can recover your data.
+
+
+
+ The backup history file is just a small text file. It contains the
+ label string you gave to , as well as
+ the starting and ending times and WAL segments of the backup.
+ If you used the label to identify the associated dump file,
+ then the archived history file is enough to tell you which dump file to
+ restore.
+
+
+
+ Since you have to keep around all the archived WAL files back to your
+ last base backup, the interval between base backups should usually be
+ chosen based on how much storage you want to expend on archived WAL
+ files. You should also consider how long you are prepared to spend
+ recovering, if recovery should be necessary — the system will have to
+ replay all those WAL segments, and that could take awhile if it has
+ been a long time since the last base backup.
+
+
+
+
+ Making a Base Backup Using the Low Level API
+
+ The procedure for making a base backup using the low level
+ APIs contains a few more steps than
+ the method, but is relatively
+ simple. It is very important that these steps are executed in
+ sequence, and that the success of a step is verified before
+ proceeding to the next step.
@@ -813,17 +878,6 @@ SELECT pg_stop_backup();
-
- You can also use the tool to take
- the backup, instead of manually copying the files. This tool will do
- the equivalent of pg_start_backup()>, copy and
- pg_stop_backup()> steps automatically, and transfers the
- backup over a regular PostgreSQL connection
- using the replication protocol, instead of requiring file system level
- access. pg_basebackup does not interfere with file system level backups
- taken using pg_start_backup()>/pg_stop_backup()>.
-
-
Some file system backup tools emit warnings or errors
if the files they are trying to copy change while the copy proceeds.
@@ -842,19 +896,6 @@ SELECT pg_stop_backup();
--warning=no-file-removed to hide the related warning messages.
-
- It is not necessary to be concerned about the amount of time elapsed
- between pg_start_backup> and the start of the actual backup,
- nor between the end of the backup and pg_stop_backup>; a
- few minutes' delay won't hurt anything. (However, if you normally run the
- server with full_page_writes> disabled, you might notice a drop
- in performance between pg_start_backup> and
- pg_stop_backup>, since full_page_writes> is
- effectively forced on during backup mode.) You must ensure that these
- steps are carried out in sequence, without any possible
- overlap, or you will invalidate the backup.
-
-
Be certain that your backup dump includes all of the files under
the database cluster directory (e.g., /usr/local/pgsql/data>).
@@ -878,46 +919,6 @@ SELECT pg_stop_backup();
(These files can confuse pg_ctl>.)
-
- To make use of the backup, you will need to keep all the WAL
- segment files generated during and after the file system backup.
- To aid you in doing this, the pg_stop_backup> function
- creates a backup history file> that is immediately
- stored into the WAL archive area. This file is named after the first
- WAL segment file that you need for the file system backup.
- For example, if the starting WAL file is
- 0000000100001234000055CD> the backup history file will be
- named something like
- 0000000100001234000055CD.007C9330.backup>. (The second
- part of the file name stands for an exact position within the WAL
- file, and can ordinarily be ignored.) Once you have safely archived
- the file system backup and the WAL segment files used during the
- backup (as specified in the backup history file), all archived WAL
- segments with names numerically less are no longer needed to recover
- the file system backup and can be deleted. However, you should
- consider keeping several backup sets to be absolutely certain that
- you can recover your data.
-
-
-
- The backup history file is just a small text file. It contains the
- label string you gave to pg_start_backup>, as well as
- the starting and ending times and WAL segments of the backup.
- If you used the label to identify the associated dump file,
- then the archived history file is enough to tell you which dump file to
- restore.
-
-
-
- Since you have to keep around all the archived WAL files back to your
- last base backup, the interval between base backups should usually be
- chosen based on how much storage you want to expend on archived WAL
- files. You should also consider how long you are prepared to spend
- recovering, if recovery should be necessary — the system will have to
- replay all those WAL segments, and that could take awhile if it has
- been a long time since the last base backup.
-
-
It's also worth noting that the pg_start_backup> function
makes a file named backup_label> in the database cluster
@@ -1214,7 +1215,18 @@ restore_command = 'cp /mnt/server/archivedir/%f %p'
- To prepare for standalone hot backups, set wal_level> to
+ As with base backups, the easiest way to produce a standalone
+ hot backup is to use the
+ tool. If you include the -X> parameter when calling
+ it, all the transaction log required to use the backup will be
+ included in the backup automatically, and no special action is
+ required to restore the backup.
+
+
+
+ If more flexibility in copying the backup files is needed, a lower
+ level process can be used for standalone hot backups as well.
+ To prepare for low level standalone hot backups, set wal_level> to
archive> (or hot_standby>), archive_mode> to
on>, and set up an archive_command> that performs
archiving only when a switch file> exists. For example:
@@ -1246,6 +1258,11 @@ tar -rf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/
Please remember to add error handling to your backup scripts.
+
+
+
+ Compressed Archive Logs
+
If archive storage size is a concern, you can use
gzip to compress the archive files: