On 02/09 10:52, Stuart Henderson wrote:
> On 2017/02/08 21:00, Jeremy Evans wrote:
> > On 02/09 02:35, Stuart Henderson wrote:
> > > I've just tried pg_upgrade following the pkg-readme. It went OK in the
> > > end but there were some bumps along the way. A few notes:
> > 
> > Sorry about that.  The blame lies with me as I wrote the documentation.
> 
> That's OK, it gave me a good headstart and the whole process was far
> less painful than before, many thanks for doing the work on -previous
> and pg_upgrade!
> 
> > How about the following patch, which I think addresses all of the issues
> > you found?  To fix the data.old issue, let's version the old directory,
> > since that makes data loss less likely.  We will need to remember to
> > update the version when the PostgreSQL major version changes.
> 
> That's a great idea - here it is again with tweaks so that we don't
> need to change it manually (and same for the @ask-update line).
> I also reduced the spacing on the pg_upgrade lines to match the
> earlier cp lines, which also took it down to one continuation
> line instead of two.

That's definitely an improvement on my version.  OK jeremy@

> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/databases/postgresql/Makefile,v
> retrieving revision 1.221
> diff -u -p -r1.221 Makefile
> --- Makefile  26 Dec 2016 13:56:04 -0000      1.221
> +++ Makefile  9 Feb 2017 10:49:46 -0000
> @@ -7,11 +7,10 @@ COMMENT-contrib=PostgreSQL RDBMS contrib
>  COMMENT-plpython=Python procedural language for PostgreSQL
>  COMMENT-pg_upgrade=Support for upgrading PostgreSQL data from previous 
> version
>  
> -# DO NOT FORGET to also change the @ask-update entry in pkg/PLIST-server
> -# in case a dump before / restore after pkg_add -u is required!
> -
>  VERSION=     9.6.1
> +PREV_MAJOR=  9.5
>  REVISION=    0
> +REVISION-server= 1
>  DISTNAME=    postgresql-${VERSION}
>  PKGNAME-main=        postgresql-client-${VERSION}
>  PKGNAME-server=      postgresql-server-${VERSION}
> @@ -42,7 +41,8 @@ MULTI_PACKAGES=     -docs -main -server -con
>  
>  MAKE_FILE=   GNUmakefile
>  
> -SUBST_VARS=  VERSION
> +V_MAJOR=     ${VERSION:R}
> +SUBST_VARS=  VERSION V_MAJOR PREV_MAJOR
>  
>  USE_GMAKE=   Yes
>  USE_GROFF=   Yes
> Index: pkg/PLIST-server
> ===================================================================
> RCS file: /cvs/ports/databases/postgresql/pkg/PLIST-server,v
> retrieving revision 1.30
> diff -u -p -r1.30 PLIST-server
> --- pkg/PLIST-server  18 Dec 2016 18:18:27 -0000      1.30
> +++ pkg/PLIST-server  9 Feb 2017 10:49:46 -0000
> @@ -4,7 +4,7 @@
>  @conflict postgresql-clients-*
>  @conflict postgresql-server-*
>  @conflict postgresql-*
> -@ask-update postgresql-server-<9.6 Make sure your existing database is 
> backed up
> +@ask-update postgresql-server-<${V_MAJOR} Make sure your existing database 
> is backed up
>  @newgroup _postgresql:503
>  @newuser _postgresql:503:_postgresql:daemon:PostgreSQL 
> Manager:/var/postgresql:/bin/sh
>  @bin bin/initdb
> Index: pkg/README-server
> ===================================================================
> RCS file: /cvs/ports/databases/postgresql/pkg/README-server,v
> retrieving revision 1.20
> diff -u -p -r1.20 README-server
> --- pkg/README-server 18 Dec 2016 18:18:27 -0000      1.20
> +++ pkg/README-server 9 Feb 2017 10:49:46 -0000
> @@ -125,7 +125,7 @@ to the current version.
>  # pkg_add -ui postgresql-server
>  
>  4) Backup your old data directory:
> -# mv /var/postgresql/data /var/postgresql/data.old
> +# mv /var/postgresql/data /var/postgresql/data-${PREV_MAJOR}
>  
>  5) Create a new data directory (using -E UTF8 if appropriate):
>  # su _postgresql -c "mkdir /var/postgresql/data"
> @@ -133,9 +133,9 @@ to the current version.
>  
>  6) Restore your old pg_hba.conf and (if used) SSL certificates
>  # su _postgresql -c \
> -    "cp /var/postgresql/data.old/pg_hba.conf /var/postgresql/data/"
> +    "cp /var/postgresql/data-${PREV_MAJOR}/pg_hba.conf /var/postgresql/data/"
>  # su _postgresql -c \
> -    "cp /var/postgresql/data.old/server.{crt,key} /var/postgresql/data/"
> +    "cp /var/postgresql/data-${PREV_MAJOR}/server.{crt,key} 
> /var/postgresql/data/"
>  
>  Some postgresql.conf settings changed or disappeared in this version.
>  Examine your old file for local changes and apply them to the new version.
> @@ -157,10 +157,10 @@ faster than a dump and reload, especiall
>  # ${RCDIR}/postgresql stop
>  
>  2) Upgrade your PostgreSQL package with pkg_add.
> -# pkg_add -ui postgresql-pg_upgrade
> +# pkg_add postgresql-pg_upgrade
>  
>  3) Backup your old data directory:
> -# mv /var/postgresql/data /var/postgresql/data.old
> +# mv /var/postgresql/data /var/postgresql/data-${PREV_MAJOR}
>  
>  4) Create a new data directory (using -E UTF8 if appropriate):
>  # su _postgresql -c "mkdir /var/postgresql/data"
> @@ -168,19 +168,26 @@ faster than a dump and reload, especiall
>  
>  5) Restore your old pg_hba.conf and (if used) SSL certificates
>  # su _postgresql -c \
> -    "cp /var/postgresql/data.old/pg_hba.conf /var/postgresql/data/"
> +    "cp /var/postgresql/data-${PREV_MAJOR}/pg_hba.conf /var/postgresql/data/"
>  # su _postgresql -c \
> -    "cp /var/postgresql/data.old/server.{crt,key} /var/postgresql/data/"
> +    "cp /var/postgresql/data-${PREV_MAJOR}/server.{crt,key} 
> /var/postgresql/data/"
>  
>  Some postgresql.conf settings changed or disappeared in this version.
>  Examine your old file for local changes and apply them to the new version.
>  
> -6) Run pg_upgrade:
> -# su _postgresql -c "pg_upgrade -b /usr/local/bin/postgresql-9.5/
> -                     -B /usr/local/bin -U postgres
> -                     -d /var/postgresql/data.old/ -D /var/postgresql/data"
> +6) Temporarily support connecting without a password for local users by
> +   editing pg_hba.conf to include "local all postgres trust"
> +# su _postgresql -c "vi /var/postgresql/data/pg_hba.conf"
> +
> +7) Run pg_upgrade:
> +# su _postgresql -c "cd /var/postgresql && \
> +    pg_upgrade -b /usr/local/bin/postgresql-${PREV_MAJOR}/ -B /usr/local/bin 
> \
> +    -U postgres -d /var/postgresql/data-${PREV_MAJOR}/ -D 
> /var/postgresql/data"
>  
> -7) Start PostgreSQL:
> +8) Remove "local all postgres trust" line from pg_hba.conf
> +# su _postgresql -c "vi /var/postgresql/data/pg_hba.conf"
> +
> +9) Start PostgreSQL:
>  # ${RCDIR}/postgresql start
>  
>  Clients/Frontends
> 

Reply via email to