Upgrade手順の概要
- database clusterのbackupを取る
- (aptitudeとかで) PostgreSQLをupgrade (今回は9.5→9.6)
- PostgreSQLやweb serverなどを停止
- textsearch_jaを9.6のdevelopment filesでrebuild & install
- pg_upgradeclusterでclusterをupgrade
- textsearch_ja.sqlを修正し、対象databseに適用
- web serverなどをstart
- MediaWikiの動作確認
- 古い (9.5の)clusterをdrop
実際にいろいろとやってみた結果、上記の手順なら不具合が出ないか少なくて済むと思う。
なお、以下の個別の詳細手順については↑とは一致しない。というのも、aptitudeでupgradeすると、9.6がinstallされた時点でserverが9.6の空cluster+port 5433でstartしてしまっているから。
PostgreSQLのupgrade
PostgreSQLそのもののupgradeに関しては/usr/share/doc/postgresql-9.6/README.Debian.gzを参照のこと。ざっくりまとめると、install scriptによって新しいversion (9.6)の空っぽのclusterが自動で作られるので、それをdropしてから古いversion (9.5)のclusterを9.6にupgradeしてね、ということ。
pg_dropcluster 9.6 main
pg_upgradecluster 9.5 main
なお、不要になった古いversionのclusterは、変換したclusterが正常であることを確認した後に削除して良い。
portの修正
この時点で9.5のserverがport 5432を使っていたため、9.6のserverはport 5433を使ってしまった。/etc/postgresql/9.6/main/postgresql.confにportの設定があるので、これを5432に修正しておく。portが変更されたままだとphp-fpmとかがPostgreSQLを見付けられなくなる。
MediaWiki関連のupgrade
textsearch_jaの更新
MediaWikiで全文検索できるようにするため、PostgreSQLで日本語の全文検索を行うためのtextsearch_jaをinstallする。SourceからbuildするのにPostgreSQLのdeveloment packageが必要なのでpostgresql-server-devをinstallしておく。textsearch_jaのdirectoryにて:
make PGXS_USE=1
sudo make PGXS_USE=1 install
これで/usr/share/postgresql/9.6/contrib/あたりに関連filesがinstallされる。
※この手順が終わるより前にpg_upgradeclusterを実行すると、functionが見付からないとかでMediaWiki関連のdatabaseでerrorが大量に出る。
textsearch_jaの適用
MediaWikiが使用しているdatabaseにtextsearch_jaをinstallする。しかし、その前にPostgreSQLの仕様変更に伴う修正をtextsearch_ja.sqlに行う必要がある。具体的には"LANGUAGE 'C'" → "LANGUAGE c"に全て変更する。
cf. http://stackoverflow.com/questions/12514664/postgresql-procedural-language-c-not-found
修正後、
psql -f /usr/share/postgresql/9.6/contrib/textsearch_ja.sql <database>
既にfunctionがあるとかでerrorが出る場合は、一旦
psql -f /usr/share/postgresql/9.6/contrib/uninstall_textsearch_ja.sql <database>
を実行してから、あらためてやりなおす。
0 件のコメント:
コメントを投稿