0

我目前正在移动一些数据,并且遇到了一个有趣的问题。

我有一个 CentOS 服务器 (6.3) 并在内置磁盘空间有限的服务器上运行 Postgres 9.2;但是,我确实有大量非常可靠的外部网络磁盘空间可用。

我已将表空间设置为我的数据库的存储设备上的一个目录,一切似乎都运行良好,直到...

我意识到我有大量的 BLOB 数据需要存储在pg_largeobject.

我一直在研究如何设置表空间,pg_largeobject我确实找到了一些结果,但它们已经过时了。

我确实找到了一篇看起来很有希望的文章,但我很犹豫,因为该线程还提到事情将会/应该改变。

我有两个问题...

  1. 在理想情况下,我想将所有 postgres(包括pg_largeobject)移动到这个外部存储上以便于维护。这可能吗?
  2. 如果没有,我怎样才能pg_largeobject使用我的网络存储?
4

1 回答 1

1

正如您所提到的,您最好的选择是将整个 PostgreSQL 移动到远程存储上,假设存储使用可靠的文件网络块设备,如 iSCSI、ATAoE 或 NBD。我不建议在 NFS 上运行 Pg,而在 CIFS/SMBFS 上运行它是行不通的。

只是:

  • 进行备份
  • 记下SHOW data_directory;in的输出psql
  • 关闭 PostgreSQL
  • 将数据目录(包含pg_xlog,pg_clog等的文件夹)移动到远程存储
  • 为 datadir 的新位置调整父目录的权限,以确保postgres用户postgres、组或others权限块至少execute在每个父目录上都有,以便它可以遍历树。
  • 调整您的系统启动脚本以将新位置设置为 PostgreSQL 数据目录将旧数据目录位置(由 输出SHOW data_directory)符号链接到新位置。
  • 启动 PostgreSQL

不幸的是,不同的系统和软件包以不同的方式找到 datadir。例如,Debian/Ubuntu 使用 pg_wrapper。

于 2013-03-19T01:43:21.143 回答