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

时间:2017-02-22 03:19:00

标签: linux postgresql centos7 postgresql-9.2

我使用CentOS 7.3作为Oracle VirtualBox的来宾VM。主机是Windows 7,我有一个物理USB记忆棒(也就是闪存驱动器)来存放Postgres的数据目录。我可以使用USB记忆棒作为Linux中的安装目录。我可以读取和写入文件。

我希望能够在我的USB记忆棒上安装Postgres数据库。但我无法在我的USB记忆棒上获得Postgres数据库。我在Linux VM上安装了Postgres。

要更改Postgres的默认数据目录,我按照directions

进行了操作

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

@echo off
set "file=Config.mak"
findstr /r ".:=$" "%file%" >empty.txt
findstr /r ".:=true$" "%file%" >true.txt
findstr /r ".:=" "%file%" | findstr /r /v ":=$ :=true$" >unprocessed.txt

然后我运行了这两个命令:

yum -y install postgresql-server postgresql-contrib

postgresql-setup initdb

之后我尝试启动Postgres服务,我收到错误。

这是我尝试的命令(以root身份):

systemctl start postgresql

这是错误:

  

postgresql.service的作业失败,因为控制进程已退出   有错误代码。参见" systemctl status postgresql.service"和   " journalctl -xe"细节。

我试过了mv /var/lib/pgsql/data/* /mnt/windows-share/data ln -s /mnt/windows-share /var/lib/pgsql/data ,我发现了这个:

  

已加载:已加载(/usr/lib/systemd/system/postgresql.service;已禁用)   vendorpreset:disabled)

     

活动:失败(结果退出代码)...处理...   ExecStartPre = / usr / bin / postgresql-check-db-dir $ {PGDATA}(code = exited,   状态= 1 /失败)

     

...无法启动PostgreSQL ......单位postgresql.service ...   ... postgresql.service失败

我使用systemctl status postgresql.service,但这并没有告诉我任何有意义的事情。

要更改Postgres的默认数据目录,我试过这个:

journalctl -xe

但我得到了

  

未能在--pgdata = / mnt / mar / data.service

中找到PGDATA设置

如何使用自定义数据目录安装Postgres?我需要它在" / mnt /"目录。我想在USB记忆棒上创建我的所有数据库。

2 个答案:

答案 0 :(得分:1)

要在自定义位置(例如 home/postgres 目录)安装 Postgres,请按照以下步骤操作

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

mkdir postgres
chown postgres:postgres postgres
usermod -m -d /home/postgres postgres

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

rsync -av /var/lib/pgsql/ /home/postgres/

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

find / -name postgresql-9.5.service
vi /usr/lib/systemd/system/postgresql-9.5.service

更新文件中的数据位置:

来自旧位置,例如

# Location of database directory
Environment=PGDATA=/var/lib/pgsql/13/data/

到新位置,例如

# Location of database directory
Environment=PGDATA=/home/postgres/13/data/"

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

stop postgres
systemctl daemon-reload
start postgres

完成...

答案 1 :(得分:0)

我'我们在CentOS 6上解决了同样的问题 也许你可以尝试一下。

  1. 添加磁盘
  2. 检查您的磁盘是否存在(在我的情况下,新磁盘是/ dev / sdb1 /)

    # fdisk -l
  3. 装载新磁盘

    # mkdir /hdd2
    # mount -t ext3 /dev/sdb1 /hdd2/
  4. 通过添加新行自动挂载硬盘:

    # vi /etc/fstab
    Add line: /dev/sdb1  /hdd2  ext3  defaults 0 0
    
  5. 配置postgres

    # service postgresql stop
    # vi /etc/sysconfig/pgsql/postgresql
    Add line: PGDATA=/hdd2/data
    
    # service postgresql start
  6. 希望对你有用!!