alx*_*lvt 7 postgresql postgresql-9.3
Ubuntu 14.04,最近安装了 Postgres 9.3。
尝试为附加的更大硬盘驱动器 (/data) 设置新的 data_directory,我更改了 postgresql.conf 文件以反映这一点。
但是,尝试重新启动服务器时出现此错误:
user@server:/etc/postgresql/9.3/main$ sudo /etc/init.d/postgresql restart
* Restarting PostgreSQL 9.3 database server
* Error: pid file is invalid, please manually kill the stale server process.
Run Code Online (Sandbox Code Playgroud)
我没有太多设置 Postgres 的经验,所以我不确定从这里开始做什么,而且谷歌搜索也没有提供快速答案。
Ubuntu 和 Debian 用于pg_wrapper
管理 PostgreSQL。它在postgresql-common
包裹里。
(因此,此答案不适用于 RHEL/CentOS/Fedora)。
如果没有有价值的数据,您可以使用pg_dropcluster
(部分pg_wrapper
)删除(删除)旧的数据目录。这将破坏其中的所有数据。然后使用pg_createcluster
在/data
. 这是最简单的,但当然是破坏性的。
如果您想保留数据,您必须:
postgres
用户至少x
拥有从数据目录到/
目录的所有目录的权限,特别是包括挂载点。您可能希望chmod a+x
沿路径的每个目录,或chgrp postgres
和chmod g+x
它。mv
将数据目录(如 所示)复制pg_lsclusters
到所需的新位置。如果您改为复制它,请使用cp -aRv
以确保正确保留权限。不要只移动所有内容,移动目录本身。/etc/postgresql/mypgversion/postgresql.conf
并更改data_directory
为指向新的数据目录位置。我认为您犯的错误是,上面以粗体显示,您未能在移动 datadir 之前停止 PostgreSQL。它不会停止服务器,因为它不确定它会杀死正确的进程,所以它拒绝采取行动。你必须:
sudo pkill -u postgres
Run Code Online (Sandbox Code Playgroud)
然后通过确保这不返回任何结果来确保所有 PostgreSQL 进程都已退出(非常重要):
ps -u postgres
Run Code Online (Sandbox Code Playgroud)
然后才尝试再次启动服务器。
从不删除postmaster.pid
。
做到这一点的一个好方法是将 PGDATA ( /var/lib/postgresql/9.3/main
) 符号链接到/data
. 这样做不需要改变postgresql.conf
。
归档时间: |
|
查看次数: |
7458 次 |
最近记录: |