JoeToe

PostgreSQL Migration - 8.1 & 8.3

Die Migration von PostgreSQL 8.1 zu 8.3 ist nicht ganz leicht! Vor allem dann, wenn man Module wie die Volltextsuche nutzt. Wenn man Zeit und Lust hat, dann kann man Versuchen den 8.1-Dump zu editieren und an die 8.3-Besonderheiten anzupassen. Im Falle eines 24/7-Systems geht aber nur eine eher sanfte Methode.

Es wird davon ausgegangen, dass PostgreSQL 8.1 installiert und konfiguriert ist. Nun kann (im laufenden Betrieb die neue PostgreSQL-Version installiert werden:
apt-get install postgresql-8.3 postgresql-contrib-8.3

Im Falle von Ubuntu wird der Port der Neuinstallation auf 5433 gesetzt.

Da PostgreSQL 8.3 bereits gestartet wurde muss es zum konfigurieren natürlich gestoppt werden:
/etc/init.d/postgres-8.3 stop

In der Konfigurations-Datei ‘/etc/postgres/8.1/main/postgresql.conf’ muss nun der gewünschte Speicherort der Datenbank und gegebenenfalls ein alternativer Port angegeben werden. - Vorsicht - Beide Datenbanksysteme müssen unterschiedliche Ports haben!
data_directory = ‘/data/pgsql/8.3/’
port = 5433

Da nun der Speicherort (dies ist natürlich optional) geändert wurde, muss die erstellte Datenbank natürlich dorthin verschoben/kopiert werden. Es ist dabei darauf zu achten, dass alle Rechte übernommen werden.

cp -pr /var/lib/postgresql/8.3/main /data/pgsql/8.3

Nun müssen/sollten nur noch die Rechtevergabe angepasst werden - Also: WIE darf WER auf das Datenbanksystem zugreifen. Diese Konfiguration findet sich in der Datei ‘/etc/postgresql/8.3/main/pg_hba.conf’ Der Inhalt kann einfach von der Vorgängerversion übernommen werden.

Damit ist der Parallelbetrieb konfiguriert und das neue Datenbanksystem kann angestartet werden.
/etc/init.d/postgresql-8.3 start

Ein erster Test kann zeigen, ob der Inhalt der Datenbanken kompatibel ist.

pg_dumpall -p 5432 | psql -d postgres -p 5433

Im Falle, dass beispielsweise die Volltextsuche genutzt wird schlägt dieser Import natürlich fehl. Dann muss Handarbeit geleistet werden.

Mein Tipp: Die Spalten mit den Volltext-Index-Daten löschen, exportieren, importieren, die Spalten wieder hinzufügen und den Index erneut aufbauen.
Das klingt erstmal sehr aufwändig - scheint mir aber der einzig saubere Weg zu sein die Daten zu migrieren ohne Gefahr zu laufen “Altlasten”, die einem einen fernen Tages auf die Füße fallen können, mitzunehmen.

Schlagworte: , ,

Kommentieren