Главная Контакты

Реклама

Опрос пользователей

Оцените работу движка


Календарь

«    Август 2026    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
31 

Гайд: slon2.c — настройка репликации PostgreSQL с логическим декодированием

Если вы управляете базой данных на PostgreSQL и нуждаетесь в надёжной, масштабируемой репликации с минимальным временем отката, slon2.c, это то, что вам нужно. Этот модуль, часть системы SLON-I, позволяет реплицировать данные между узлами без полного дампа, с минимальным влиянием на производительность. Подходит для кластеров с до 16 узлами, работает с PostgreSQL 9.4 и новее. Все, что нужно, настроить логическое декодирование и запустить слоник-скрипты.

Даже если вы раньше работали с pg_dump или логическими репликациями через BDR, slon2.c остаётся одним из самых стабильных решений для средних и крупных систем. Главное, не забыть про параметр wal_level = logical, иначе все просто не заработает.

Что понадобится

  • PostgreSQL версии 9.4 или выше
  • Доступ к postgresql.conf и pg_hba.conf
  • Установленный slonik (входит в состав SLON-I)
  • Права суперпользователя в PostgreSQL
  • Доступ к серверу через SSH (если настройка в удаленном окружении)

Настройка slon2.c: пошагово

  1. Убедитесь, что в postgresql.conf установлено wal_level = logical. Без этого логическое декодирование отключено. Перезапустите PostgreSQL после изменения.
  2. Включите подключение для репликации в pg_hba.conf. Добавьте строку вида:
    host replication slon_user 192.168.1.100/32 md5
    где 192.168.1.100, IP узла-реплики. Не забудьте перезагрузить конфиг.
  3. Создайте пользователя для репликации. В psql выполните:
    CREATE USER slon_user WITH REPLICATION PASSWORD 'strong_pass';
    Создайте базу данных, которая будет реплицироваться. Имейте в виду: slon2.c не реплицирует DDL-изменения автоматически. Структура базы должна синхронизироваться вручную
  4. Настройте слоник-скрипт. Пример минимального slonik-файла (slonik_setup.sql):
    init cluster (id=1, name='main_cluster');
    init node (id=1, name='node1', host='localhost', port=5432);
    create node (id=2, name='node2', host='192.168.1.100', port=5432);
    define replication (id=1, name='replication1', origin=1, destination=2);

    Запустите: slonik -d postgres -U slon_user -H localhost < slonik_setup.sql
  5. Запустите slon процесс на каждом узле. Команда:
    slon -d postgres -U slon_user -H localhost -D 1
    Убедитесь, что slon запущен в фоне. Проверьте логи: /var/log/postgresql/slon.log.
  6. Настройте таблицы для репликации. В slonik-скрипте добавьте:
    create subscription (id=1, origin=1, node=2, table='public.users');
    Только явно перечисленные таблицы будут реплицироваться. Если забыть, данные не придут.

Вот прям: если вы пропустите шаг с wal_level = logical, ничего не заработает. Проверьте что он стоит именно в logical, а не replica. Один из самых частых сбоев, неправильная настройка pg_hba.conf. Проверяйте IP, порт, и что пользователь имеет права на подключение

Для тех, кто ищет альтернативу, slon5.oo или slon10.cc что лучше для просмотра сериала Оленька?, это не то же самое. Но если у вас есть вопросы по работе с другими слоновыми версиями, смотри там. А здесь, только чистая настройка.

Частые ошибки и советы

  • Не поддерживает автоматическую обработку конфликтов. Если на двух узлах изменили одну и ту же строку, конфликт останется. Решайте вручную.
  • Сеть падает, репликация останавливается. Нет автоматического переподключения. Проверяйте состояние через slonik show status
  • Нельзя реплицировать схему автоматически. Если добавили новую таблицу, нужно добавить ее в слоник-скрипт вручную.
  • Максимум 16 узлов в кластере. Превышение, ошибка при создании.
  • Работает только на совместимых версиях PostgreSQL. Смешивание 10 и 13, не пройдет. Проверяйте совместимость протокола.

Если все настроено, проверьте, что данные приходят. Включите логирование в postgresql.conf:
log_statement = 'mod'
и смотрите, что в логах появляется LOG: replication: replayed 1000 rows

Все, что нужно, сделать. Все что может пойти не так, устранить. Используйте slon2.c, если нужна надежная, контролируемая репликация на уровне таблиц. Это не волшебство, но, работает.

Чек-лист перед запуском

  • ✅ wal_level = logical
  • ✅ pg_hba.conf разрешает подключение
  • ✅ slon_user с правами REPLICATION
  • ✅ slonik-скрипт включает все нужные таблицы
  • ✅ slon запущен на обоих узлах

Ну, и не забудьте, если что-то не работает, смотрите логи. Часто все просто в них

slon2.te

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Разместил: Tech_Geek_Jr

Добавление комментария

Ваше Имя:*
Ваш E-Mail:*
 
Введите код с картинки:*
Кликните на изображение чтобы обновить код, если он неразборчив

Новости партнёров