移动数据目录后 postgresql 连接错误

问题描述 投票:0回答:2

编辑-2

我发现更改文件位置后数据库甚至无法启动。

这是默认文件位置:

$pg_isready
/var/run/postgresql:5432 - accepting connections
$pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5432 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log

pg_lsclusters
输出为绿色。

postgresql.conf 上的文件位置更改后:

$pg_isready
/var/run/postgresql:5432 - no response
$pg_lsclusters
Ver Cluster Port Status Owner Data directory                           Log file
9.5 main    5432 down   root  /mnt/Data/postgresdb/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log

这里输出是红色的。

在这篇文章here之后,我尝试手动启动集群:

$pg_ctlcluster 9.5 main start
Warning: the cluster will not be running as a systemd service. Consider using systemctl:
  sudo systemctl start [email protected]
Error: You must run this program as the cluster owner (root) or root

我尝试使用 sudo 执行相同的命令:

Error: Config owner (postgres:124) and data owner (root:0) do not match, and config owner is not root

这再次让我认为问题可能出在目录的权限上。该目录由 root 拥有,我无法更改其所有权。

编辑-1

我一直在研究这个问题,我想进一步提炼这篇文章以提供更多细节。这是我现在的情况:

  1. 我安装了postgres:
    sudo apt-get install postgresql and postgresql-contrib
  2. 我使用
    sudo -U postgres psql
    进入 postgres shell(我不确定这是否是我需要做的)
  3. 显示数据目录返回:
    /var/lib/postgresql/9.5/main

数据目录位于Ubuntu ext4格式的硬盘中。我还有一个 1 TB NTFS 格式的硬盘安装在

/mnt/Data
上(启动时自动安装)。我尝试过的:

  1. 停止postgres服务:
    sudo systemctl stop postgresql
  2. 创建一个新目录
    /mnt/Data/postgresdb
    并将之前的 main 内容复制到此目录,这给了我
    /mnt/Data/postgresdb/postgresql/9.5/main
    的完整路径,使用:
    sudo rsync -av /var/lib/postgresql/ /mnt/Data/postgresdb/postgresql/
  3. 编辑
    /etc/postgresql/9.5/main/postgresql.conf
    将 data_directory 从上述路径更改为
    /mnt/Data/postgresdb/postgresql/9.5/main
  4. 启动postgres服务:
    sudo systemctl start postgresl
  5. 运行
    sudo -U postgres psql
    但出现原始帖子中提到的错误。

这些是各个主目录的权限:

        ls -l /var/lib/postgresql/9.5/
total 4.0K drwx------ 19 postgres postgres 4.0K Jan 16 12:40 main 
    ls -l /mnt/Data/postgresdb/postgresql/9.5/
total 4.0K drwxrwxrwx 1 root root 4.0K Jan 16 12:13 main

从表面上看,默认目录属于“postgres”,新目录属于root。但是,当我尝试将所有权更改为 postgres:

chown -R postgres main
时,它不会输出任何错误,但所有权不会更改。我很好奇这是否是因为该驱动器是 NTFS 格式并已安装。

这是我的/etc/fstab:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda5 during installation
UUID=3f5a9875-89a3-4ce5-b778-9d7aaf148ed6 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda6 during installation
UUID=85c3f4d4-e450-435b-8dd6-cf1b2cbd8fc2 none            swap    sw              0       0
/dev/disk/by-label/Data /mnt/Data auto nosuid,nodev,nofail,x-gvfs-show 0 0

关于如何解决这个问题有什么想法吗?

原帖

最近,我安装了Postgresql来存储一些研究数据。该数据集附带了有关如何在 Postgresql 数据库上设置数据的说明(如果有兴趣,请参阅herehere了解更多信息)。我安装了 Postgresql 并设置了一个“角色”,并使用了提供的用于加载数据库的脚本。它有效,但我低估了数据集的大小,脚本退出说没有更多空间。

我的计算机上有两个驱动器,一个 250G SSD 驱动器,安装了 Windows 和 Ubuntu(每个 125G)。还有一个格式化为 NTFS 的 1TB HDD,用于存储我的数据。所以我认为将数据库移动到另一个驱动器上的文件夹会很有帮助。我清除了所有数据和数据库以重新开始,并按照此处的说明移动数据库目录。但是,移动目录后,当我尝试使用 psql 连接时,出现以下错误:

 ~ psql -U username -d postgres                                                                                                                                                                   14:48:33
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我该如何解决这个问题?我正在运行 64 位 Ubuntu 16.04 和 Postgresql-9.5。如前所述,我将 DB 目录移至 NTFS 格式的文件系统(不确定这是否会导致任何问题)。

谢谢。

database postgresql
2个回答
2
投票

正如评论中提到的,NTFS 是问题所在。我最终调整了更大的硬盘驱动器的大小,将其格式化为 ext4 的 100GB,并且能够使用新的数据目录启动 postgres,没有任何问题。


0
投票

尝试像这样更改数据目录的所有权 chown postgres:postgres /mnt/Data/postgresdb/postgresql/9.5/main 和 chmod 750 /mnt/Data/postgresdb/postgresql/9.5/main

© www.soinside.com 2019 - 2024. All rights reserved.