首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自定义Linux服务器上Postgres数据库的位置?

如何自定义Linux服务器上Postgres数据库的位置?
EN

Stack Overflow用户
提问于 2017-02-22 03:19:00
回答 1查看 4.1K关注 0票数 1

我正在使用CentOS 7.3作为Oracle VirtualBox的来宾VM。主机是Windows 7,我有一个物理USB卡(也就是闪存驱动器)来存放Postgres的数据目录。我可以在Linux中使用USB棒作为挂载目录。我可以把文件读写到里面。

我希望能够在我的USB棒上有Postgres数据库。但是我不能把Postgres数据库放在我的USB卡上。我在Linux上安装了Postgres。

要更改Postgres的默认数据目录,我遵循以下航向

如果您没有时间转到该链接,我只需使用以下两个命令安装Postgres:

代码语言:javascript
复制
yum -y install postgresql-server postgresql-contrib

postgresql-setup initdb

然后我运行这两个命令:

代码语言:javascript
复制
mv /var/lib/pgsql/data/* /mnt/windows-share/data

ln -s /mnt/windows-share /var/lib/pgsql/data

之后,我尝试启动Postgres服务,我得到了一个错误。

下面是我尝试的命令(作为root):

systemctl启动postgresql

以下是错误:

postgresql.service的作业失败,因为控制进程存在错误代码。有关详细信息,请参阅"systemctl status postgresql.service“和"journalctl -xe”。

我尝试了systemctl status postgresql.service,我发现了这个:

Loaded: loaded (/usr/lib/systemd/system/postgresql.service;禁用供应商预置:禁用) 活动:失败(结果退出代码).过程..。ExecStartPre=/usr/bin/postgresql-check dir ${PGDATA} (code=exited,status=1/FAILURE) ..。没能启动PostgreSQL..。...Unit postgresql.service..。...postgresql.service失败

我使用了journalctl -xe,但这并没有告诉我任何有意义的事情。

要更改Postgres的默认数据目录,我尝试了以下操作:

代码语言:javascript
复制
postgresql-setup initdb --pgdata=/mnt/windows-share/

但我有

未能在- PGDATA =/mnt/mar/data.service中找到pgdata设置

如何安装带有自定义数据目录的Postgres?我需要它在"/mnt/“目录中。我想在USB上创建我所有的数据库。

EN

回答 1

Stack Overflow用户

发布于 2021-01-21 11:55:14

要在自定义位置(例如home/postgres目录)上安装Postgres,请执行以下步骤

安装Postgres所需的版本,例如13在Home中创建postgres目录。并将其访问权限授予posgres用户。

代码语言:javascript
复制
mkdir postgres
chown postgres:postgres postgres
usermod -m -d /home/postgres postgres

将数据目录移动到新位置如下:

代码语言:javascript
复制
rsync -av /var/lib/pgsql/ /home/postgres/

将postgres服务器中的位置更新为:

代码语言:javascript
复制
find / -name postgresql-9.5.service
vi /usr/lib/systemd/system/postgresql-9.5.service

更新文件中的数据位置:

从旧的地点,例如。

代码语言:javascript
复制
# Location of database directory
Environment=PGDATA=/var/lib/pgsql/13/data/

到新的地点,例如。

代码语言:javascript
复制
# Location of database directory
Environment=PGDATA=/home/postgres/13/data/"

停止postgres,重新加载deamon并启动postgres

代码语言:javascript
复制
stop postgres
systemctl daemon-reload
start postgres

完成了..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42382067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档