MariaDB
Данное руководство описывает процесс создания отказоустойчивой конфигурации из двух экземпляров брокера VDI и БД с репликацией master - slave. Его можно использовать как для развертывания новой установки, так и для подключения второго сервера к уже имеющейся.
Данная инструкция подходит как для репликации встроенной БД в appliance брокера, так и внешней БД, подключенной к нему. В качестве адресов для примера используются: 10.0.0.1 - адрес первого брокера 10.0.0.2 - адрес второй брокера 10.0.0.3 - адрес первой внешней базы данных (если используется) 10.0.0.4 - адрес второй внешней базы данных (если используется)
Если используются внутренние БД апплаенса брокера HOSTVM VDI
Настройка первого сервера (Master)
На первом брокере (10.0.0.1):
Перед настройкой реплики остановить:
systemctl stop apache2 udssystemctl stop vdi.service vdiweb.serviceОтредактировать
/etc/mysql/mariadb.conf.d/50-server.cnf
В параметре bind-address указать:
IP адрес адрес первого брокера (10.0.0.1).
Раскомментировать параметры и задать значения:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.logПерезапустить сервис mariadb
systemctl restart mariadbЗайти в MYSQL с привилегиями root, создать пользователя для репликации, назначить ему необходимые разрешения:
mysql -p
CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
где replica это имя пользователя и password - пароль.
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
Добавить разрешения для подключения к БД с других хостов:
DROP USER 'udsdbadm'@'localhost';
CREATE USER 'udsdbadm'@'%' IDENTIFIED BY 'password';Где 'password' – пароль для пользователя udsdbadm. После пересоздания пользователя необходимо внести соответствующие изменения в файл конфигурации брокера /var/server/server/setting.py, а также сменить пароль пользователю udsdbadm на новый на втором сервере (Slave).
GRANT ALL PRIVILEGES ON *.* TO 'udsdbadm'@'%';
FLUSH PRIVILEGES;Внести изменения в файл конфигурации брокера
/var/server/server/setting.py, указав новый пароль для пользователяudsdbadm:
DATABASES = {
...
'PASSWORD': 'password'
...
}Создать резервную копию БД (обязательно!):
mysqldump -u root --single-transaction --master-data udsdb > backup.sqlЗапустить сервисы брокера:
systemctl start apache2 udssystemctl start vdi.service vdiweb.serviceНастройка второго сервера (Slave)
На втором брокере (10.0.0.2):
Остановить сервисы брокера:
systemctl stop apache2 udssystemctl stop vdi.service vdiweb.serviceСкопировать файл
/var/server/server/settings.pyс первого (10.0.0.1) брокера с заменой на второй (10.0.0.2):Внести изменения в файл конфигурации брокера
/var/server/server/setting.py, указав адрес первого брокера (10.0.01):DATABASES = { ... 'HOST': '10.0.0.1' ... }Запустить сервисы брокера
systemctl start apache2 udssystemctl start vdi.service vdiweb.serviceНастройка репликации
На втором брокере (10.0.0.2):
отредактировать
/etc/mysql/mariadb.conf.d/50-server.cnfВ параметре
bind-addressуказать IP адрес второго брокера (10.0.0.2)bind-address = 10.0.0.2Раскомментировать параметры и задать значения:
server-id = 2 log_bin /var/log/mysql/mysql-bin.logПерезапустить сервис mariadb
systemctl restart mariadbСкопировать и развернуть дамп базы с первого (10.0.0.1) сервера (обязательно!).
cat backup.sql | /usr/bin/mysql -u root udsdbПолучить параметры
MASTER_LOG_FILEиMASTER_LOG_POSиз дампа:head -n22 backup.sql | tail -1Пример вывода предыдущей команды:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=236295;Зайти в MYSQL с привилегиями root
mysql -pОстановить все операции на сервере
STOP SLAVE;Настроить репликацию с первым (10.0.0.1) сервером
CHANGE MASTER TO MASTER_HOST='10.0.0.1', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=236295;Где
10.0.0.1- адрес первого (10.0.0.1) сервера БД,replica-настроенный ранее пользователь для репликации,password- его пароль,myslq-bin.000001и236295- параметры журнала, полученные ранее.Запустить сервер:
START SLAVE;Проверить параметры репликации:
SHOW SLAVE STATUS\GВ выводе должен быть корректный адрес первого (10.0.0.1) сервера
Master_Host: 10.0.0.1и значение параметровSlave_IO_RunningиSlave_SQL_RunningравноеYes
Если используются серверы с внешними БД
Настройка первого сервера (Master)
Если при настройке внешних баз данных есть потребность предварительного переноса информации (сервисы, пользователи, транспорты и пр.) с уже настроенной встроенной базы данных брокера HOSTVM VDI - перенесите базу данных на первый (10.0.0.3) сервер БД согласно руководства ("Перенос базы данных"). Если перенос данных не требуется или репликация настраивается с нуля - этот пункт можно пропустить. На первом сервере БД (10.0.0.3):
Отредактировать
/etc/mysql/mariadb.conf.d/50-server.cnf
В параметре bind-address указать:
IP адрес адрес первого сервера (10.0.0.3).
Раскомментировать параметры и задать значения:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.logПерезапустить сервис mariadb
systemctl restart mariadbЗайти в MYSQL с привилегиями root, создать пользователя для репликации, назначить ему необходимые разрешения:
mysql -p
CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
где replica это имя пользователя и password - пароль.
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
Добавить разрешения для подключения к БД с других хостов:
DROP USER 'udsdbadm'@'localhost';
CREATE USER 'udsdbadm'@'%' IDENTIFIED BY 'password';Где 'password' – пароль для пользователя udsdbadm. После пересоздания пользователя необходимо внести соответствующие изменения в файл конфигурации брокера /var/server/server/setting.py, а также сменить пароль пользователю udsdbadm на новый на втором сервере (Slave).
GRANT ALL PRIVILEGES ON *.* TO 'udsdbadm'@'%';
FLUSH PRIVILEGES;Создать резервную копию БД (обязательно!):
mysqldump -u root --single-transaction --master-data udsdb > backup.sqlНастройка брокеров
На первом брокере (10.0.0.1):
Остановить сервисы:
systemctl stop apache2 udssystemctl stop vdi.service vdiweb.serviceОтредактировать файл
/var/server/server/settings.py, указать в полеHOSTадрес первого сервера БД (10.0.0.3), и пароль для пользователяudsdbadm:
DATABASES = {
...
'HOST': '10.0.0.3'
'PASSWORD': 'password'
...
}Запустить сервисы:
systemctl start apache2 udssystemctl start vdi.service vdiweb.serviceНа втором брокере (10.0.0.2):
Остановить сервисы:
systemctl stop apache2 udssystemctl stop vdi.service vdiweb.serviceСкопировать файл
/var/server/server/settings.pyс первого (10.0.0.1) брокера с заменой на второй (10.0.0.2):Запустить сервисы брокера:
systemctl start apache2 udssystemctl start vdi.service vdiweb.serviceНастройка второго сервера (Slave)
Настройка репликации
На втором сервере БД (10.0.0.4):
отредактировать
/etc/mysql/mariadb.conf.d/50-server.cnfВ параметре
bind-addressуказать IP адрес второго сервера БД (10.0.0.4)bind-address = 10.0.0.4Раскомментировать параметры и задать значения:
server-id = 2 log_bin /var/log/mysql/mysql-bin.logПерезапустить сервис mariadb
systemctl restart mariadbСкопировать и развернуть дамп базы с первого (10.0.0.3) сервера БД (обязательно!).
cat backup.sql | /usr/bin/mysql -u root udsdbПолучить параметры
MASTER_LOG_FILEиMASTER_LOG_POSиз дампа:head -n22 backup.sql | tail -1Пример вывода предыдущей команды:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=236295;Зайти в MYSQL с привилегиями root
mysql -pОстановить все операции на сервере
STOP SLAVE;Настроить репликацию с первым (10.0.0.3) сервером БД
CHANGE MASTER TO MASTER_HOST='10.0.0.3', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=236295;Где
10.0.0.3- адрес первого (10.0.0.3) сервера БД,replica-настроенный ранее пользователь для репликации,password- его пароль,myslq-bin.000001и236295- параметры журнала, полученные ранее.Запустить сервер:
START SLAVE;Проверить параметры репликации:
SHOW SLAVE STATUS\GВ выводе должен быть корректный адрес первого (10.0.0.3) сервера
Master_Host: 10.0.0.3и значение параметровSlave_IO_RunningиSlave_SQL_RunningравноеYes
Last updated
Was this helpful?