postgresql
Высокая доступность PostgreSQL
Поиск…
Репликация в PostgreSQL
Настройка первичного сервера
Требования:
- Пользователь репликации для операций репликации
- Каталог для хранения архивов WAL
Создать пользователя репликации
createuser -U postgres replication -P -c 5 --replication
+ option -P will prompt you for new password + option -c is for maximum connections. 5 connections are enough for replication + -replication will grant replication privileges to the user
Создание каталога архива в каталоге данных
mkdir $PGDATA/archive
Отредактируйте файл pg_hba.conf
Это файл проверки подлинности базы хоста, содержащий настройки для аутентификации клиента. Добавить запись ниже:
#hosttype database_name user_name hostname/IP method host replication replication <slave-IP>/32 md5
Отредактируйте файл postgresql.conf
Это файл конфигурации PostgreSQL.
wal_level = hot_standby
Этот параметр определяет поведение подчиненного сервера.
`hot_standby` logs what is required to accept read only queries on slave server. `streaming` logs what is required to just apply the WAL's on slave. `archive` which logs what is required for archiving.
archive_mode=on
Эти параметры позволяют отправлять сегменты WAL для архивирования местоположения с
archive_command
параметраarchive_command
.archive_command = 'test ! -f /path/to/archivedir/%f && cp %p /path/to/archivedir/%f'
В основном, что делает
archive_command
, она копирует сегменты WAL для архивирования каталога.wal_senders = 5
Это максимальное количество процессов отправителя WAL.Теперь перезапустите основной сервер.
Резервное копирование первичного сервера на подчиненный сервер
Перед внесением изменений на сервере остановите основной сервер.
Важно. Не запускайте службу еще раз, пока все шаги настройки и резервного копирования не будут завершены. Вы должны открыть резервный сервер в состоянии, когда оно будет готово к резервному серверу. Это означает, что все настройки конфигурации должны быть на месте, а базы данных должны быть уже синхронизированы. В противном случае потоковая репликация не запустится.
Теперь запустите утилиту pg_basebackup
Утилита
pg_basebackup
копирует данные из каталога данных первичного сервера в подчиненный каталог данных.$ pg_basebackup -h <primary IP> -D /var/lib/postgresql/<version>/main -U replication -v -P --xlog-method=stream
-D: This is tells pg_basebackup where to the initial backup
-h: Specifies the system where to look for the primary server
-xlog-method=stream: This will force the pg_basebackup to open another connection and stream enough xlog while backup is running.
It also ensures that fresh backup can be started without failing back to using an archive.
Настройка резервного сервера
Чтобы настроить резервный сервер, вы отредактируете postgresql.conf и создайте новый файл конфигурации с именем recovery.conf.
hot_standby = on
Это указывает, разрешено ли вам запускать запросы при восстановлении
Создание файла recovery.conf
standby_mode = on
Установите строку подключения на основной сервер. Замените внешний IP-адрес основного сервера. Замените пароль для имени пользователя с именем replication
`primary_conninfo = 'host = port = 5432 user = replication password ='
(Необязательно) Задайте местоположение файла триггера:
trigger_file = '/tmp/postgresql.trigger.5432'
Указанный путь
trigger_file
файла - это место, где вы можете добавить файл, если вы хотите, чтобы система перешла на резервный сервер. Наличие файла «запускает» переход на другой ресурс. В качестве альтернативы вы можете использовать команду pg_ctl promotion, чтобы вызвать переход на другой ресурс.
Запуск резервного сервера
Теперь у вас есть все на своем месте и готовы открыть резервный сервер
приписывание
Эта статья, по существу, получена и объясняется тем, как настроить PostgreSQL для высокой доступности и репликации в режиме «Горячий резерв» , с незначительными изменениями в форматировании и примерах, а также удалением некоторого текста. Источник был опубликован под лицензией Creative Commons Public 3.0 , которая поддерживается здесь.