Установка и обновление расширения pgcopywala
Расширение pgcopywala версии 1.1 создается в схеме pbr. Убедитесь, что схема pbr существует в базе данных перед установкой или обновлением расширения. Схема pbr создается при инициализации copywala.
Установка RPM-пакета
Перед созданием расширения в базе данных установите RPM-пакет pgcopywala на всех узлах кластера (основном и репликах). Это отдельный RPM-пакет, который устанавливается независимо от утилиты copywala.
RPM-пакеты расширения для разных версий PostgreSQL/Pangolin расположены в директории:
PBRA-bin-X.X.X-XX_<версия ОС>-distrib/rpms/
Установите пакет стандартным способом через пакетный менеджер (например, dnf install) на каждом узле кластера.
Первичная установка расширения
Если расширение pgcopywala ранее не устанавливалось, выполните команду:
CREATE EXTENSION pgcopywala;
Функции расширения будут созданы в схеме pbr.
Обновление с версии 1.0 на 1.1
Если расширение pgcopywala версии 1.0 уже установлено в кластере, обновите его до версии 1.1 для переноса функций в схему pbr:
Для Copywala версии 1.3.1 обновление расширения до версии 1.1 является обязательным условием корректной работы функциональности copywala catchup.
ALTER EXTENSION pgcopywala UPDATE TO '1.1';
После выполнения этой команды существующие функции расширения будут перемещены в схему pbr.
Для проверки версии установленного расширения выполните запрос:
SELECT extname AS extension_name, extversion AS version
FROM pg_catalog.pg_extension
WHERE extname = 'pgcopywala';
:caption: Пример вывода
extension_name | version
----------------+---------
pgcopywala | 1.1
Если запрос не возвращает строк, расширение не установлено на данном узле.
Настройка прав доступа для пользователя репликатора
Чтобы пользователь, от имени которого узел-реплика подключается к основному узлу для запуска catchup-логики, смог получить доступ к функциям расширения на основном узле, выдайте для него права для доступа к схеме pbr:
GRANT USAGE ON SCHEMA pbr TO <replica_user>;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA pbr TO <replica_user>;
где <replica_user> — имя пользователя PostgreSQL/Pangolin, который используется для репликации.
Данные права необходимо выдавать только в случае, если пользователь, который используется для репликации, не является superuser.