Postgres 9.2 pg_largeobject表空间

时间:2013-03-19 01:38:50

标签: postgresql centos postgresql-9.2

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

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

我已将表空间设置为此数据库存储设备上的目录,所有内容似乎都运行正常,直到......

我意识到我需要将大量BLOB数据存储在pg_largeobject中。

我一直在调整如何设置pg_largeobject的表格空间,我确实找到了some results,但他们已经过时了。

我确实发现one article看起来很有希望,但我犹豫不决,因为线程也引用了事情会/应该改变。

我有两个问题......

  1. 在理想的世界中,我想将所有的postgres(包括pg_largeobject)移到这个外部存储器上以便于维护。这可能吗?
  2. 如果没有,我如何才能pg_largeobject使用我的网络存储空间?

1 个答案:

答案 0 :(得分:1)

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

只需:

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

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