我一直在寻找答案一段时间知道但找不到任何可靠的来源。
我们有 2 个使用流复制进行复制的 postgres 服务器。我现在需要将一些表移动到不同的表空间(驻留在不同的卷上),这很容易,但我不知道这将如何传播到从站。
我需要在从属设备上进行相同的更改,因为它具有相同的磁盘设置,但我不确定是否需要事先在从属设备上创建表空间(并且如果直接由复制处理)或者我是否需要在从属设备上运行相同的 alter 语句(但它是只读的,我不知道是否允许这样做)。
或者,我是否需要进行新的基础备份并在此更改后从头开始设置复制?
至少对于 9.4 版,备用数据库上需要存在相同的文件系统路径。来自http://www.postgresql.org/docs/9.4/static/warm-standby.html#STANDBY-PLANNING:
“特别是,与表空间关联的路径名将未经修改地传递,因此如果使用该功能,主服务器和备用服务器必须具有相同的表空间安装路径。请记住,如果在主服务器上执行 CREATE TABLESPACE,任何在执行命令之前,必须在主服务器和所有备用服务器上创建所需的新挂载点。”