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