HerokuのPostgresからHomestead上のPostgresにデータをコピーする
heroku pg:pullをつかうとHerokuのPostgresのデータをfetchすることができる
詳しいコマンドの使い方はheroku pg:pull --helpをみてください
トラブルシュート
Homestead上に引っ張ってくる際のトラブル:Peer authentication failed
エラー発生状況
code:zsh
$ PGUSER=homestead heroku pg:pull postgresql-morning-2434 tempdb --app my-app
// 略
createdb: could not connect to database template1: FATAL: Peer authentication failed for user "homestead"
原因
対応
これを回避するためにはパスワードでの接続-hをつければよい
が、herokuのコマンド経由で-hオプションを付けれそうにないのでpeer認証でなくすことを考える postpresの認証方式の定義はpg_hba.confに書いてある。この場所を探す
code:zsh
$ psql -h localhost -U homestead
homestead=# SHOW hba_file;
hba_file
-------------------------------------
/etc/postgresql/13/main/pg_hba.conf
(1 row)
homesteadのpostgresの初期PWはsecret
書き換える
sudo vim /etc/postgresql/13/main/pg_hba.conf
code:pg_hba.conf
//ここをpeer -> md5にする
# "local" is for Unix domain socket connections only
local all all md5
Postgresの再起動
/etc/init.d/postgresql restart
vagrantのpasswordを要求される。homesteadはデフォルトvagrant
再度引っ張ってくる
PGUSER=homestead PGPASSWORD=secret heroku pg:pull postgresql-morning-2434 tempdb --app my-app
PGUSER, PGPASSWORDはhomesteadの情報
tempdbデータベースができ、本番のデータが入っている
前回cloneからの差分をfetchしたい