如何移动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数据库的位置的主要内容,如果未能解决你的问题,请参考以下文章