Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Как настроить потоковую репликацию PostgreSQL 12 или 13



Как настроить потоковую репликацию PostgreSQL 12 или 13

Пробовалось успешно на FreeBSD версии 12 и CentOS 8


PostgreSQL поддерживает несколько решений репликации для создания высокодоступных и отказоустойчивых приложений

Одним из решений является доставка журнала с упреждающей записью (WAL)

Позволяет реализовать резервный сервер с использованием файловой доставки журналов или потоковой репликации


При потоковой репликации резервный (replication slave) сервер бд настраивается для подключения к мастеру

Мастер передает записи WAL на резервный по мере их создания, не дожидаясь заполнения файла WAL 


По умолчанию потоковая репликация является асинхронной

Т.е. данные записываются на резервные серверы после того, как транзакция была зафиксирована на основном сервере

Это значит, что существует небольшая задержка между фиксацией транзакции на мастере и видимыми изменениями slave

Один из недостатков асинхронного подхода

В случае сбоя мастера любые незафиксированные транзакции не могут быть реплицированы

Это может привести к потере данных


В этом руководстве показано, как настроить репликацию потоковой передачи master-slave Postgresql 12 или 13

Мы будем использовать слоты репликации для резервного сервера в качестве решения:
чтоб избежать повторного использования master"ом старых сегментов WAL до того, как slave их получит

Внимание:
по сравнению с другими методами слоты репликации сохраняют только то количество сегментов, которое необходимо


Поехали!

Master сервер бд: 10.20.20.9
Slave сервер бд: 10.20.20.8


На обоих серверах баз данных должен быть установлен Postgresql 12 или 13

Примечание:
PostgreSQL 12 содержит важные изменения в реализации и конфигурации репликации
Произошла замена recovery.conf и преобразование параметров recovery.conf в параметры конфигурации PostgreSQL


Шаг 1. Настройка master сервера базы данных PostgreSQL


1. Переключитесь на системную учетную запись postgres и настройте IP-адрес для соединений от клиентов

В этом случае мы будем использовать *, что означает все

SQL-команда ALTER SYSTEM SET - это мощная функция для изменения параметров конфигурации сервера напрямую

Конфигурации сохраняются в файле postgresql.conf.auto, расположенном в корне папки данных ($PGDATA)

Cчитываются в дополнение к тем, которые хранятся в postgresql.conf

Конфигурации в первом имеют приоритет над конфигурациями в более поздних и других связанных файлах


2. Cоздайте роль репликации, которая будет использоваться для подключений slave сервера к master серверу

В следующей команде флаг
-P запрашивает пароль для новой роли
-e повторяет команды, которые createuser генерирует и отправляет на сервер базы данных


3. Затем введите следующую запись в конце файла конфигурации аутентификации клиента


4. Теперь перезапустите службу Postgres, чтобы применить изменения


5. Затем, если у вас запущена служба firewalld, необходимо hfphtibnm службу Postgresql

Нужно, чтобы разрешить запросы от резервного сервера к главному.


Шаг 2: Создание базовой резервной копии для загрузки резервного сервера

6. Далее необходимо сделать базовую резервную копию главного сервера с резервного сервера

На slave:

Нужно остановить службу postgresql на резервном сервере

Переключиться на учетную запись пользователя postgres

Сделать резервную копию каталога данных, затем его зачистить


7. Используйте инструмент pg_basebackup, чтобы сделать базовую резервную копию

В следующей команде параметры:

-h - указывает хост, который является главным сервером.
-D - указывает каталог данных.
-U - указывает пользователя подключения.
-P - включает отчет о прогрессе.
-v - включает подробный режим.
-R - включает создание конфигурации восстановления:
создает файл standby.signal
добавляет параметры подключения к postgresql.auto.conf в каталоге данных.
-X - используется для включения необходимых файлов журнала упреждающей записи (файлов WAL) в резервную копию.
Значение stream означает потоковую передачу WAL во время создания резервной копии.
-C - позволяет создать слот репликации, названный параметром -S, перед запуском резервного копирования.
-S - указывает имя слота репликации.


8. По завершении процесса резервного копирования

В новом каталоге на slave создается standby.signal, и настройки подключения добавляются к postgresql.auto.conf

Slave будет работать в режиме "горячего резервирования", если:
Значение по умолчанию для параметра hot_standby = on в postgresql.conf
И в каталоге данных присутствует файл standby.signal


9. Вернувшись на master сервер, вы должны увидеть слот репликации под названием pgstandby1


10. Чтобы просмотреть настройки подключения, добавленные в файл postgresql.auto.conf, используйте команду cat


11. Теперь начните нормальные операции с бд на резервном сервере, запустив службу PostgreSQL следующим образом


Шаг 3. Тестирование потоковой репликации PostgreSQL

12. После успешного установления соединения между главным и резервным сервером

Вы увидите процесс-получатель WAL на резервном сервере со статусом потоковой передачи

Вы можете проверить это с помощью представления pg_stat_wal_receiver

И соответствующий процесс отправителя WAL на master сервере с состоянием потоковой передачи

И sync_state async, вы можете проверить это представление pg_stat_replication

В следующем разделе мы продемонстрируем, как дополнительно включить синхронную репликацию

13. Теперь проверьте, нормально ли работает репликация

Создав тестовую базу данных на главном сервере и проверьте, существует ли она на резервном сервере


Шаг 4. Необязательно: Включение синхронной репликации

14. Синхронная репликация дает возможность зафиксировать транзакцию в master и slave одновременно

Подтверждает успешность транзакции, когда все изменения в транзакции были перенесены на все сервера

Чтобы включить синхронную репликацию:
для параметра synchronous_commit также должно быть установлено значение on (по умолчанию)
И необходимо установить для параметра synchronous_standby_names непустое значение


15. Затем перезагрузите службу PostgreSQL 12, чтобы применить новые изменения.


16. Теперь, когда вы еще раз запрашиваете процесс отправителя WAL на основном сервере

Он должен показать состояние потоковой передачи и sync_state of sync


Мы подошли к концу этого руководства

Мы показали, как настроить потоковую репликацию базы данных PostgreSQL 12 master-standby

Мы также рассмотрели, как включить синхронную репликацию в кластере базы данных PostgreSQL

Существует множество вариантов использования репликации

Вы всегда можете выбрать решение, которое соответствует вашей ИТ-среде или требованиям приложения

Дополнительные сведения см. В разделе "Резервные серверы доставки журналов" документации PostgreSQL 12
https://www.postgresql.org/docs/12/warm-standby.html

Удачи!


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект