The internal data storage format changes with new releases of
PostgreSQL. Therefore, if you are upgrading an
existing installation that does not have a version number
"7.3.x", you must back up and restore your
data as shown here. These instructions assume that your existing
installation is under the /usr/local/pgsql directory,
and that the data area is in /usr/local/pgsql/data.
Substitute your paths appropriately.
Make sure that your database is not updated during or after the
backup. This does not affect the integrity of the backup, but the
changed data would of course not be included. If necessary, edit
the permissions in the file
/usr/local/pgsql/data/pg_hba.conf (or equivalent) to
disallow access from everyone except you.
To back up your database installation, type:
pg_dumpall > outputfile
If you need to preserve OIDs (such as when using them as
foreign keys), then use the -o option when running
pg_dumpall.
pg_dumpall does not
save large objects. Check
Section 9.1.4
if you need to do this.
To make the backup, you can use the pg_dumpall
command from the version you are currently running. For best
results, however, try to use the pg_dumpall
command from PostgreSQL 7.3, since this version contains
bug fixes and improvements over older versions. While this
advice might seem idiosyncratic since you haven't installed the
new version yet, it is advisable to follow it if you plan to
install the new version in parallel with the old version. In
that case you can complete the installation normally and transfer
the data later. This will also decrease the downtime.
If you are installing the new version at the same location as the
old one then shut down the old server, at the latest before you
install the new files:
kill -INT `cat /usr/local/pgsql/data/postmaster.pid`
Versions prior to 7.0 do not have this
postmaster.pid file. If you are using such a version
you must find out the process id of the server yourself, for
example by typing ps ax | grep postmaster, and
supply it to the kill command.
On systems that have PostgreSQL started at boot time, there is
probably a start-up file that will accomplish the same thing. For
example, on a Red Hat Linux system one might find that
/etc/rc.d/init.d/postgresql stop
works. Another possibility is pg_ctl stop.
If you are installing in the same place as the old version then
it is also a good idea to move the old installation out of the
way, in case you have trouble and need to revert to it.
Use a command like this:
mv /usr/local/pgsql /usr/local/pgsql.old
After you have installed PostgreSQL 7.3, create a new database
directory and start the new server. Remember that you must execute
these commands while logged in to the special database user account
(which you already have if you are upgrading).
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
Finally, restore your data with
/usr/local/pgsql/bin/psql -d template1 -f outputfile
using the new psql.
These topics are discussed at length in Section 9.3, which you are encouraged to read in any
case.