gpt4 book ai didi

postgresql - 什么是更改 PostgreSQL 配置的可靠方法,尤其是在脚本中移动其数据目录?

转载 作者:行者123 更新时间:2023-11-29 12:05:34 25 4
gpt4 key购买 nike

我想要实现的目标

为了将一些软件与 PostgreSQL 一起打包到 docker 容器中,我想将 PostgreSQL 的 data_directory 连同所有其他持久数据一起更改为 /srv

背景资料:

  • PostgreSQL 是使用 apt-get 全新设置的
  • postgresql 服务在那时从未启动
  • 我的目标是移动 /srv 中的持久数据,而不会在以后遇到麻烦。我不关心这是如何实现的,设置 data_directory 对我来说似乎是最合适的。

问题思考

  • 我可以只使用 sed 来修改 postgresql.conf,例如这样:

    $ sed -i 's#^\(data_directory\s*=\s*\).*$#\1/srv/postgresql/main#'\
    /etc/postgresql/9.1/main/postgresql.conf

    但如果有更好的方法,我真的不喜欢用脚本来搞乱配置文件。我发现了一个相当大的 perl script for modifying PostgreSQL configuration files ,但我有点害怕在五分钟内无法完全理解它在做什么的情况下嵌入它。

  • 使用 psqlSET SQL 命令从正在运行的系统中更改失败,我并不感到惊讶:

    postgres=# set data_directory to '/srv/postgresql/main';
    ERROR: parameter "data_directory" cannot be changed without restarting the server
  • pg_config另一方面只能打印信息,无论如何都不会安装。

现在呢?

通常,有方便可靠的工具来设置选项,PostgreSQL 也有吗?

最佳答案

自从你提到 apt-get作为安装方式,这意味着我们谈论的是为 Debian 及其衍生产品打包的 PostgreSQL。

在 Debian 中,PostgreSQL 数据位置是通过创建集群来设置的,如下所示:

# pg_createcluster --datadir=/path/to/data [other options] version name

其中 version 是主要版本,如 9.1name您选择的用于标识此集群的短名称。它实际上将数据结构放在目录中,而不是仅仅更改 postgresql.conf 中的一行这本身是没有用的。

运行时apt-get install postgresql或暗示安装新 PG 服务器的变体,它隐式创建并启动名称为 main 的集群datadir 是 /usr/lib/postgresql/<version>/main

您想在创建另一个集群之前删除该集群,以便只有一个集群在运行,例如 9.1:

# pg_dropcluster --stop 9.1 main

关于postgresql - 什么是更改 PostgreSQL 配置的可靠方法,尤其是在脚本中移动其数据目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22174860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com