更改并初始化Ubuntu 12.04 LTS上的Postgresql 9.3默认数据和日志目录

在使用Ubuntu 12.04 LTS映像的Azure上,我们正在尝试更改Postgres 9.3的默认数据和日志文件path,并且在辅助驱动器/mnt/pgdata上首次初始化它们。 我们已经从Postgres 9.3通过apt-get进行全新安装的angular度出发了。

我们已经停止了postgres: sudo service postgresql stop

我们试着运行pg_createcluster

以下只显示帮助/手册页。 可能是因为它缺less版本和名称参数。

pg_createcluster -d /mnt/pgdata/data -l /mnt/pgdata/log --start-conf auto

即使在/mnt/pgdata没有任何内容,以下结果将显示“错误:集群configuration已经存在”。

pg_createcluster 9.3 main -d /mnt/pgdata/data -l /mnt/pgdata/log --start-conf auto

我们对Linux一般都比较陌生,所以请具体回答一下。

另外,我们有以下问题:

  1. 可以使用直接安装path还是使用符号链接更好?
  2. 还有什么我们需要做的或改变,以设置默认的端口上的这些默认的数据目录的Postgres 9.3,并自动启动与服务器?
  3. 任何其他build议?

出现此错误的原因是: "Error: cluster configuration already exists"是名称main已被分配给最初创build的群集。

如果您没有任何数据,您可以在创build自己的数据之前删除它:

 pg_dropcluster 9.3 main 

这也将有一个理想的效果,你的新集群将被分配端口号5432而不是非默认的5433

无论使用直接装载path还是符号链接都无关紧要,但请注意,configuration文件将在数据目录的/etc/postgresql/<version>/<clustername>/之外创build。

根据其手册页, pg_createcluster命令期望在版本和名称之前的选项,所以命令将是:

 pg_createcluster -d /mnt/pgdata/data -l /mnt/pgdata/log --start-conf auto 9.3 main 

另外在/mnt/pgdata有日志文件使得logrotate无法访问,所以它会不断增长。 你可以看看/etc/logrotate.d/postgresql-common看看它是如何configuration来处理/var/log/postgresql/*.log

在我的机器上,通过这样做解决了

 mkdir /var/run/postgresql chown postgres:postgres /var/run/postgres service postgresql restart