More minor updates and copy-editing.
authorTom Lane
Tue, 28 Dec 2004 19:08:58 +0000 (19:08 +0000)
committerTom Lane
Tue, 28 Dec 2004 19:08:58 +0000 (19:08 +0000)
doc/src/sgml/backup.sgml
doc/src/sgml/diskusage.sgml
doc/src/sgml/monitoring.sgml
doc/src/sgml/regress.sgml

index bdfae16869144572c0daa1c3386bb2f5f18de8dc..76457b6842a8e91c741d6333aa15a1af82c64a04 100644 (file)
@@ -1,5 +1,5 @@
 
 
  Backup and Restore
@@ -7,7 +7,7 @@ $PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.53 2004/12/13 18:05:07 petere Ex
  backup
 
  
-  As everything that contains valuable data, PostgreSQL
+  As with everything that contains valuable data, PostgreSQL
   databases should be backed up regularly. While the procedure is
   essentially simple, it is important to have a basic understanding of
   the underlying techniques and assumptions.
@@ -46,9 +46,9 @@ pg_dump dbname > 
    client application (albeit a particularly clever one). This means
    that you can do this backup procedure from any remote host that has
    access to the database. But remember that pg_dump
-   does not operate with special permissions. In particular, you must
+   does not operate with special permissions. In particular, it must
    have read access to all tables that you want to back up, so in
-   practice you almost always have to be a database superuser.
+   practice you almost always have to run it as a database superuser.
   
 
   
@@ -111,26 +111,25 @@ psql dbname < 
     command, you must create it yourself from template0 before executing
     psql (e.g., with createdb -T template0
     dbname).
-    psql supports similar options to pg_dump 
+    psql supports options similar to pg_dump 
     for controlling the database server location and the user name. See
-    its reference page for more information.
+    's reference page for more information.
    
 
    
-    If the objects in the original database were owned by different
-    users, then the dump will instruct psql to connect
-    as each affected user in turn and then create the relevant
-    objects. This way the original ownership is preserved. This also
-    means, however, that all these users must already exist, and
-    furthermore that you must be allowed to connect as each of them.
-    It might therefore be necessary to temporarily relax the client
-    authentication settings.
+    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 
     endterm="sql-analyze-title"> on each database so the optimizer has
-    useful statistics. You can also run vacuumdb -a -z to
+    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.
    
@@ -189,7 +188,7 @@ psql template1 < infile
   
 
   
-   <span class="marked">Large D</span>atabases
+   <span class="marked">Handling large d</span>atabases
 
    
     Since PostgreSQL allows tables larger
@@ -249,17 +248,19 @@ cat filename* | psql 
    
     Use the custom dump format.
     
-     If PostgreSQL was built on a system with the zlib compression library
-     installed, the custom dump format will compress data as it writes it
-     to the output file. For large databases, this will produce similar dump
-     sizes to using gzip, but has the added advantage that the tables can be
-     restored selectively. The following command dumps a database using the
-     custom dump format:
+     If PostgreSQL was built on a system with the
+     zlib compression library installed, the custom dump
+     format will compress data as it writes it to the output file. This will
+     produce dump file sizes similar to using gzip, but it
+     has the added advantage that tables can be restored selectively. The
+     following command dumps a database using the custom dump format:
 
 
 pg_dump -Fc dbname > filename
 
 
+     A custom-format dump is not a script for psql, but
+     instead must be restored with pg_restore.
      See the  and 
      linkend="app-pgrestore"> reference pages for details.
     
@@ -276,7 +277,8 @@ pg_dump -Fc dbname > 
     objectbackup To dump
     large objects you must use either the custom or the tar output
     format, and use the 
-    pg_dump. See the reference pages for details.  The
+    pg_dump. See the  reference
+    page for details.  The
     directory contrib/pg_dumplo of the
     PostgreSQL source tree also contains a program
     that can dump large objects.
@@ -366,7 +368,9 @@ tar -cf backup.tar /usr/local/pgsql/data
    data files and WAL log on different disks) there may not be any way
    to obtain exactly-simultaneous frozen snapshots of all the volumes.
    Read your file system documentation very carefully before trusting
-   to the consistent-snapshot technique in such situations.
+   to the consistent-snapshot technique in such situations.  The safest
+   approach is to shut down the database server for long enough to
+   establish all the frozen snapshots.
   
 
   
@@ -616,9 +620,12 @@ archive_command = 'test ! -f .../%f && cp %p .../%f'
     modifications made to the data in your PostgreSQL database
     it will not restore changes made to configuration files (that is,
     postgresql.conf, pg_hba.conf and
-    pg_ident.conf) after the initial base backup.
+    pg_ident.conf), since those are edited manually rather
+    than through SQL operations.
     You may wish to keep the configuration files in a location that will
