[Pkg-postgresql-public] Slony upgrade path

Peter Eisentraut petere at debian.org
Fri Nov 27 21:01:58 UTC 2009

I want to discuss some ideas on how to handle the Slony major version

This is the situation:  In lenny/stable we have Slony 1.2.15 built for
PostgreSQL 8.3, with package names being

postgresql-8.3-slony1 1.2.15-1
slony1-bin 1.2.15-1
slony1-doc 1.2.15-1

The latest upstream is Slony 2.0.2 (or maybe 2.0.3 soon).  Now 2.0 is
not compatible with 1.2, meaning that to upgrade you need to drop the
replication and reinstall it.  So this is perhaps not unlike the
PostgreSQL major version upgrades in spirit.  No word yet on a 2.1, but
I think it's safe to assume that it would be compatible with 2.0.

(Version numbering side note: The proper name of the product is
"Slony-I" (slony one), and it itself comes in versions 1.x and 2.x.
There is also something else called Slony 2, although now defunct, I
think.  This will result in some silly version numbers below.)

The question now is what to package for squeeze and how, and how to not
break anything during the upgrade.

Obviously, I'm not going to try any automated custom in-place upgrades
of replication clusters. ;-)  The approach is going to be more like
packaging both side-by-side.

I can see the following solution: Full scale parallel packaging for one
release, with versioned package names and dummy packages to pull in the
preferred one.  So in squeeze we'd have something like

source: slony1
postgresql-8.4-slony1-1 1.2.17
slony1-1-bin 1.2.17
slony1-1-doc 1.2.17

source: slony1-2
postgresql-8.4-slony1-2 2.0.3
slony1-2-bin 2.0.3
slony1-2-doc 2.0.3

also built by slony1:
postgresql-8.4-slony1 1.2.17 depends: postgresql-8.4-slony1-1
slony1-bin 1.2.17 depends: slony1-1-bin
slony1-doc 1.2.17 depends: slony1-1-doc

And put in a note that people need to upgrade to slony 2.x during the
lifetime of squeeze, and then in squeeze+1 change the dependencies of
the dummy package to slony1-2*.

Also, you will not be able to install postgresql-8.4-slony1-1 and
postgresql-8.4-slony1-2 at the same time, and neither slony1-1-bin and
slony1-2-bin.  (Not sure about the -doc packages.)

So a complete upgrade path from lenny PG 8.3 + Slony 1.2 might be:

1. Upgrade Debian to squeeze; installs postgresql-8.4 and
postgresql-8.4-slony1-1 etc.

2. Migrate PostgreSQL from 8.3 to 8.4 (perhaps using slony).

3. Upgrade Slony setup from 1.2 to 2.0 during squeeze lifetime.

Comments?  Other ideas?

More information about the Pkg-postgresql-public mailing list