PostgreSQLのレプリケーション設定でレプリカ環境が立ち上がらない

5月9日のエントリ依頼永らく放置していたPostgreSQLのレプリカ環境整備。
ようやく作業時間がとれたので再開してみました。前回まではマスタ側が64bit環境のPostgreSQL、スタンバイ側が32bit環境だったのでスタンバイ側で取得したベースバックアップが使えないというところで終わっていました。

64bit環境を作るよ

ということでスタンバイ側でも64bit環境を作成することに。ソースからコンパイルしてもいいんですが、SSLとかlibcryptoとかも作りなおさないといけないとか、作りなおしたことで他アプリケーションに影響がでたら嫌だなぁということでPostgreSQLのバイナリを利用することに。
スタンバイ側はx86Solaris。バイナリはここにあります。

展開したものを
/usr/local/pgsql/bin/64
/usr/local/pgsql/lib/64
へ投入。

設定してバックアップ取得

マスタ側の設定をしてからベースバックアップ実行。

$ rm -fr /usr/local/pgsql/data
$ mkdir /usr/local/pgsql/data
$ chmod 700 /usr/local/pgsql/data
$  /usr/local/pgsql/bin/64/pg_basebackup -h 192.168.1.1 -p 5432 -U repuser -D /usr/local/pgsql/data --format=plain --checkpoint=fast --label=label1 --progress --verbose

スタンバイ側の設定をして起動

スタンバイ側のpostgre.conf,recovery.confを編集してからpostgresqlを起動。

$ /usr/local/pgsql/bin/64/pg_ctl start
>||
cp: cannot access archive/00000001000000010000008E
FATAL:  could not connect to the primary server: invalid connection option "post"

なんだこりゃ?エラーになりました。 なにやらマスタと通信できないとかいっています。

そうかライブラリか

ぐぐると、ライブラリちゃんとしたの見えてますかとのこと。あ、そうか。バイナリからインストールしたライブラリはlib/64に入れたんだった。LD_LIBRARY_PATHを設定しないと。

$ /usr/local/pgsql/bin/64/pg_ctl stop
$ export LD_LIBRARY_PATH=/usr/local/pgsql/lib/64:$LD_LIBRARY_PATH
$ /usr/local/pgsql/64/bin/pg_ctl start

なんだかログがないとか言ってきたので、マスタ側から手動でおなじところへコピー。ようやく立ち上がりました。
ちゃんとストリーミングバックアップができているかどうかはこれから検証します。