Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 May 2008 09:15:24 -0400
From:      Bill Moran <wmoran@potentialtech.com>
To:        Gunther Mayer <gunther.mayer@googlemail.com>
Cc:        FreeBSD <freebsd-questions@freebsd.org>
Subject:   Re: Best way of upgrading postgresql in production?
Message-ID:  <20080529091524.d485ae21.wmoran@potentialtech.com>
In-Reply-To: <483EA5AF.5040901@gmail.com>
References:  <483EA5AF.5040901@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In response to Gunther Mayer <gunther.mayer@googlemail.com>:
> 
> I've been grappling with this and read all sorts of email threads and 
> blog posts but I still have no good solution to the following problem: I 
> want to upgrade a postgresql installation on FreeBSD 6.3 from 8.2 to 8.3 
> as we'd like to take advantage of its new features and performance 
> enhancements. Yet none of the ports system offers no clean _and_ quick 
> way of performing such an upgrade as the Makefiles of the respective 
> ports choke as soon as they detect an existing older -server or -client.
> 
> Yet all I want to do is in a script which fires automatically at 5am via 
> cron (of course I'll get up to check just in case but I've done this 
> many times before):
> 
>    1. Do all backup tasks (build packages for all installed postgresql
>       8.2 stuff for possible rollback, full database dump, configs etc.)
>       and take down all processes that write to the db
>    2. Shut down the database
>    3. Uninstall all postgresql 8.2 ports (client, server and client libs
>       we depend on)
>    4. Install all postgresql 8.3 ports
>    5. Fire up the new db, restore the complete database dump
>    6. Restore the configs (pg_hba.conf, postgresql.conf etc.) and
>       restart the database
>    7. Start up all "db write" services again
> 
> Ideally that process shouldn't take longer than 5 minutes but step 
> number 4 is currently a big stumbling block as
> 
>     * Building from ports will take a while
>     * I can't find any binary packages for 8.3 (would need i386 for
>       testing and amd64 for live) anywhere as far as I can see
>       (ftp.freebsd.org has nothing, nor do the mirrors)
>     * building binary packages myself is impossible on the same machines
>       as pkg_create can only do that with installed packages, "make
>       package" et. all choke when they realise you already have
>       82-{client,server} installed and I don't see any other way of
>       creating a package without installing one
> 
> How can I get out of this catch-22 /without /resorting to complicated 
> jail setups or even worse, manual compilations with different prefixes 
> and other nasties? There must be a way to get a package somehow...

Jail setups are not complicated.  You could also make the packages on
another system.  How about doing a make package on the server that you've
tested your application against 8.3 on?  You _have_ done that, right?

What makes you think that jail setups are so complicated.  I set up new
jails almost every week.  I get the impression that you have some reason
for avoiding the obvious solution, and I suspect it revolves around some
incorrect impression that jails are "complicated".

-- 
Bill Moran
http://www.potentialtech.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080529091524.d485ae21.wmoran>