Физическая репликация
Создаем сеть, запоминаем адрес
Поднимаем мастер
Меняем postgresql.conf на мастере
Подключаемся к мастеру и создаем пользователя для репликации
Добавляем запись в pgmaster/pg_hba.conf
с subnet
с первого шага
host replication replicator __SUBNET__ md5
Перезапустим мастер
Сделаем бэкап для реплик
Копируем директорию себе
Создадим файл, чтобы реплика узнала, что она реплика
Меняем postgresql.conf
на реплике pgslave
Запускаем реплику pgslave
Запустим вторую реплику pgasyncslave
Скопируем бэкап
Изменим настройки pgasyncslave/postgresql.conf
Дадим знать что это реплика
Перечитываем конфиг
Убеждаемся, что реплика стала синхронной
Создадим тестовую таблицу на pgmaster
и проверим репликацию
Проверим наличие данных на pgslave
Проверим наличие данных на pgasyncslave
Попробуем сделать insert
на pgslave
terminal 2
Возвращаем вторую реплику pgasyncslave
Убиваем мастер pgmaster
Запромоутим реплику pgslave
Пробуем записать в новый мастер pgslave
Настраиваем репликацию на pgslave
(pgslave/postgresql.conf
)
изменяем конфиг
перечитываем конфиг
Подключим вторую реплику pgasyncslave
к новому мастеру pgslave
изменяем конфиг pgasyncslave/postgresql.conf
перечитываем конфиг
Проверяем что к новому мастеру pgslave
подключена реплика и она работает
Восстановим старый мастер pgmaster
как реплику
Помечаем как реплику
Изменяем конфиг pgmaster/postgresql.conf
Запустим pgmaster
Убедимся что pgmaster
подключился как реплика к pgslave
Логическая репликация
Меняем wal_level
для текущего мастера pgslave
Изменяем настройки pgslave/postgresql.conf
Перезапускаем pgslave
Создадим публикацию в pgslave
Создадим новый сервер pgstandalone
для логической репликации
Копируем файлы c pgslave
в pgstandalone
и восстанавливаем
Создаем подписку на pgstandalone
Убеждаемся что репликация запущена
Сделаем конфликт в данных
Вставляем данные в подписчике pgstandalone
Вставляем данные в паблишере pgslave
Убеждаемся что записи с id 10 не появилось на pgstandalone
Посмотрим в логи pgstandalone
и убедимся что у нас произошел разрыв репликации
Исправляем конфликт
Мета информация
Область:: 00 PostgreSQL
Родитель:: Репликация в PostgreSQL
Источник::
Автор::
Создана:: 2024-06-17
Дополнительные материалы
Дочерние заметки