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