概要
Cloud SQLのインスタンスに接続してリモート上のDB環境をローカルに再現したい。
[前提]
ローカル環境はdockerでpostgresを使用。
準備編
Cloud SQLプロキシをローカルにinstall。
https://cloud.google.com/sql/docs/postgres/quickstart-proxy-test?hl=ja
ローカルにinstallすることで、簡単にリモート上のDBに接続できるようになる。
cloud_sql_proxy -instances=インスタンス名=tcp:5432 ;
上記で、ローカルからインスタンスに接続。
psql -h localhost -p 5432 -U postgres -d postgres
postgresで接続。
ちなみに、オプションの意味も載せとく。(忘れがちなので)
-d: データベース名(未指定だと、ログインユーザー名のデータベースに接続する)
-U: ユーザ名(未指定だと、ログインユーザー名になる)
-h: ホスト名(未指定だと、localhostになる)
\l
でデータベース一覧を確認し、dumpしたいDBが存在するか確認。
※場合によってはpasswordを求められるかも
dump編
pg_dump -h localhost -p 5432 -U ユーザー名 DB名 > dump.sql
dumpファイルを作成する。(今回だとdump.sql
というファイル名)
docker cp ./dump.sql コンテナのDB名:dump.sql
ローカルではコンテナを使っているので、
dumpしたファイルをローカルのDBコンテナにコピーする。
docker exec -it コンテナのDB名 sh
コピーしたDBコンテナに入る
一応lsでちゃんとdump.sql
が入っているか確認もするといいかも。
psql -U postgres -d DB名 < dump.sql
dump.sql
の存在が確認できたら、上記コマンドdumpファイルをローカルに再現。
参考資料
https://cloud.google.com/sql/docs/postgres/quickstart-proxy-test?hl=ja
https://qiita.com/rice_american/items/ceae28dad13c3977e3a8