@EvnMiller

Как можно исправить скрипт промоута Postgresql?

Есть 2 контейнера с postgresql 14 (не кластер) на 2-х разных хостах с перемонтированным томом postgres (соответственно один из них мастер, другой реплика).
Не получается настроить скрипт с ручным failover, а именно - остановка контейнера бывшего мастера, промоут слейва до мастера и создание слейва для нового мастера.
При попытке pg_ctl promote на слейве появляется ошибка:
could not open PID file "/postmaster.pid" : Permission denied.

В гугле есть решение этой проблемы - запуск pg_ctl promote от пользователя postgres, но это проблему не решает.
От рута запускать не хочет так как просит запускать от непривилегированного пользователя.
docker-compose.yml
version: '3.3'
services:
  postgres:
    container_name: postgresr
    image: postgres:14-bullseye
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    restart: always
    environment:
      POSTGRES_USER: ******
      POSTGRES_PASSWORD: ******
      POSTGRES_DB: ******
    ports:
      - "5432:5432"

скрипт промоута:
#!/bin/bash
HIP=(hostname -i)
MIP=['10.XX.1XX.16']
SIP=['10.XX.1XX.17']
DATE=(date "+%Y%m%d%H%M%S")
if [ "$HIP" = "$MIP" ]; then
        sudo chown user /home/user/compose/postgres-data  && ssh user@$SIP 'sudo -u postgres /usr/pgsql-14/bin/pg_ctl promote \
  -D /home/user/compose/postgres-data/'
elif [ "$HIP" = "$SIP" ]; then
        ssh user@$MIP 'sudo -u postgres /usr/pgsql-14/bin/pg_ctl promote \
  -D /home/user/compose/postgres-data/'
fi                                                  
sudo  docker stop postgresr                         
sudo  docker rm -v postgresr
rm -rf /user/compose/postgres-data*                 
if [ "$HIP" = "$MIP" ]; then
        "pg_basebackup -h $SIP -D /home/user/compose/postgres-data/  -U replicator -P -v  -R -X stream -C -S $DATE"
elif [ "$HIP" = "$SIP" ]; then
        "pg_basebackup -h $MIP -D /home/user/compose/postgres-data/  -U replicator -P -v  -R -X stream -C -S $DATE"

fi                                                 
sudo docker-compose up
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
ivankprod
@ivankprod
Системный / веб fullstack-разработчик
Попробуйте дать права 677 на этот pid-файл
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы