Comment on page
Настройка репликации БД между серверами
Данное руководство описывает процесс создания отказоустойчивой конфигурации из двух экземпляров брокера VDI и БД с репликацией master - slave. Его можно использовать как для развертывания новой установки, так и для подключения второго сервера к уже имеющейся.
Данная инструкция подходит как для репликации встроенной БД в appliance брокера, так и внешней БД, подключенной к нему.
В качестве адресов для примера используются:
10.0.0.1 - адрес первого брокера
10.0.0.2 - адрес второй брокера
10.0.0.3 - адрес первой внешней базы данных (если используется)
10.0.0.4 - адрес второй внешней базы данных (если используется)
На первом брокере (10.0.0.1):
- Перед настройкой реплики остановить:
Брокер версии 3.0
systemctl stop apache2 uds
Брокер версии >= 3.5
systemctl 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'@'%';
Добавить разрешения для подключения к БД с других хостов:
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='udsdbadm';
FLUSH PRIVILEGES;
- Создать резервную копию БД (обязательно!):
mysqldump -u root --single-transaction --master-data udsdb > backup.sql
- Запустить сервисы брокера:
Брокер версии 3.0
systemctl start apache2 uds
Брокер версии >= 3.5
systemctl start vdi.service vdiweb.service
На втором брокере (10.0.0.2):
- Остановить сервисы брокера:
Брокер версии 3.0
systemctl stop apache2 uds
Брокер версии >= 3.5
systemctl stop vdi.service vdiweb.service
- Скопировать файл
/var/server/server/settings.py
с первого (10.0.0.1) брокера с заменой на второй (10.0.0.2): - Запустить сервисы брокера
Брокер версии 3.0
systemctl start apache2 uds
Брокер версии >= 3.5
systemctl 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 = 2log_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
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
Если при настройке внешних баз данных есть потребность предварительного переноса информации (сервисы, пользователи, транспорты и пр.) с уже настроенной встроенной базы д анных брокера 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'@'%';
- Добавить разрешения для подключения к БД с других хостов:
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='udsdbadm';
FLUSH PRIVILEGES;
- Создать резервную копию БД (обязательно!):
mysqldump -u root --single-transaction --master-data udsdb > backup.sql
На первом брокере (10.0.0.1):
- Остановить сервисы:
Брокер версии 3.0
systemctl stop apache2 uds
Брокер версии >= 3.5
systemctl stop vdi.service vdiweb.service
- Отредактировать файл
/var/server/server/settings.py
, указать в полеHOST
адрес первого сервера БД (10.0.0.3):
DATABASES = {
...
'HOST': '10.0.0.3'
...
}
- Запустить сервисы:
Брокер версии 3.0
systemctl start apache2 uds
Брокер версии >= 3.5
systemctl start vdi.service vdiweb.service
На втором брокере (10.0.0.2):
- Остановить сервисы:
Брокер версии 3.0
systemctl stop apache2 uds
Брокер версии >= 3.5
systemctl stop vdi.service vdiweb.service
- Скопировать файл
/var/server/server/settings.py
с первого (10.0.0.1) брокера с заменой на второй (10.0.0.2): - Запустить сервисы брокера:
Брокер версии 3.0
systemctl start apache2 uds
Брокер версии >= 3.5
systemctl start vdi.service vdiweb.service
На втором сервере БД (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 = 2log_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