настроить. Кластер beta запустить не смог, оставил в таком состоянии сервер работать.
Теперь /var/lib/postgre/archive вырос до 4 ГБ за несколько дней.
Как задумано очищать в таком случае архивированные журналы, если репликация не нужна стала?
Слот репликации удалите.
Спасибо. Пока перевожу инструкцию курса DBA3 (https://edu.postgrespro.ru/dba3/dba3_04_replica_physical.html) на 14-ую версию. Если у меня оба кластера main и beta будут работать под пользователем postgres, это нормально добавить postgres в sudoers? Застрял на этом. postgres@xxx:~$ sudo pg_ctlcluster 14 beta start [sudo] пароль для postgres: postgres отсутствует в файле sudoers. Данное действие будет занесено в журнал.
просто так или с какой-то целью (с какой)?
Какбы не то, чтобы ненормально... Но зачем? posgres -- как раз ограниченный пользователь для работы этих демонов. Чтобы если что -- всё ограничилось всего лишь постгресом. Зачем давать лишний способ из него выбраться?
Цель - сертификация по PostgreSQL в будущем. Пока ползу по кривой обучения.
Вот и я засомневался. В курсе DBA3 использовали пользователя student, но я всё пока делал под postgres.
в дистрибутивах уже задается отдельный пользователь. в пакетах от разработчиков - тоже. судо ему не надо для штатной работы. для сертификации подозреваю это тоже лишнее. разве что в контексте научиться самостоятельно настраивать запуск бд. вместе с созданием отдельного юзера и т.д.
1) Как раз pg_ctlcluster под postgres работает и без sudo. 2) Но команду, которая не работает найти, конечно, можно. И нет, это в корне неправильно. Человек должэн логиниться под собой -- а потом по необходимости что-то имперсонировать из-под этого, административного аккаунта. т.е. sudo service postgresql start 14/main sudo -u postgres psql и т.д.
И да, это в общем не postgres а администрирование линуксов.
Я не волшебник, я только учусь. Настраиваю сервер Ubuntu с нуля, что-то мог не знать. Пока застрял postgres@xxx:~$ sudo pg_ctlcluster 14 beta start [sudo] пароль для postgres: Error: specified cluster '14 beta' does not exist До настройки репликации для sudo у меня был отдельный от root пользователь, под ним хожу в Putty и по RDP. При этом всё в PostgresSQL делаю под postgres. Вот здесь и встал.
И что говорит pg_lsclusters ?
Тут надо заметить, что в дебианах дейстивтельно хорошэе управление несколькими постгресами -- все эти pg_wrapper, pg_createcluster и прочее. Оно работает, кучи инстансов автоматически устанавливаются и легко апгрейдятся. Но документацыи от них я практически не видел. Несколько разрозненных man-страничек, несравнимо в общем с основной документацыей posgres. Это недостаток, это есть.
postgres@xxx:~$ pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 14 main 5432 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log 14 standby1 5433 online postgres /var/lib/postgresql/14/standby1 /var/log/postgresql/postgresql-14-standby1.log Для курса DBA3 пробую поднять третий PostgreSQL-кластер beta (как в курсе).
Несложно заметить, что есть кластеры 14/main и 14/standby1 , а 14/beta нет. Видимо, не создался.
Да, создал кластер beta. Сейчас пока застрял на этом postgres@xxx:~$ pg_ctlcluster 14 beta start Warning: the cluster will not be running as a systemd service. Consider using systemctl: sudo systemctl start postgresql@14-beta Error: /usr/lib/postgresql/14/bin/pg_ctl /usr/lib/postgresql/14/bin/pg_ctl start -D /var/lib/postgresql/14/beta -l /var/log/postgresql/postgresql-14-beta.log -s -o -c config_file="/etc/postgresql/14/beta/postgresql.conf" exited with status 1: No such file or directory 2022-04-18 08:58:34.034 UTC [41658] LOG: starting PostgreSQL 14.2 (Ubuntu 14.2-1.pgdg20.04+1+b1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, 64-bit 2022-04-18 08:58:34.035 UTC [41658] LOG: listening on IPv4 address "127.0.0.1", port 5433 2022-04-18 08:58:34.036 UTC [41658] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5433" 2022-04-18 08:58:34.039 UTC [41659] LOG: database system was interrupted; last known up at 2022-04-18 06:34:29 UTC 2022-04-18 08:58:34.176 UTC [41659] FATAL: using recovery command file "recovery.conf" is not supported 2022-04-18 08:58:34.178 UTC [41658] LOG: startup process (PID 41659) exited with exit code 1 2022-04-18 08:58:34.178 UTC [41658] LOG: aborting startup due to startup process failure 2022-04-18 08:58:34.180 UTC [41658] LOG: database system is shut down pg_ctl: could not start server Examine the log output. Вот здесь: 2022-04-18 08:58:34.176 UTC [41659] FATAL: using recovery command file "recovery.conf" is not supported /var/lib/postgresql/14/beta/recovery.conf такой: standby_mode = 'on' primary_conninfo = 'user=postgres passfile=''/var/lib/postgresql/.pgpass'' host=''/var/run/postgresql'' port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres target_session_attrs=any' primary_slot_name = 'replica' postgres@xxx:~$ pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 14 beta 5433 down,recovery postgres /var/lib/postgresql/14/beta /var/log/postgresql/postgresql-14-beta.log 14 main 5432 down postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log 14 standby1 5433 down postgres /var/lib/postgresql/14/standby1 /var/log/postgresql/postgresql-14-standby1.log
В 14 нет recovery.conf (его где-то в районе 12 вроде отменили, в документацыи на его параметры написано).
Значит, мне нужен документ для настройки физической репликации двух кластером PostgreSQL 14 :)
https://www.postgresql.org/docs/current/warm-standby.html
Всё получилось, дописал статью https://lytkins.ru/blog/58-postgresql.html
Обсуждают сегодня