Thread: Migrating from 8.3 to 9.1 - date/time storage types do not match

Migrating from 8.3 to 9.1 - date/time storage types do not match

From
Scott Briggs
Date:
So we have a large TB database that we need to migrate to 9.1 and I'm
wondering if there's a way to do this process in stages.

Since the date/time storage types changes between 8.3 and 8.4, I
realize we'll have to dump the database and my plan is to create a
backup using pg_start_backup(), run that backup on another server
using postgres 8.3 which I could then dump and import into a 9.1
server.

My question is, is there some way I can take WAL files created since
the beginning of the original backup on the 8.3 server, convert those
into text that I could then apply to the 9.1 server?  The mysql
equivalent to this is mysqlbinlog which you can apply to mysql binary
log files.

Cheers,
Scott


Re: Migrating from 8.3 to 9.1 - date/time storage types do not match

From
John R Pierce
Date:
On 08/22/12 2:17 PM, Scott Briggs wrote:
> So we have a large TB database that we need to migrate to 9.1 and I'm
> wondering if there's a way to do this process in stages.
>
> Since the date/time storage types changes between 8.3 and 8.4, I
> realize we'll have to dump the database and my plan is to create a
> backup using pg_start_backup(), run that backup on another server
> using postgres 8.3 which I could then dump and import into a 9.1
> server.
>
> My question is, is there some way I can take WAL files created since
> the beginning of the original backup on the 8.3 server, convert those
> into text that I could then apply to the 9.1 server?  The mysql
> equivalent to this is mysqlbinlog which you can apply to mysql binary
> log files.


postgres makes changes to the binary format with every x.y version.
there's far more changes than just the binary date/time format.


those WAL files contain, for all practical purposes, binary deltas to
the data files.  they can only be applied to an exact file by file
duplicate of the original.  when you do your dump/import from 8.x to
9.1, there's no resemblance between the original and 9.1 files.



--
john r pierce                            N 37, W 122
santa cruz ca                         mid-left coast



Re: Migrating from 8.3 to 9.1 - date/time storage types do not match

From
Alan Hodgson
Date:
On Wednesday, August 22, 2012 05:17:10 PM Scott Briggs wrote:
> So we have a large TB database that we need to migrate to 9.1 and I'm
> wondering if there's a way to do this process in stages.
>
> Since the date/time storage types changes between 8.3 and 8.4, I
> realize we'll have to dump the database and my plan is to create a
> backup using pg_start_backup(), run that backup on another server
> using postgres 8.3 which I could then dump and import into a 9.1
> server.
>
> My question is, is there some way I can take WAL files created since
> the beginning of the original backup on the 8.3 server, convert those
> into text that I could then apply to the 9.1 server?  The mysql
> equivalent to this is mysqlbinlog which you can apply to mysql binary
> log files.

The most likely way to get this done is with Slony. Setup a Slony slave,
upgrade the slave to 9.1 with a dump/reload, run it and let Slony catch it up,
and then promote it to be the Slony cluster master and switch your clients
over.

Slony is table based and certainly not trivial to setup, but it'll work. If
your change rate isn't too horrendously high, anyway.

The Slony tables need some updating after a dump/reload to fix OID issues.
There are tools included to do that. You'd need to experiment to nail down the
process. And you would want to make sure no one is making DDL changes outside
of Slony during the whole process.

If you aren't already familiar with Slony, this is probably weeks of work to
fully prepare for and get right. But it will let you avoid the downtime.


Re: Migrating from 8.3 to 9.1 - date/time storage types do not match

From
Alan Hodgson
Date:
On Wednesday, August 22, 2012 02:43:05 PM Alan Hodgson wrote:
> The most likely way to get this done is with Slony. Setup a Slony slave,
> upgrade the slave to 9.1 with a dump/reload, run it and let Slony catch it
> up, and then promote it to be the Slony cluster master and switch your
> clients over.
>

Or, of course, just setup a clean 9.1 and let Slony populate it. Duh. Too long
since I did that ...