如何将Postgres DB从一个Kubernetes集群迁移到另一个

时间:2019-06-15 20:54:35

标签: postgresql kubernetes google-kubernetes-engine kubernetes-helm kubernetes-statefulset

我在GKE集群(状态集,SSD卷)上运行着一个大型(300Gb)Postgres数据库。我需要将该数据库移至另一个GKE集群。

最简单的方法是什么?

我尝试使用管道pg_dump / pg_restore来做到这一点,但是这要花很多时间,并且由于某种原因,并非所有约束/触发器都被重新创建。

是否存在适当的方法来正常“关闭”在Kubernetes中运行的Postgres服务器并直接将/pgdata文件夹复制(从一个卷复制到另一个卷)?

还有其他想法吗? tnx

1 个答案:

答案 0 :(得分:0)

关于如何处理此问题,我几乎没有想法(从最可能到最少列出):

  1. 使用pg_dump时请记住使用正确的格式。默认的纯格式可能不适用于pg_restore。尝试使用pg_dump指定其他格式,或使用psql -f xxx.tar代替pg_restore。请记住,这可能需要一段时间。

  2. 您可以使用工具来帮助您。例如pghoard

  3. 您可以对数据库进行皮重备份,然后尝试通过Google Cloud Storage作为对象进行复制。

  4. 您可以尝试手动创建PVC,将容器附加到这些PVC,然后将数据集复制到这些容器上。

  5. 最后,您可以尝试创建一个Init容器,以后将其用于新集群。

我建议从第1点开始,因为我认为这是最可能的解决方案。如果那还不够,请稍后再尝试列表中的点。

请告诉我是否有帮助。