我的目标是将 postgresql 数据库数据存储在外部 SSD 硬盘上,该硬盘已插入运行 Linux Ubuntu 20.04 LTS ARM x64 的计算机。我在更改 postgresql.conf 文件中的数据目录然后重新启动 postgres 时遇到问题。
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"?
我知道当 postgres 配置出现问题时会出现此错误。我尝试在 /mnt/data/postgresql/12/main 目录上设置用户 postgres 的权限和所有权。没有运气。
以下是我采取的步骤:
创建挂载目录
sudo mkdir /mnt/data
将驱动器挂载到目录
sudo mount -o defaults /dev/sda1 /mnt/data
将目录添加到要存储 postgres 数据的已安装驱动器
sudo mkdir -p /mnt/data/postgresql/12/main
将数据目录更改为/mnt/data/postgresql/12/main
sudo nano /etc/postgresql/12/main/postgresql.conf
重启postgresql服务
sudo systemctl restart postgresql.service
答案1
你应该使用初始化数据库以用户身份创建一个新的数据目录postgres
,例如
sudo mkdir -p /mnt/data/postgresql/12/main
sudo chown -R postgres:postgres /mnt/data/postgresql
sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /mnt/data/postgresql/12/main
sudo service postgresql stop
这还会创建(未使用的)配置文件postgresql.conf
,pg_hba.conf
并pg_ident.conf
在/mnt/data/postgresql/12/main
.
现在将路径更改为data_directory
in /etc/postgresql/12/main/postgresql.conf
,启动服务并测试是否data_directory
按预期设置:
sudo service postgresql start
sudo -u postgres psql -c 'show data_directory;'
这应该输出:
data_directory
------------------------------
/mnt/data/postgresql/12/main
(1 row)