我有一个大型 (300Gb) Postgres 数据库在 GKE 集群(状态集、SSD 卷)上运行。我需要将此数据库移动到另一个 GKE 集群。
完成它的最简单方法是什么?
我尝试使用管道 pg_dump
/pg_restore
来完成它,但它需要很长时间,而且由于某种原因,并不是所有的约束/触发器都被重新创建。
是否有任何适当的方法可以优雅地“关闭”在 Kubernetes 中运行的 Postgres 服务器并直接复制 /pgdata
文件夹(从一个卷到另一个卷)?
其他想法? 发送
最佳答案
关于如何解决这个问题,我几乎没有什么想法(从最可能到最不可能列出):
记住在使用
pg_dump
时使用正确的格式。默认纯格式可能无法与pg_restore
一起正常工作。尝试使用pg_dump
指定不同的格式或使用psql -f xxx.tar
而不是pg_restore
。请记住,这可能需要一段时间。您可以使用一种工具来协助您。例如pghoard .
您可以对您的数据库进行去皮备份,并尝试通过 Google Cloud Storage 作为对象进行复制。
您可以尝试手动创建 PVC,将 pod 附加到这些 PVC,然后将您的数据集复制到这些 pod 上。
最后,您可以尝试创建一个 Init 容器,稍后将其用于您的新集群。
我建议从第 1 点开始,因为我认为这是最可能的解决方案。如果这还不够,请尝试列表中后面的点。
如果有帮助,请告诉我。
关于postgresql - 如何将 Postgres DB 从一个 Kubernetes 集群移动到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56614100/