【问题标题】:How to move Postgres DB from one Kubernetes cluster to another如何将 Postgres DB 从一个 Kubernetes 集群移动到另一个
【发布时间】:2019-10-30 00:45:18
【问题描述】:

我有一个大型 (300Gb) Postgres DB 在 GKE 集群(有状态集,SSD 卷)上运行。我需要将此数据库移动到另一个 GKE 集群。

最简单的方法是什么?

我尝试使用管道 pg_dump/pg_restore 来实现它,但它需要很长时间,并且由于某种原因,并非所有约束/触发器都被重新创建。

是否有任何适当的方法可以优雅地“关闭”在 Kubernetes 中运行的 Postgres 服务器并直接复制 /pgdata 文件夹(从一个卷到另一个卷)?

其他想法? tnx

【问题讨论】:

  • 保存数据库数据的卷是如何定义的?
  • 是使用预先指定的 ssd storageClass 自动创建的

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


【解决方案1】:

关于如何解决这个问题,我几乎没有什么想法(从最可能到最不可能列出):

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

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

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

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

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

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

如果有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2020-07-20
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多