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

问题描述:

我使用CentOS 7.3作为Oracle VirtualBox的访客虚拟机。主机是Windows 7,我有一个物理U盘(又名闪存盘)来存放Postgres的数据目录。我可以使用USB棒作为Linux中的挂载目录。我可以读取和写入文件。如何自定义Linux服务器上Postgres数据库的位置?

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

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

如果你没有时间去联系,我只是安装的Postgres这两个命令:

yum -y install postgresql-server postgresql-contrib 

postgresql-setup initdb 

然后我跑这两个命令:

mv /var/lib/pgsql/data/* /mnt/windows-share/data 

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

后来我试着启动Postgres服务,我得到一个错误。

这里是我尝试(作为root)命令:

systemctl启动PostgreSQL的

以下是错误:

Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for detail.

我试图systemctl status postgresql.service,我发现这一点:

Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled vendorpreset: disabled)

Active: failed (Result exit-code)... Process ... ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

... failed to start PostgreSQL... ...Unit postgresql.service... ...postgresql.service failed

我用journalctl -xe但这并没有告诉我有意义的。

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

postgresql-setup initdb --pgdata=/mnt/windows-share/ 

但我得到

failed to find PGDATA setting in --pgdata=/mnt/mar/data.service

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

+0

正确组中的postgres用户访问共享文件夹吗? – david25272

我在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

希望对你有用!

+0

我没有文件“/ etc/sysconfig/pgsql/postgresql”。我有这些文件: 1)/ run/postgresql 2)/ etc/selinux/targetd/active/modules/100/postgresql 3)/etc/pam.d/postgresql 4)/ usr/libexec/initscripts/legacy- actions/postgresql我该怎么做? – Alex111

+0

@ Alex111你的系统是Redhat,对吗?你可以在这个路径下试试'3)/etc/pam.d/postgresql'。请让我知道你有没有什么。 – nmtri