-    be backed up by your regular file system backup procedures.
+    be backed up by your regular file system backup procedures.  See
+     for how to relocate the
+    configuration files.
    
   
 
@@ -930,8 +937,8 @@ restore_command = 'cp /mnt/server/archivedir/%f %p'
         in the command. 
        
        
-        It is important for the command to return a zero exit status only
-        if it succeeds.  The command will be asked for file
+        It is important for the command to return a zero exit status if and
+        only if it succeeds.  The command will be asked for file
         names that are not present in the archive; it must return nonzero
         when so asked.  Examples:
 
@@ -1083,7 +1090,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"'  # Windows
     that was current when the base backup was taken.  If you want to recover
     into some child timeline (that is, you want to return to some state that
     was itself generated after a recovery attempt), you need to specify the
-    target timeline in recovery.conf.  You cannot recover into
+    target timeline ID in recovery.conf.  You cannot recover into
     timelines that branched off earlier than the base backup.
    
   
@@ -1131,6 +1138,13 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"'  # Windows
    compatibility
   
 
+  
+   This section discusses how to migrate your database data from one
+   PostgreSQL release to a newer one.
+   The software installation procedure per se is not the
+   subject of this section; those details are in .
+  
+
   
    As a general rule, the internal data storage format is subject to
    change between major releases of PostgreSQL (where
@@ -1140,17 +1154,21 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"'  # Windows
    storage formats. For example, releases 7.0.1, 7.1.2, and 7.2 are
    not compatible, whereas 7.1.1 and 7.1.2 are. When you update
    between compatible versions, you can simply replace the executables
-   and reuse the data area on disk. Otherwise you need to back
-   up your data and restore it on the new server, using
-   pg_dump. There are checks in place that prevent you
-   from using a data area with an incompatible version of
-   PostgreSQL, so no harm can be done by
-   confusing these things. It is recommended that you use the
-   pg_dump program from the newer version of
-   PostgreSQL to take advantage of any enhancements in
-   pg_dump that may have been made. The precise
-   installation procedure is not the subject of this section; those
-   details are in .
+   and reuse the data directory on disk. Otherwise you need to back
+   up your data and restore it on the new server.  This has to be done
+   using pg_dump; file system level backup methods
+   obviously won't work. There are checks in place that prevent you
+   from using a data directory with an incompatible version of
+   PostgreSQL, so no great harm can be done by
+   trying to start the wrong server version on a data directory.
+  
+
+  
+   It is recommended that you use the pg_dump and
+   pg_dumpall programs from the newer version of
+   PostgreSQL, to take advantage of any enhancements
+   that may have been made in these programs.  Current releases of the
+   dump programs can read data from any server version back to 7.0.
   
 
   
@@ -1165,11 +1183,17 @@ pg_dumpall -p 5432 | psql -d template1 -p 6543
    to transfer your data.  Or use an intermediate file if you want.
    Then you can shut down the old server and start the new server at
    the port the old one was running at. You should make sure that the
-   database is not updated after you run pg_dumpall,
+   old database is not updated after you run pg_dumpall,
    otherwise you will obviously lose that data. See 
    linkend="client-authentication"> for information on how to prohibit
-   access. In practice you probably want to test your client
-   applications on the new setup before switching over.
+   access.
+  
+
+  
+   In practice you probably want to test your client
+   applications on the new setup before switching over completely.
+   This is another reason for setting up concurrent installations
+   of old and new versions.
   
 
   
@@ -1194,22 +1218,16 @@ psql template1 < backup
    you of strategic places to perform these steps.
   
 
-  
-   You will always need a SQL dump (pg_dump dump) for
-   migrating to a new release.  File-system-level backups (including
-   on-line backups) will not work, for the same reason that you can't
-   just do the update in-place: the file formats won't necessarily be
-   compatible across major releases.
-  
-
   
    
     When you move the old installation out of the way
-    it is no longer perfectly usable. Some parts of the installation
-    contain information about where the other parts are located. This
-    is usually not a big problem but if you plan on using two
+    it may no longer be perfectly usable. Some of the executable programs
+    contain absolute paths to various installed programs and data files.
+    This is usually not a big problem but if you plan on using two
     installations in parallel for a while you should assign them
-    different installation directories at build time.
+    different installation directories at build time.  (This problem
+    is rectified in PostgreSQL 8.0 and later, but you
+    need to be wary of moving older installations.)
    
   
  
index 215519bc2704e1be7f81eb503206b7b69467121e..65cc6f651f19a16d3d6ff838fbaabb5b87c9d774 100644 (file)
@@ -1,5 +1,5 @@
 
 
 
@@ -24,7 +24,10 @@ $PostgreSQL: pgsql/doc/src/sgml/diskusage.sgml,v 1.12 2004/12/01 19:00:27 tgl Ex
    which is used to store values too wide to fit comfortably in the main
    table.  There will be one index on the
    TOAST table, if present. There may also be indexes associated
-   with the base table.
+   with the base table.  Each table and index is stored in a separate disk
+   file — possibly more than one file, if the file would exceed one
+   gigabyte.  Naming conventions for these files are described in 
+   linkend="file-layout">.
   
 
   
@@ -135,6 +138,13 @@ SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;
     not wait until the disk is completely full to take action.
    
   
+
+  
+   If your system supports per-user disk quotas, then the database
+   will naturally be subject to whatever quota is placed on the user
+   the server runs as.  Exceeding the quota will have the same bad
+   effects as running out of space entirely.
+  
  
 
 
index 4486745c76082fdc2b85a2b8680aa8842300702b..063f481f7aaaa0430cdb33e70b968219aec65cd2 100644 (file)
@@ -1,5 +1,5 @@
 
 
 
@@ -26,7 +26,8 @@ $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.26 2004/03/26 03:18:28 neilc
    analyzing performance.  Most of this chapter is devoted to describing
    PostgreSQL's statistics collector,
    but one should not neglect regular Unix monitoring programs such as
-   ps and top.  Also, once one has identified a
+   ps, top, iostat, and vmstat.
+   Also, once one has identified a
    poorly-performing query, further investigation may be needed using
    PostgreSQL's 
    endterm="sql-explain-title"> command.
@@ -172,25 +173,28 @@ postgres: user database host 
   Viewing Collected Statistics
 
   
-   Several predefined views are available to show the results of
-   statistics collection, listed in 
-   linkend="monitoring-stats-views-table">.  Alternatively, one can
+   Several predefined views, listed in f
+   linkend="monitoring-stats-views-table">, are available to show the results
+   of statistics collection.  Alternatively, one can
    build custom views using the underlying statistics functions.
   
 
   
    When using the statistics to monitor current activity, it is important
    to realize that the information does not update instantaneously.
-   Each individual server process transmits new access counts to the collector
-   just before waiting for another client command; so a query still in
+   Each individual server process transmits new block and row access counts to
+   the collector just before going idle; so a query or transaction still in
    progress does not affect the displayed totals.  Also, the collector itself
-   emits new totals at most once per pgstat_stat_interval milliseconds
-   (500 by default).  So the displayed totals lag behind actual activity.
+   emits a new report at most once per pgstat_stat_interval
+   milliseconds (500 by default).  So the displayed information lags behind
+   actual activity.  Current-query information is reported to the collector
+   immediately, but is still subject to the
+   pgstat_stat_interval delay before it becomes visible.
   
 
   
    Another important point is that when a server process is asked to display
-   any of these statistics, it first fetches the most recent totals emitted by
+   any of these statistics, it first fetches the most recent report emitted by
    the collector process and then continues to use this snapshot for all
    statistical views and functions until the end of its current transaction.
    So the statistics will appear not to change as long as you continue the
@@ -614,7 +618,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS procpid,
    database administrator to view information about the outstanding
    locks in the lock manager. For example, this capability can be used
    to:
-   
+
    
     
      
index d04a5088f072753c56f3c5210fd6ef36cc0fdc9b..73d6ebead4b7473bf6ace1095d086204befdc519 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
  
   Regression Tests
    The regression tests are a comprehensive set of tests for the SQL
    implementation in PostgreSQL.  They test
    standard SQL operations as well as the extended capabilities of
-   PostgreSQL.  From
-   PostgreSQL 6.1 onward, the regression
-   tests are current for every official release.
+   PostgreSQL.
   
 
   
    Running the Tests
 
   
-   The regression test can be run against an already installed and
+   The regression tests can be run against an already installed and
    running server, or using a temporary installation within the build
    tree.  Furthermore, there is a parallel and a
    sequential mode for running the tests.  The
@@ -51,12 +49,13 @@ gmake check
 
 
 ======================
- All 93 tests passed.
+ All 96 tests passed.
 ======================
 
 
    or otherwise a note about which tests failed.  See 
-   linkend="regress-evaluation"> below for more.
+   linkend="regress-evaluation"> below before assuming that a
+   failure represents a serious problem.
   
 
    
@@ -130,10 +129,14 @@ gmake SHELL=/bin/ksh check
    server, , ]]> then type
 
 gmake installcheck
+
+or for a parallel test
+
+gmake installcheck-parallel
 
    The tests will expect to contact the server at the local host and the
-   default port number, unless directed otherwise by PGHOST and PGPORT
-   environment variables.
+   default port number, unless directed otherwise by PGHOST and
+   PGPORT environment variables.
   
   
 
@@ -323,7 +326,7 @@ exclusion of those that don't.
 diff results/random.out expected/random.out
 
      should produce only one or a few lines of differences.  You need
-     not worry unless the random test repeatedly fails.
+     not worry unless the random test fails repeatedly.