hello foo bar
Cloud SQLでPostgreSQLを立てた際に、外部からダンプしたデータがリストアできないっていうのがあるので、そのまとめです。ドキュメント読んだらきちんと書いてあった。
何も考えずにダンプデータをリストアすると、
[543004]: [1-1] db=postgres,user=cloudsqlsuperuser ERROR: must be member of role "ROLE_NAME"
というエラーでリストアできません。なのでCloud SQLの仕様に合わせてダンプしないとダメです。(ちなみにCloud Shellから権限関連をいろいろこねくりまわしてみたけどダメでした。)
以下の仕様に従ってダンプします。
--no-owner
--format=plain
--no-acl
SUPERUSER
ロールのメンバーシップを付与または取り消すステートメントがダンプに含まれている場合に必要です。こういうのでダンプしておく。(ドキュメントにもあるやつ)
$ pg_dump -U [USERNAME] --format=plain --no-owner --no-acl [DATABASE_NAME] | sed -E 's/(DROP|CREATE|COMMENT ON) EXTENSION/-- \1 EXTENSION/g' > [SQL_FILE].sql
Cloud SQLで吸い込めないものは削ぎ落としている形になるので、これでいける。