代码之家  ›  专栏  ›  技术社区  ›  nbwoodward

从一个Cloud Foundry实例转储到另一个Cloud Foundry实例

  •  0
  • nbwoodward  · 技术社区  · 7 年前

    我们正在将PHP/PostgreSQL web应用程序从linux服务器迁移到Cloud Foundry。

    部分应用程序使用PHP的exec()方法在PHP中使用pg_dump。(忽略这一点的安全性影响…)

    如果我们假设应用程序实例没有pg_dump二进制文件,并且无法ssh到db实例(可能有pg_dump),那么有一种方法可以:

    • 在数据库中克隆架构?

    我确实发现 this plpgsql function 这可能是克隆模式的好选择,但不能解决备份问题。以某种方式从PHP调用pg_dump可以节省大量代码重写。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Daniel Mikusa    7 年前

    一个选择是供应商 pg_dump 你的申请。

    为此,启动Ubuntu 14.04容器或VM,在其中安装Postgres并复制 垃圾场 从VM输出到应用程序目录(放在哪里并不重要,只是不在公开的地方)。实现此功能的诀窍是,还必须复制任何依赖的共享库。如果你跑 ldd pg_dump (完整或相对路径)在VM或容器中,您应该能够获得 取决于。也可以将它们复制到你的应用程序中,你可以将它们与你的 垃圾场

    当你打电话 exec 在PHP应用程序中,您需要做两件事。首先,使用 二元的。其次,需要设置环境变量 LD_LIBRARY_PATH 指向任何所需共享库的位置。组合应该运行从VM中复制出来的二进制文件,同时使用复制出来的共享库,这应该是您需要运行的全部 垃圾场 .

    图书馆路径 直接且仅当您运行二进制文件时,但如果这不是一个选项,您可以添加 .profile 文件到您的应用程序并将其设置在那里。这里有一个你可以放在文件里的例子。

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/path/to/pg_libs
    

    https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile

    推荐文章