我正在运行 Ubuntu 10.10,并为我的根目录设置了一个单独的分区。该分区的设置并未考虑大型数据库,因此我想将 2+GB 的 PostgreSQL 数据库放在 /home 分区上。
我遇到的第一条建议是initlocation
命令,但这显然适用于旧版本的 PostgreSQL。
然后我遇到了该initdb
命令,但是由于某种原因,它似乎在 Ubuntu 10.10 上不可用...。
我究竟该如何做呢?
答案1
该命令initdb
应该位于路径/usr/lib/postgresql/{version}/bin/initdb
(可能不包含在您的路径中PATH
),但是您可以使用pg_createcluster
包装器,尤其是带有-D
选项的包装器:
此选项指定数据库集群的存储目录。这是 初始化数据库,但您可以通过设置PG数据 环境变量,这很方便,因为数据库服务器(PostgreSQL 的) 稍后可以通过同一个变量找到数据库目录。
答案2
描述默认集群的文件(称为 main)位于我的 ubuntu 10.10 机器上 8.4 的目录 /etc/postgresql/8.4/main 中。只需停止 postgresql,将数据目录复制到新目录,设置权限(根目录上的权限为 700,由 postgres 用户拥有),编辑 postgresql.conf 中指向数据目录的行,然后重新启动 postgres。
答案3
我正在运行 Ubuntu 10.04 和 PostgreSQL 8.4。以下是我将 pgdata 文件夹从根分区移出的步骤,大致基于来自 linuxquestions.org 的说明。
cd /mnt/workspace
到达我想要保存新 pgdata 文件夹的文件夹。ls -l ..
以确保该workspace
文件夹归 root 所有。grep data_directory /etc/postgresql/8.4/main/postgresql.conf
查看当前数据目录在哪里。在我的例子中,它是/var/lib/postgresql/8.4/main
。sudo /etc/init.d/postgresql-8.4 stop
停止服务。sudo mv /var/lib/postgresql/8.4/main /mnt/workspace/pgdata
将数据文件夹移动到新位置。ls -l
以确保该pgdata
文件夹仍归 postgres 用户所有。- 我编辑了该
/etc/postgresql/8.4/main/postgresql.conf
文件以将data_directory
条目指向其新位置。 sudo /etc/init.d/postgresql-8.4 start
启动服务。- 尝试连接到数据库服务器以确保它仍然有效。
df
看看我现在在根分区上有多少可用空间。哇哦!