くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

pg_basebackupでPostgreSQLのデータ入れ替えたら動かなくなった時のメモ

pg_basebackupでマスターサーバのデータをスレーブにコピーしてきたときに詰まったのでメモがてらシェア。

一旦postgresを止めてからdataフォルダを入れ替える。

service postgresql stop

 /usr/pgsql-9.3/bin/pg_basebackup -h xxx.xxx.xxx.xxx  -Upostgres -D  /var/lib/pgsql/9.3/data -x -P -v

でデータ持ってきたけど、(元々dataフォルダがあると失敗するので、mvする必要がある。)

データ移行して

service postgresql start

したら失敗。

/var/log/secure 見てみたら

Jan  6 11:04:59 slave runuser: pam_unix(runuser-l:session): session opened for user postgres by (uid=0)

Jan  6 11:04:59 slave runuser: pam_unix(runuser-l:session): session closed for user postgres

みたいなの出ててよく分からんと思ったけど、
よく見たらdataディレクトリ内の権限が全部rootだった。(移行する前はpostgres)

なので

chown -R postgres:postgres data
service postgresql start

で解決。