PostgreSQL¶
Данное руководство описывает процесс создания отказоустойчивой конфигурации из двух экземпляров БД PostgreSQL с репликацией master - slave. Его можно использовать как для развертывания новой установки, так и для подключения второго сервера к уже имеющейся.
Данная инструкция подходит как для репликации встроенной БД в appliance брокера, так и внешней БД, подключенной к нему.
Действия перед настройкой¶
Подключитесь к консоли брокера VDI и остановите сервисы
Подключитесь к БД и создайте резервную копию, указав:
- имя базы (по умолчанию udsdb)
- имя файла резервной копии (в примере - udsdb.bak)
Настройка Master-сервера¶
- Подключитесь к master-серверу и откройте файл /etc/postgresql/13/main/pg_hba.conf:
- Добавьте следующую строку:
- Откройте файл /etc/postgresql/13/main/postgresql.conf:
- Найдите указанные ниже параметры, раскомментируйте их и измените следующим образом:
listen_addresses = 'localhost, MASTER_IP'
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
hot_standby = on
- Перезагрузите сервис:
Настройка Replica-сервера¶
- Подключитесь к replica-серверу и остановите сервис postgresql:
- Откройте файл /etc/postgresql/13/main/pg_hba.conf:
- Добавьте следующую строку:
- Откройте файл /etc/postgresql/13/main/postgresql.conf:
- Найдите указанные ниже параметры, раскомментируйте их и измените следующим образом:
listen_addresses = 'localhost, REPLICA_IP'
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
hot_standby = on
- Следующие операции выполняются от имени пользователя postgres:
- Перейдите в каталог с базой данных:
- Удалите каталог и снова создайте с корректными правами:
- Выгрузите БД с master-сервера:
- Вернитесь к root-пользователю и запустите сервис postgresql:
Восстановление работы в случае сбоя¶
Если был утрачен доступ к одному из серверов баз данных (либо из-за падения хоста виртуализации, на котором он размещен, либо из-за сбоя операционной системы), вы должны выполнить ряд действий.
В зависимости от того, какой сервер откажет (Master или Slave), задачи, которые необходимо выполнить, как для непрерывности работы службы HOSTVM VDI, так и для того, чтобы располагать действующей репликой, будут следующими:
Master (основной узел)¶
Если основной сервер базы данных (Master) откажет или будет потерян, доступ к окружению VDI будет утрачен. Вам придется вручную подключить иной HOSTVM VDI сервер к вторичной базе данных (Slave), в которой содержится вся информация VDI окружения до момента падения основного сервера.
Подключить новую базу данных можно, отредактировав файл конфигурации на машинах VDI-серверов (данное действие должно быть выполнено на всех VDI-серверах) и указав параметры новой базы данных. Файл конфигурации расположен по следующему пути машины VDI-сервера:
Когда IP адрес или имя хоста новой базы данных будут изменены, необходимо перезапустить сервер. Данное действие должно быть выполнено на всех машинах VDI-серверов.
Также необходимо перевести Slave в режим записи, для этого выполните на Replica-сервере команду:
После выполнения данных действий доступ к VDI окружению будет восстановлен.
После этого необходимо перенастроить систему другой машины для репликации базы данных. Есть несколько вариантов выполнения данной настройки, включая следующие:
- Настройка текущей машины базы данных как Master и создание новой машины с репликой, которую нужно сконфигурировать и выполнить инструкцию по настройке Replica-сервера.
- Непосредственно создать бэкап машины с текущей базой данных (предварительно необходимо остановить все машины VDI-сервера). Необходимо создать новую машину выполняющую роль Мастера базы данных, восстановить на ней бэкап и заново выполнить конфигурацию репликации.
Примечание: для того чтобы предотвратить потерю данных, перед выполнением восстановления рекомендуется создать резервную копию базы данных. При создании резервной копии необходимо, чтобы все машины VDI-сервера были выключены.
Slave (вторичный узел)¶
В случае отказа или утраты доступа к вторичному серверу базы данных (Slave), доступ к VDI окружению потерян не будет, но необходимо выполнить действия по настройке Replica-сервера, описанные ранее.