海の底には何がある

これは日記だ。ブログじゃない。

右往左往

なんとなく体がだるいけれど百万遍へ。動物行動の映像データベースのOSをアップデートするのである。リモートでも作業できるけれども、さすがにこれだけの大改築だと不測の事態に備えてサーバー実機に物理的に触れる場所で作業するのが良かろうと。で、まずはバックアップ。いつも自動で行っているけれども念のためだ。そしたら、スクリプトやらのバックアップはできていたけれども、DBのバックアップがここ一年半ほどちゃんとできていないことが判明!!!バックアッププログラムとDB本体のバージョンがどこかのバージョンアップの時に一致しなくなっていて、それが原因らしい。もう超冷や汗かく。ともかくバックアップもとったのでYosemiteにアップデートだ。30分くらいであっけなくできる。DBもメジャーアップデートしたので、古いバージョンのデータを読む事ができない。そこで初期化してバックアップから復元しようと試みたのだけれども、接続できないのであるよ。DBは確かに起動しているにも関わらず、接続できない。ここでハマる。ウンウンウンウン考えていろんな事を試してみて、UNIXソケットじゃなくてTCPソケットを使えば良い事がわかった。ということで、スクリプトを修正して、なんとか復旧に成功する。都合12時間。

えーっと、心覚えを。結局有効だった作業は、ユーザーpostgresを作り、

sudo -u postgres /Applications/Server.app/Contents/ServerRoot/usr/bin/initdb -D /usr/local/var/postgres/data -E eucJP

で初期化。Yosemite Serverでのpostgresの位置は、/Applications/Server.app/Contents/ServerRoot/usr/bin/でデータを/usr/local/var/postgres/に置いてeucJPでコードする、と。で、

sudo -u postgres /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres -D /usr/local/var/postgres/data -k /usr/local/var/postgres/data

でpostgres起動。

sudo -u postgres /Applications/Server.app/Contents/ServerRoot/usr/bin/psql -h localhost -f バックアップファイル template1

でリストアだ。最後のコマンドの-h localhostという文字列を付け加えるためだけに10時間ほどを費やしたと言う。いやー、悪い汗をかきました。

1/30付記:毎日定期的に行う作業は、/etc/periodic/daily/の下にスクリプトを置く。