【问题标题】:How to move location of postrgresql 13 database如何移动postgresql 13数据库的位置
【发布时间】:2021-08-03 16:01:59
【问题描述】:

我希望将 pgsql 13 数据库的位置从默认位置移动到另一个磁盘。

我最初遵循本指南link

但这适用于 v9.5,而不是 13。我的挑战是数据库的位置(通过运行以下命令找到)也是存储配置文件的位置。

SHOW data_directory;
     data_directory
------------------------
 /var/lib/pgsql/13/data
(1 row)

SHOW config_file;
     config_file
----------------------------------------
 /var/lib/pgsql/13/data/postgresql.conf
(1 row)

在 9.5 版中,配置文件位于单独的区域,所以此时我被指南卡住了。

如果我想移动数据库位置,我似乎还必须移动所有配置文件。

我尝试将整个数据文件夹移动到新位置并重新启动 postgres,但没有成功。

任何帮助将不胜感激。

【问题讨论】:

  • "对于 9.5 版,配置文件位于单独的区域" - 不,不是。然而,一些 Linux 发行版确实将配置文件与数据目录分开。但是例如在 CentOS 上,配置文件始终位于数据目录中。
  • "我已尝试将整个数据文件夹移动到新位置并重新启动 postgres,但没有成功。" 这是正确的方法,但您需要更改服务定义以使用新的数据目录。你如何做到这一点取决于你的 Linux 发行版

标签: postgresql postgresql-13


【解决方案1】:

假设您的配置文件位于它们所属的 $PG_DATA 下:


  1. 关闭(旧)数据库
  2. 将数据目录复制到新位置(使用cp -rp,或rsync -acv,或tar,或cpio,...)确保副本保留文件属性和所有权。 pgdata 目录应该是 mode == 0600,并且 owner.group == postgres.postgres
  3. [可选]重命名旧数据目录
  4. [可选]您可能希望在新位置编辑配置文件
  5. 编辑启动文件(在/etc/init.d/postgresql 中)并确保$PG_DATA 指向新位置。 [注意:这是针对 ubuntu 的;其他发行版可能使用不同的启动机制]
  6. 启动新数据库,检查是否运行(ps auxw| grep postgres,是否可以连接(psql -U postgres postgres
  7. [可选] 删除旧位置的目录树。

【讨论】:

  • 您好,感谢您的回复,遗憾的是 init.d 中没有与 postgresql 相关的启动文件。
  • 我找到了文件,它存在于 /usr/lib/systemd/system/postgresql-13.service 下。一旦我找到它,我就按照您的步骤进行了排序,并且不必编辑配置文件,因为它正在查看设置为环境变量 $PG_DATA 的 ConfigDir。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2011-06-30
  • 1970-01-01
  • 2021-08-10
  • 2015-04-11
  • 2011-09-27
  • 2022-11-07
相关资源
最近更新 更多