如何移动postgresql 13数据库的位置

Posted

技术标签:

【中文标题】如何移动postgresql 13数据库的位置【英文标题】:How to move location of postrgresql 13 database 【发布时间】: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 发行版 【参考方案1】:

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


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

【讨论】:

您好,感谢您的回复,遗憾的是 init.d 中没有与 postgresql 相关的启动文件。 我找到了文件,它存在于 /usr/lib/systemd/system/postgresql-13.service 下。一旦我找到它,我就按照您的步骤进行了排序,并且不必编辑配置文件,因为它正在查看设置为环境变量 $PG_DATA 的 ConfigDir。感谢您的帮助。

以上是关于如何移动postgresql 13数据库的位置的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL源码安装及配置(基于Pg13)

PostgreSQL新手入门

PostgreSQL如何导入数据

如何设置或更改PostgreSQL数据目录位置

如何将 PostgreSQL 数据库中的所有 SMALLINT 列转换为 BOOLEAN?

如何使用BADI修改PO