mirror of https://github.com/postgres/postgres
parent
7d7adf24e7
commit
c870be6590
@ -0,0 +1,87 @@ |
||||
: |
||||
trap "rm -f /tmp/$$" 0 1 2 3 15 |
||||
|
||||
if [ "$#" -eq 0 ] |
||||
then echo "Usage: $0 [-f inputfile] database" 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ "X$1" = "X-f" ] |
||||
then INPUT="$2" |
||||
shift 2 |
||||
if [ ! -f "$INPUT" ] |
||||
then echo "$INPUT does not exist" 1>&2 |
||||
exit 1 |
||||
fi |
||||
else INPUT="" |
||||
fi |
||||
|
||||
if [ "$#" -ne 1 ] |
||||
then echo "Usage: $0 [-f input_file] database" 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
DATABASE="$1" |
||||
|
||||
# check things |
||||
|
||||
if [ ! -f "./lib/global1.bki.source" ] |
||||
then echo "$0 must be run from the top of the postgres directory tree." 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ ! -d "./data.upgrade" ] |
||||
then echo "You must rename your old /data directory to /data.upgrade and run initdb." 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ ! -d "./data" ] |
||||
then echo "You must run initdb to create the template1 database." 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ ! -d "./data/base/template1" ] |
||||
then echo "$0 must be run as the postgres superuser." 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
# do I need to create a database? |
||||
|
||||
if [ "$DATABASE" != "template1" ] |
||||
then destroydb "$DATABASE" |
||||
createdb "$DATABASE" |
||||
fi |
||||
|
||||
# remove COPY statements, preserve pgdump_oid setting from pg_dumpall |
||||
|
||||
cat $INPUT | awk ' { |
||||
if (toupper($0) ~ /^COPY / && |
||||
toupper($0) !~ /^COPY[ ]*PGDUMP_OID/ ) |
||||
while (getline $0 > 0 && $0 != "\\.") |
||||
; |
||||
else print $0; |
||||
}' >/tmp/$$ |
||||
|
||||
#create empty tables/indexes |
||||
|
||||
psql "$DATABASE" <"/tmp/$$" |
||||
set -x |
||||
|
||||
for DIR in data/base/* |
||||
do |
||||
BASEDIR="`basename $DIR`" |
||||
if [ -d "$DIR" -a \ |
||||
-d "data.upgrade/$DIR" -a \ |
||||
\( "$DATABASE" = "$BASEDIR" -o "$DATABASE" = "template1" \) ] |
||||
then for FILE in data.upgrade/$DIR/* |
||||
do |
||||
BASEFILE="`basename $FILE`" |
||||
if [ `expr "$BASEFILE" : "pg_"` -ne 3 -a \ |
||||
"$BASEFILE" != "PG_VERSION" ] |
||||
then mv $FILE $DIR |
||||
fi |
||||
done |
||||
fi |
||||
done |
||||
|
||||
echo "You may removed the data.upgrade directory with 'rm -r data.upgrade'." |
@ -0,0 +1,56 @@ |
||||
.\" This is -*-nroff-*- |
||||
.\" XXX standard disclaimer belongs here.... |
||||
.\" $Header: /cvsroot/pgsql/src/man/Attic/pg_upgrade.1,v 1.1 1998/08/30 05:06:54 momjian Exp $ |
||||
.TH pg_upgrade UNIX 1/20/96 PostgreSQL PostgreSQL |
||||
.SH NAME |
||||
pg_upgrade - allows upgrade from a previous release without reloading data |
||||
.SH SYNOPSIS |
||||
.BR pg_upgrade |
||||
[-f input_file] database |
||||
.SH DESCRIPTION |
||||
.IR "pg_upgrade" |
||||
is a utility for upgrading from a previous PostgreSQL release |
||||
without reloading all the data. |
||||
First, to be safe, back up your data directory. |
||||
Then, use: |
||||
.nf |
||||
|
||||
pg_dumpall -s -o >db.out |
||||
|
||||
.fi |
||||
to dump out your old database definitions without data, |
||||
while perserving the max system oid. |
||||
.PP |
||||
Then rename (using |
||||
.IR mv ) |
||||
your old pgsql /data directory to /data.upgrade and do a |
||||
.IR "make install" |
||||
to install the new binaries. |
||||
Then run |
||||
.IR initdb |
||||
to create a new |
||||
.IR template1 |
||||
database containing the system tables for the new release. |
||||
.IR cd |
||||
to the pgsql main directory, and type: |
||||
.nf |
||||
|
||||
pg_upgrade -f db.out template1 |
||||
|
||||
.fi |
||||
The system will do some checking to make sure everything is properly |
||||
configured, and run your |
||||
.IR db.out |
||||
script to create all the databases and tables you had, but with no data. |
||||
It will then move the data files from /data.upgrade into the proper |
||||
.IR /data |
||||
directory. |
||||
You can then start the |
||||
.IR postmaster |
||||
and check out the data. |
||||
You can delete the |
||||
.IR /data.upgrade |
||||
directory when you are finished. |
||||
.fi |
||||
.SH "SEE ALSO" |
||||
pg_dumpall(1). |
Loading…
Reference in new issue