在另一个 SDD 上设置 postgresql

在另一个 SDD 上设置 postgresql

我是 ubuntu 服务器部分的新手。我正在设置一台安装了 ubuntu 14.04 LTS 操作系统的服务器。我有两个 1TB SATA 磁盘和两个 2TB SATA 磁盘(都配置了 RAID 1)。我将 1TB 磁盘用于操作系统和其他东西,但对于我的数据库,我想使用 2TB 磁盘。

我已经在我的服务器上安装了 postgresql,但是我想将数据库的所有数据存储在 2TB 的服务器上。

所以我需要一些帮助来了解如何做到这一点。我的意思是如何设置我的 postgresql 数据库的主目录或数据目录,以便将数据直接存储在 2TB 的数据库中。

如果能从挂载点开始提供帮助,我将不胜感激。

提前致谢

答案1

其实这很简单。您只需在创建数据库集群时指定一个路径即可。这来自postgresql 文档创建新的pg cluster的命令是initdb,如下所示:

initdb [option...] [--pgdata | -D] directory

根据文档,initdb除非没有写入目标位置的权限,否则将创建指定目录。为了安全起见,您可以以 root 身份创建它,然后将所有权更改为 postgres 系统用户。在我的系统(用于开发)中,我在/homeraid1 阵列下创建了一个属于该目录的目录,并针对该目录postgres运行了。initdb

cd /home sudo mkdir postgres sudo chown postgres:postgres postgres initdb [your db creation options here] --pgdata /home/postgres

现在您可以启动 postgresql 服务器并指定 pgdata 目录。例如,

pg_ctl start -D /home/postgres

将启动一个使用您指定目录的服务器实例。如果服务器实例已在运行,您可能希望将其替换startrestart。这将关闭正在运行的服务器并使用新选项启动它。

顺便说一句,您可能已经猜到了,可以同时运行多个服务器实例(当然在不同的端口上),每个实例管理一个单独的集群(即物理路径)。

答案2

我认为我不确定 postgres 将其数据存储在哪里/var/lib/postgresql/。如果您想将 2TB 专门用于 postgres 数据,您可以执行以下操作:(我现在没有运行 postgres,请检查路径和名称。但这适用于任何服务类型,因此也适用于 postgres。)

  • 停止 postgressudo service postgres stop
  • mv 数据目录:sudo mv /var/lib/postgresql /var/lib/postgresql.bak
  • sudo mkdir /var/lib/postgresql
  • 创建文件系统并将新驱动器挂载到/var/lib/postgresql
  • 将所有者和组更改为 postgres 并更改访问权限(chown并且chmod,您可以从中检查旧设置ls -la /var/lib/postgresql.bak
  • 将 postgres 数据复制回来:cp -ra /var/lib/postgresql.bak/. /var/lib/postgresql
  • 重新启动postgres:service postgres start

相关内容