在NFS驱动器上移动postgres数据文件夹。 符号链接,重新启动集群,还是修改init.d脚本更好?

我想将我的postgres data文件夹移动到一个NFS驱动器,但我不知道什么是最好的办法做到这一点。 我有三个select:

  1. 根据Postgres文档 ,一种方法是使用带有-D选项的initdb命令。

    initdb不存在, initdb将尝试创build你指定的目录。

  2. LinuxQuestions.org上列出的另一种方法是更新postgressql init脚本以指向新的目录,在这种情况下,它将是NFS驱动器。

  3. 最后,我想我只是将pgsql/data文件夹复制到NFS驱动器,并简单地符号链接文件夹。

    即, pgsql/data -> nfs/data

Symlinking或更新初始化脚本似乎是对我来说最简单的方法,但我不知道如果他们会是最好的或最安全的方式。 这是我希望有人能帮助我的地方。 任何build议,关注,利弊将不胜感激。

环境信息

  • 红帽企业Linux服务器5.7
  • PostgreSQL 8.3.6

假定使用-maproot=root选项挂载NFS驱动器,并且root用户将访问NFS驱动器。

您可以简单地closuresPostgres,移动文件夹并将init脚本更改为指向数据目录的正确位置。 在重新启动服务器之前,请仔细检查data/下的configuration文件以获取对旧path的引用。


你可能不想这样做。 真。 这是一个主意。
NFS的其他名称是networking故障系统。 它的可靠性并不为人所知,让底层的文件系统在不合时宜的情况下(例如,在追加WAL时)就可能毁了你的一天,更别说你的数据库了。 请记住,Postgres对于NFS没有什么特别之处 ,如果出现意想不到的情况,它会吓坏了(见Postgres手册17.2.1 )。

也许如果你描述你试图解决的根本问题(问一个新的问题),我们可以帮助你以较低风险的方式来做到这一点?