如何从 Google Cloud SQL 调用 pg_dump

Jas*_*per 4 postgresql backup export google-cloud-sql google-cloud-platform

我正在寻找一种解决方案来备份我的 Cloud SQL 架构(和 Cloud Storage 文件)。

起初,我尝试使用 Cloud Scheduler 调用 googleapi ( https://cloud.google.com/sql/docs/postgres/import-export/exporting ) 以导出数据库。问题是我需要特定的备份参数,并且需要导出 PostgreSQL 数据库中的特定模式。我的每个客户都有一个模式,我希望能够在不恢复整个数据库的情况下恢复模式。Googleapis 似乎还不支持导出特定模式,这就是我想直接调用 pg_dump 的原因。

在 Cloud SQL 中使用自动备份也存在同样的问题。我无法恢复数据库中的特定架构,并且需要将备份保留至少一个月。

但是,我还没有找到使用云函数等调用 pg_dump 的方法。所以目前我正在考虑使用我自己的 Windows 10 笔记本电脑来调用 pg_dump 并在 Windows 中设置日常任务。我更愿意使用 Google Cloud,而不是我自己的笔记本电脑。

如果有人对如何构建备份基础设施有任何想法,我们将不胜感激。

小智 5

使用代理连接您的 cloudsql 实例 > https://cloud.google.com/sql/docs/postgres/sql-proxy

那么这个命令应该可以完成工作

pg_dump -U postgres -h localhost -p [PORT] [DBNAME] -n public --format=p  >publicBackup.sql

psql -U postgres -h localhost -p [PORT] [DBNAME]  -c "drop schema public cascade;" 

psql -U postgres -h localhost -p [PORT] [DBNAME] -n public -1 -f  ./publicBackup.sql
Run Code Online (Sandbox Code Playgroud)

您可以从任何与数据库有代理连接的容器中执行此作业。