Skip to main content

MariaDB

В качестве рекомендуемого решения предлагается использовать резервирование MariaDB, которая поддерживает режим репликации Master-Master.

Репликация Master-Master БД MariaDb

Для настройки репликации необходимо выполнить следующие шаги.

На первом сервере:

  1. В секцию [mysqld] конфигурационного файла БД MariaDB добавить следующие настройки:
sql-mode			= "ANSI_QUOTES" 
datadir = путь к данным
server-id = 1
log-bin = bin-log
bind-address = 0.0.0.0
auto_increment_increment = 2
auto_increment_offset = 1
  1. Перезапустить службу БД MariaDB, выполнив в терминале команду: Для linux: systemctl restart mariadb Для windows: net start mariadb
  2. Установить соединение с БД MariaDB, выполнив в терминале команду: mysql -u root –p , где root – пользователь, а после ключа -p пароль (если был указан)
  3. Создать пользователя, который будет ответственен за репликацию БД MariaDB, выполнив в терминале команды: create user 'replication_user'@'%' identified by 'replication_user'; grant replication slave on *.* to 'replication_user'@'%';
  4. Проверить состояние бинарного лога, выполнив в терминале команду: show master status; Значение полей Position и File будут использоваться для конфигурации репликации на втором сервере.
|	File			|	Position 
| mariadb-bin.000001 | 314

На втором сервере:

  1. В секцию [mysqld] конфигурационного файла БД MariaDB добавить следующие настройки:
sql-mode			=	"ANSI_QUOTES"
datadir = путь к данным
server-id = 2
log-bin = bin-log
bind-address = 0.0.0.0
auto_increment_increment = 2
auto_increment_offset = 2
  1. Выполнить пункты 2-4 аналогично первому серверу.
  2. Остановить репликацию, выполнив в терминале команду: stop slave;
  3. Настраиваем репликацию, указав второму серверу, где нужно искать файл журнала: CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='replication_user', MASTER_PASSWORD='replication_user_password', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=314; где MASTER_HOST – ip первого мастера, MASTER_USER/ MASTER_PASSWORD – логин/пароль пользователя с правами репликации, которого создали ранее, MASTER_LOG_FILE и MASTER_LOG_POS - название журнала и номер позиции из пункта 5 подраздела На первом сервере соответственно.
  4. Запустить репликацию, выполнив в терминале команду: start slave;
  5. Проверить статус сервера на наличие ошибок, выполнив команду: show slave status \G Наличие числовых значений в Read_Master_Log_Pos и Relay_Log_Pos указывает, что ошибок нет.
  6. Проверить состояние бинарного лога, выполнив в терминале команду: show master status; Значение полей Position и File будут использоваться для конфигурации репликации на первом сервере.
|	File			|	Position 
| mariadb-bin.000002 | 8196

На первом сервере:

  1. Остановить репликацию, выполнив в терминале команду: stop slave;
  2. Настраиваем репликацию, указав первому серверу, где нужно искать файл журнала: CHANGE MASTER TO MASTER_HOST='server2', MASTER_USER='replication_user', MASTER_PASSWORD='replication_user_password', MASTER_LOG_FILE='mariadb-bin.000002', MASTER_LOG_POS=8196; где MASTER_HOST – ip второго мастера, MASTER_USER/ MASTER_PASSWORD – логин/пароль пользователя с правами репликации, которого создали ранее, MASTER_LOG_FILE и MASTER_LOG_POS - название журнала и номер позиции из пункта 7 подраздела На втором сервере соответственно.
  3. Запустить репликацию, выполнив в терминале команду: start slave;
  4. Проверить статус сервера, выполнив в терминале команду: show slave status \G Наличие числовых значений в Read_Master_Log_Pos и Relay_Log_Pos указывают, что ошибок нет. Если нет ошибок, то репликация настроена. В секции [Database] конфигурационного файла technodoc.settings.ini ТехеноДок указать корректную строку подключения к БД MariaDB и установить значение RoundRobin для ключа FailoverStrategy. При возникновении проблем с восстановлением репликации при переключении или аварийной остановки, необходимо запустить репликацию повторно, выполнив в терминале команду: start slave;
# Пример строки подключения
Type = MariaDb # Тип БД - MariaDb
ConnectionString = Server=localhost;Database=technodoc;Uid=root;Password=password # Строка соединения с БД