| Надо | Результат | Примечание |
| По Хабру | ||
| Версии ОС и Postgre ruvds lsb_release -a 24.04 LTS noble timeweb
|
select version();
|
Кстати и на Яндексовых машинах 24.04.3 на 1-й Установил ![]() 22.04.2 на 2-й |
| Получается для физической репликации наиболее подходящие варианты: ruvds - > vm20251 timeweb - > vm20251 но вот то, что на Яндексовых доля CPU 20%... | ||
| OK, 1-й вариант Далее работаем в консоли сервера Master. 1. Под аккаунтом postgres необходимо создать пользователя для репликации: createuser --replication -P rep_user 2. смотрим расположение conf файла: psql -c 'SHOW config_file;' etc/postgresql/16/main/postgresql.conf 3.В файл необходимо внести следующие правки: archive_mode = on archive_command = 'cp %p /oracle/pg_data/archive/%f' max_wal_senders = 10 wal_keep_segments = 50 wal_level = replica wal_log_hints = on 4.внести дополнения в файл pg_hba.conf, добавив имя пользователя для репликаций и IP адрес подчиненного сервера: 5.перезапускаем Postgresql |
3. archive_command - Создал и указал свой /home/pgbackup wal_keep_segments Вообще не было, добавил, но поставил 16 |
тю застрял с паролем 16.11.2025 Сменил пароль пользу root ok очистить каталог main но не там где конфиг настраивали etc/postgresql/16/main/postgresql.conf , а в другом месте var/lib/postgresql/16/main/ sudo rm -rf /main/* |
| Запустить тестовый backup на главной машине. (как потом дальше выяснится - ото ошибка. Надо на реплике запускать) Не даёт, и вообще как не находит его вот тут проверить Проверить файл postgresql.conf на настройки listen_addresses и port. Чтобы PostgreSQL слушал на всех интерфейсах, listen_addresses должен быть установлен на «*». Ковырял-ковырял,плюнул, снести, заново поставить и попробовать по методу timeweb настроить |
| |
|
Как настроить физическую потоковую репликацию с PostgreSQL на Ubuntu
Есть на timeweb чтобы к ним прийти если чо :) тут попроще чем у OTUS | ||
|
Шаг 1 Настройка первичной базы данных для принятия подключений sudo nano /etc/postgresql/16/main/postgresql.conf listen_addresses и измените ее значение с localhost на IP-адрес первичного сервера Шаг 2 – Создание специальных прав с разрешениями на репликацию в psql из под postgres CREATE ROLE rep_user WITH REPLICATION PASSWORD 'rep_userXXXX' LOGIN; sudo nano /etc/postgresql/16/main/pg_hba.conf Добавьте следующую строку в конец файла pg_hba.conf: host replication test your-replica-IP/32 md5 sudo systemctl restart postgresql@12-main |
Шаг 3 – Резервное копирование первичного кластера на реплику sudo rm -rf /var/lib/postgresql/16/main/* На реплике! А не на главной. М.б. поэтому ошибка была sudo -u postgres pg_basebackup -h 194.87.146.200 -p 5432 -U rep_user -D /var/lib/postgresql/16/main/ -Fp -Xs -R Из под sergsavin запустил пароль rep_user ошибка - не пустой каталог /var/lib/postgresql/16/main/ cd /var/lib/postgresql/16/ sudo -u postgres rm -r main sudo -u postgres mkdir main sudo -u postgres chmod 700 main |
Шаг 4 Перезапуск и тестирование кластеров На реплике sudo systemctl restart postgresql (из под главного акка) Да,Бд скопировалась, всё ок На первичном SELECT client_addr, state FROM pg_stat_replication; ![]() добавил запись на главной - на реплике появилось. ок! |
| ||
| Логическую репликацию попробовать на неподходящую версию, например, на timeweb | ||
| Хорошо про виды шардирования | Шардирование
Кстати традиционный PostgreSQL сталкивается с фундаментальной проблемой: отсутствием нативной поддержки горизонтального масштабирования. Сегодня мы, команда платформы данных в Yandex Cloud, хотим рассказать о SPQR — нашем опенсорс‑инструменте, который создавался как ответ на «боль» шардирования и эксплуатации крупных OLTP‑систем. |