我有一个本地 SUSE 12 sp3 VM,其中有大约 45GB 的 PostgreSQL 10 数据库。
我还有一个 Google Cloud Platform (GCP) 映像/实例,其中包含带有 PostgreSQL 10 数据库的 SUSE 12 sp3 服务器,但其中尚无数据库数据。
GCP 目录结构和设置与本地 VM 文件目录和设置略有不同,但它们都是 PostgreSQL 10。我更喜欢 GCP 设置/安装/目录结构,所以我不想更改它。
我想将尽可能多的数据从本地数据库传输到 GCP 数据库。完成后,数据库应该相同,但目录结构会有所不同。
我是 GCP 新手。这是一次试用。我的新数据库需要位于区域存储上(不是近线、冷线或多区域存储)。
我当前的策略是:
pg_dumpall > db.out
在我的旧本地数据库上使用- 该文件保存
db.out
到我们的 Windows VM 文件服务器,我可以通过工作站上的映射驱动器访问该文件服务器。 - 通过我的工作站在 GCP 控制台上转到:存储,选择我的存储桶,上传文件,然后将 db.out 文件上传到我的实例所在的存储桶。
- 用于
psql -f db.out postgres
将数据、角色等加载到我的新 GCP 实例中。
这是可靠的方法吗?尽管目录结构不同,这种方法还能行得通吗?有没有更好的方法?有什么技巧或陷阱吗?
关联:http://www.postgresql.org/docs/current/static/app-pg-dumpall.html
(我仍在寻找有用的 GCP 链接,因此提出这个问题。)
注意,我说的“目录结构”指的是服务器目录结构。目录结构发生变化是因为我在 GCP 实例上以不同的方式(我想要的方式)安装了 PostgreSQL 10。
谢谢!
PS - 这本来是在 SO 上,但我删除了它,并将问题移到了这里,希望获得更多关注。我看到其他问题被移动或转移,但我没有注意到这样做的方法,至少在我目前的信用级别下没有。另外,我本来打算把它放在 Stack Exchange 网站数据库管理员上,直到我看到那里只有两个人关注 Google-Cloud 标签。欢迎就此提出建议。
答案1
将数据库转储到 SQL,将其传输到远程计算机,然后通过 SQL 导入数据库,就像您所做的那样,这是实现所需目标的完全正常方法。磁盘结构实际上不应该成为问题。