Изменение табличного пространства на таблице с потоковой репликацией

Я давно ищу ответы, знаю, но не могу найти надежного источника.

У нас есть 2 сервера postgres, которые реплицируются с использованием потоковой репликации. Теперь мне нужно переместить некоторые таблицы в другое табличное пространство (находящееся на другом томе), что было бы легко, но я понятия не имею, как это будет распространяться на подчиненное устройство.

Мне нужно сделать то же самое изменение на ведомом устройстве, потому что оно имеет идентичную настройку диска, но я не уверен, нужно ли мне заранее создавать табличное пространство на ведомом устройстве (и если оно обрабатывается непосредственно репликацией) или если мне нужно выполнить тот же оператор alter на ведомом устройстве (но оно доступно только для чтения, и я не знаю, разрешено ли это).

ИЛИ, мне нужно сделать новое базовое резервное копирование и настроить репликацию с нуля после этого изменения?

1 ответ

Решение

По крайней мере, для версии 9.4 в резервных системах должен существовать идентичный путь к файловой системе. С http://www.postgresql.org/docs/9.4/static/warm-standby.html:

"В частности, имена путей, связанные с табличными пространствами, будут передаваться через неизмененные, поэтому как первичный, так и резервный серверы должны иметь одинаковые пути монтирования для табличных пространств, если эта функция используется. Имейте в виду, что если CREATE TABLESPACE выполняется на первичном, любой новая точка монтирования, необходимая для этого, должна быть создана на основном и всех резервных серверах перед выполнением команды."

Другие вопросы по тегам