我使用 AWS 作为我的云环境。我将 PostgreSQL 安装在与我的根实例卷相同的驱动器上。我已将第二个驱动器附加并安装到我的实例。现在我想将我所有的 PostgreSQL 数据移动到不同的驱动器。我仍处于开发模式,因此如果此时传输更容易,我可以删除旧数据。做这个的最好方式是什么?
PostgreSQL 表空间是我应该看的东西吗?
我使用 AWS 作为我的云环境。我将 PostgreSQL 安装在与我的根实例卷相同的驱动器上。我已将第二个驱动器附加并安装到我的实例。现在我想将我所有的 PostgreSQL 数据移动到不同的驱动器。我仍处于开发模式,因此如果此时传输更容易,我可以删除旧数据。做这个的最好方式是什么?
PostgreSQL 表空间是我应该看的东西吗?
以下应该做到这一点:
这通常通过
-D
服务的命令行参数 ( ) 或通过PGDATA
环境变量来定义。下面是关于如何在 Arch Linux 上将现有 PostgreSQL 数据库移动到新位置(文件夹、分区)的描述(此过程应该与其他 Linux 发行版类似)。
pg_dumpall
是一种实用程序,用于将集群的所有 PostgreSQL 数据库写入(转储)到一个脚本文件中。...它通过调用pg_dump
集群中的每个数据库来做到这一点。...例如:
TL/DR
你需要:
pg_dumpall
) 数据库命令摘要
我将留下我的 shell 提示(主机名 ...),以在我继续进行时澄清我所在的 shell。
例子
请参阅我随附的博客文章,如何在 Arch Linux 上移动现有的 PostgreSQL 数据库,以获取注释代码和输出。---
参考
[postgres 文档] pg_dumpall
[Arch Linux 文档]手动转储和重新加载
@a_horse_with_no_name答案效果很好,但我需要对其进行一些修改,以便 systemctl 可以使用它。
注意:我必须在再次设置之前明确清除 Environment,因为它是一个附加设置,类似于其他列表,如 ExecStart(作为一个整体,而不是每个变量)和 EnvironmentFile;