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

Started by Scott Briggsover 13 years ago4 messagesgeneral
Jump to latest
#1Scott Briggs
scott.br@gmail.com

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

#2John R Pierce
pierce@hogranch.com
In reply to: Scott Briggs (#1)
Re: Migrating from 8.3 to 9.1 - date/time storage types do not match

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

#3Alan Hodgson
ahodgson@simkin.ca
In reply to: Scott Briggs (#1)
Re: Migrating from 8.3 to 9.1 - date/time storage types do not match

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.

#4Alan Hodgson
ahodgson@simkin.ca
In reply to: Alan Hodgson (#3)
Re: Migrating from 8.3 to 9.1 - date/time storage types do not match

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 ...