Re: [PATCHES] Notes on restoring a backup with --single-transaction

2006-09-19 Thread Neil Conway
On Tue, 2006-09-19 at 13:00 +0100, Simon Riggs wrote:
> Additional notes for pg_dump/restore

Applied with additional fixes; revised patch is attached.

Thanks for the patch.

-Neil

Index: doc/src/sgml/backup.sgml
===
RCS file: /home/neilc/postgres/cvs_root/pgsql/doc/src/sgml/backup.sgml,v
retrieving revision 2.87
diff -c -r2.87 backup.sgml
*** doc/src/sgml/backup.sgml	19 Sep 2006 15:18:41 -	2.87
--- doc/src/sgml/backup.sgml	19 Sep 2006 18:59:52 -
***
*** 84,90 
  

 
! When your database schema relies on OIDs (for instance as foreign
  keys) you must instruct pg_dump to dump the OIDs
  as well. To do this, use the -o command line
  option.
--- 84,90 
  

 
! If your database schema relies on OIDs (for instance as foreign
  keys) you must instruct pg_dump to dump the OIDs
  as well. To do this, use the -o command line
  option.
***
*** 105,134 
  you used as outfile
  for the pg_dump command. The database dbname will not be created by this
! command, you must create it yourself from template0 before executing
! psql (e.g., with createdb -T template0
! dbname).
! psql supports options similar to pg_dump 
! for controlling the database server location and the user name. See
! 's reference page for more information.
 
  
 
! Not only must the target database already exist before starting to
! run the restore, but so must all the users who own objects in the
! dumped database or were granted permissions on the objects.  If they
! do not, then the restore will fail to recreate the objects with the
! original ownership and/or permissions.  (Sometimes this is what you want,
! but usually it is not.)
 
  
 
! Once restored, it is wise to run  on each database so the optimizer has
! useful statistics. An easy way to do this is to run
! vacuumdb -a -z to
! VACUUM ANALYZE all databases; this is equivalent to
! running VACUUM ANALYZE manually.
 
  
 
--- 105,146 
  you used as outfile
  for the pg_dump command. The database dbname will not be created by this
! command, so you must create it yourself from template0
! before executing psql (e.g., with
! createdb -T template0 dbname).  psql
! supports similar options to pg_dump for specifying
! the database server to connect to and the user name to use. See
! the  reference page for more information.
 
  
 
! Before restoring a SQL dump, all the users who own objects or were
! granted permissions on objects in the dumped database must already
! exist. If they do not, then the restore will fail to recreate the
! objects with the original ownership and/or permissions.
! (Sometimes this is what you want, but usually it is not.)
 
  
 
! By default, the psql script will continue to
! execute after an SQL error is encountered. You may wish to use the
! following command at the top of the script to alter that
! behaviour and have psql exit with an
! exit status of 3 if an SQL error occurs:
! 
! \set ON_ERROR_STOP
! 
! Either way, you will only have a partially restored
! dump. Alternatively, you can specify that the whole dump should be
! restored as a single transaction, so the restore is either fully
! completed or fully rolled back. This mode can be specified by
! passing the -1 or --single-transaction
! command-line options to psql. When using this
! mode, be aware that even the smallest of errors can rollback a
! restore that has already run for many hours. However, that may
! still be preferable to manually cleaning up a complex database
! after a partially restored dump.
 
  
 
***
*** 153,160 
 
  
 
! For advice on how to load large amounts of data into
! PostgreSQL efficiently, refer to .
 

--- 165,177 
 
  
 
! After restoring a backup, it is wise to run  on each
! database so the query optimizer has useful statistics. An easy way
! to do this is to run vacuumdb -a -z; this is
! equivalent to running VACUUM ANALYZE on each database
! manually.  For more advice on how to load large amounts of data
! into PostgreSQL efficiently, refer to .
 


---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


[PATCHES] Notes on restoring a backup with --single-transaction

2006-09-19 Thread Simon Riggs

Additional notes for pg_dump/restore

-- 
  Simon Riggs 
  EnterpriseDB   http://www.enterprisedb.com
Index: doc/src/sgml/backup.sgml
===
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/backup.sgml,v
retrieving revision 2.86
diff -c -r2.86 backup.sgml
*** doc/src/sgml/backup.sgml	16 Sep 2006 00:30:11 -	2.86
--- doc/src/sgml/backup.sgml	19 Sep 2006 11:55:32 -
***
*** 123,128 
--- 123,146 
 
  
 
+ By default, the psql script will continue to execute
+ after an SQL error is encountered and returns 0 in that case. You may
+ wish to use the following command at the top of the script to alter 
+ that behaviour and report errors with a return code 3.
+ 
+ \set ON_ERROR_STOP
+ 
+ Either way, you will only have a partially restored dump. Alternatively,
+ you can specify that the whole dump is run as a single transaction, so
+ the restore is fully completed, or fully rolled back. This mode can be
+ specified using the command line options psql -1 or
+ psql --single-transaction. When using that option, be warned 
+ that even the smallest of errors can rollback a restore that has already
+ run for many hours. However, that may still be preferable to clearing up
+ a complex database after a partially restored dump.
+   
+ 
+
  Once restored, it is wise to run  on each database so the optimizer has
  useful statistics. An easy way to do this is to run

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings