Репликация — важный процесс для любого сервера баз данных. Настроив репликацию с одного сервера на несколько дополнительных Вы сможете значительно уменьшить вероятность потери данных.
Данная статья посвящена настройкe кластера PostgreSQL. С Jelastic Вы можете легко создать кластер с одним или несколькими резервными серверами, готовыми взять на себя основные операции, если основной сервер выйдет из строя. В этом случае основной сервер работает в режиме архивирования, в то время как резервный работает в режиме восстановления, считывая данные с журнала транзакций WAL (Write-Ahead Logging) основного сервера.
В случае полного отказа основного сервера, содержимое WAL будет передано на резервные серверы с минимальной задержкой.
В сегодняшней статье мы рассмотрим процесс создания репликации базы PostgreSQL на один или несколько резервных серверов. Резервная база данных будет использована только в режиме чтения. Это самый быстрый способ репликации доступный для WAL данных, отправляемых с основного сервера на резервный.
Создание окружения
Первым шагом является создание двух одинаковых окружений с PostgreSQL базой: одно для главной базы данных и одно для резервной.
1.Войдите в свой Jelastic аккаунт и нажмите на кнопку «Создать окружение», выберите PostgreSQL 9 в качестве базы данных и количество используемых клаудлетов. Затем укажите имя окружения для этой базы (основной).
После создания окружения в панели Jelastic Вы увидите:
2. Теперь необходимо создать еще одно окружение с PostgreSQL 9 или клонировать существующее. Это будет резервная база данных, размещенная на другой ноде для обеспечения безопасности и надежности хранения данных.
Итак, сейчас у нас есть 2 идентичных окружения с PostgreSQL базами.
Настройка репликации
1. На ноде основной базы нажмите кнопку «Конфигурация»
и перейдите в папку conf. Измените следующие параметры в файле postgresql.conf для того, чтобы включить потоковую репликацию:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
2. Перейдите к файлу pg_hba.conf на основной базе данных ( в папке conf) и откройте доступ для резервного сервера:
host replication all {standby_ip_address}/32 trust
Вместо {standby_ip_adress} нужно вставить адрес вашего резервного standby сервера. Посмотреть его можно тут:
откроется окно с внутренним IP адресом:
Вот, что у нас получилось:
3. Затем, откройте папку conf на ноде резервной базы данных, перейдите к postgresql.conf и включите режим hot standby. Это позволит обеспечить постоянное подключение к основному серверу для чтения данных. При этом сам резервный сервер будет находится в режиме ожидания/копирования данных.
hot_standby = on
4. Создайте файл recovery.conf в папке conf резервного сервера (в том же каталоге, postgresql.conf и pg_hba.conf), содержащий следующие строки:
standby_mode = 'on'
primary_conninfo = 'host={master_ip_address}'
, где {master_ip_address} – ip адрес мастер-ноды.
5. Перезапустите обе ноды (основной и резервный сервер) для применения настроек.
Проверим, что получилось
1. Авторизуйтесь в основной базе через phpPgAdmin (учетные данные были высланы Вам при создании окружения и самой базы) и создайте новую базу данных.
2. Авторизуйтесь в резервной базе данных и проверьте создана ли копия основной базы. Если вы создавали standby ноду в режиме клонирования master — можно выполнить сброс пароля для получения доступа к ноде. На резервную ноду при включенном режиме standby не получится зайти через веб-интерфейс. Чтобы проверить, что репликация работает переименуйте recovery.conf в recovery.con. Перезапустите резервную ноду. Теперь можно зайти через веб-интерфейс и убедиться, что репликация работает и база habrahabr появилась. После этого не забудьте переименовать recovery.con в recovery.conf обратно и перезапустить резервную ноду.
Всего несколько несложных действий позволят Вам создать надежный кластер базы данных!
Удачи с использованием платформы Jelastic в InfoboxCloud!
Автор: infobox