Ich hab heute mal ein Wiki von Version 1.4 mit MySQL auf Version 1.11 mit PostgreSQL "upgegraded".
Dabei war das updaten der Versionen trotz verändertem Datenbankschema kein Problem. Der Updater der Mediawiki, maintainance/update.php, erledigt das sehr zuverlässig.
Nur ein wenig komplizierter war die Portierung der Datenbank auf PostgreSQL.
Wenn man nicht schon hat, installiert man zunächst PostgreSQL:
emerge postgresql
Damit eine frische Installation startfähig ist, muss noch ein
emerge --config postgresql
getätigt werden, wobei die grundlegenden Strukturen in /var/lib/postgresql erstellt werden.
Da man die folgenden Kommandos als root nicht so gut tätigen kann, da die Datenbank die Rolle "root" nicht kennt, wechselt man zu Standardbenutzer "posgtres":
su - postgres
Danach legt man einen Nutzer und eine gleichnamige Datenbank an:
createuser -S -D -R -P -E wikiuser (passwort wird gefragt)
createdb -O wikiuser wikidb
createlang plpgsql wikidb
psql wikidb < /usr/share/postgresql/contrib/tsearch2.sql
psql wikidb
wikidb=# grant select on pg_ts_cfg to wikiuser;
wikidb=# grant select on pg_ts_cfgmap to wikiuser;
wikidb=# grant select on pg_ts_dict to wikiuser;
wikidb=# grant select on pg_ts_parser to wikiuser;
wikidb=# update pg_ts_cfg set locale = current_setting('lc_collate') where ts_name = 'default' and prs_name='default';
wikidb=# \q
exit
Die letzten Zeilen installieren mitgelieferte, aber nicht aktivierte Features, die für die Mediawiki notwendig sind.
Dann wechselt man am besten in das Verzeichnis maintainance/postgres in der Mediawikiinstallation. Nun muss die die Struktur erstellt werden. Dazu gibt es eine tables.sql, jedoch in Version 1.11 fehlt das COMMIT für eine erfolgeiche Transaktion. Daher muss unten an die Datei noch ein COMMIT angefügt werden. Erst dann können die Tabellen erstellt werden:
echo "COMMIT;" >> tables.sql
psql -U wikiuser -f tables.sql wikidb
Nun gehts an die Daten. Da die SQL-Syntax von MySQL und Postgresql trotz Standards nicht kompatibel sind, muss der Dump etwas umgebaut werden. Die Mediawiki liefert dazu ein Perlskript mit, das gleichzeitig dumpt und in Postgres-Syntax überführt:
chmod u+x mediawiki_mysql2postgres.pl
./mediawiki_mysql2postgres.pl --db=mediawiki --user=mediawiki --password=password
Da fällt hinten eine mediawiki_upgrade.pg heraus. Die kann man dann in den Postgres importieren:
psql -U wikiuser -f mediawiki_upgrade.pg wikidb
Das war es im Grunde. Nun noch in der LocalSettings.php den $wgDBtype auf 'postgres' setzen und hoffen, dass alles noch geht.