Установка и настройка mysql-mmm-кластера(MySQL Master-Master replication Manager) на Centos

Инструмент управления тиражированием с несколькими основными репликами (MultiMaster replication Manager) использует для репликации традиционный механизм “master-slave”. Он работает на основе набора серверов MySQL с, как минимум,  двумя основными репликами с набором подчиненных реплик, а также с выделенным узлом мониторинга. Поверх этого набора узлов настраивается пул IP-адресов, который MMM может динамически перемещать от узла к узлу, в зависимости от их доступности. У нас есть два типа этих адресов:
— “Записывающий”: клиент может записывать в базу данных, подключаясь к этому IP-адресу (во всем кластере может быть только один адрес записывающего узла).
— “Читающий ”: клиент может читать в базе данных, подключаясь к этому IP-адресу (может быть несколько читающих узлов для масштабирования чтения).

Узел мониторинга проверяет доступность серверов MySQL и включает перенос “записывающих” и “читающих” IP-адресов в случае отказа сервера. Набор проверок относительно прост: он включает проверку доступности сети, проверку присутствия mysqld на узле, присутствия ветки репликации и размера журнала репликации. Распределение нагрузки по чтению между “читающими” IP-адресами выполняется пользователем (его можно сделать с помощью HAProxy, Keepalived или циклического перебора DNS и т.п.).

MMM использует традиционную асинхронную репликацию. Это значит, что всегда есть шанс, что в момент сбоя мастера реплики отстают от мастера.

В данной схеме будет использоваться 4 сервера

 

VIP(virtual IP) на запись 192.168.1.128 будет расшарен/плавающий между двумя master-серверами(в конкретный момент времени только один –АКТИВНЫЙ мастер будет иметь на себе этот адрес. При выходе из строя активного мастера этот адрес будет автоматически перемещаться на пассивный мастер,  тем самым делая его активным)

Именно этот VIP-адрес и прописывается в настройках подключения к серверу баз данных в приложениях

VIP адреса на чтение для

 

Перед настройкой mysql-mmm необходимо соответственно настроить master-master-репликацию между двумя серверами, а также  master-slave репликацию между active master и slave-сервером.

Принцип настройки master-master репликации изложен здесь

https://kamaok.org.ua/?p=266

Принцип настройки master-slave репликации изложен здесь

https://kamaok.org.ua/?p=245

Ниже я кратко приведу набор команд для настройки master(192.168.1.110) и slave(192.168.1.39) репликации

С другой консоли!!!

В старой консоли

на slave-севрере

 

Подготовка к настройки mysql-mmm

Создаем MySQL- пользователей mmm_monitor, mmm_agent, replicauser

Например,выполняем команды на active master(автоматически все реплицируется на passive master и slave-сервер)

 

mmm_monitor с доступом с монитор-сервера(192.168.1.38)

 

Пользователя mmm_agent с доступом со всех  серверов баз данных(агентов)(192.168.1.110, 192.168.1.111, 192.168.1.39)

 

Пользователя replicauser с доступом со всех  серверов баз данных(агентов)(192.168.1.110, 192.168.1.111, 192.168.1.39)

Этого же пользователя можно использовать и при настройке репликации master/master и master/slave

Итого на выходе имеем

 

Установка mysql-mmm

Я устанавливаю на всех серверах (монитор-сервер и 3 сервера баз данных(2 мастера активный/пассивный и 1 slave) все пакеты mysql-mmm

Хотя для монитор-сервера достаточно mysql-mmm и mysql-mmm-monitor, а для агентов(2 мастера и слейв) mysql-mmm-agent

 

 Настройка mysql-mmm

1.Создаем на монитор-сервере общий для всех файл,предварительно сохранив его резервную копию

Копируем конфиг на все сервера

 

2.На серверах баз данных настраиваем файл mmm_agent.conf ,предварительно сохранив его резервную копию

110-сервер

111-сервер

39-сервер

3.На монитор-сервере настраиваем файл mmm_mon.conf, предварительно сделав его резервную копию

ping_ips — здесь указаны IP-адреса,которые будет проверять(пинговать) монитор-сервер для определния в порядке ли сетевое соединение монитор-сервера.

Я использую здесь адрес шлюза

 

4.Запускаем агента(mysql-mmm-agent) на всех  серверах баз данных

Например,на активном мастере

на 111-сервере

на 39-сервере

 

5.На монитор-сервере запускаем mysql-mmm-monitor

Добавление в автозагрузку mysql-mmm-monitor на монитор-сервере

Добавление в автозагрузку mysql-mmm-agent на севрерах  баз данных

 

Проверяем состояние mysql-кластера

 

На самом деле после первой проверки кластера все сервера будут находится в статусе AWAITING_RECOVERY, а не в статусе ONLINE

Я использую опцию  auto_set_online     60 в файле /etc/mysql-mmm/mmm_mon.conf, что позволяет автоматически переводить севрер из состояния  AWAITING_RECOVERY в состояние ONLINE по истечению 60 секунд при условии,что все четыре проверки с монитора(ping,mysql,rep_threads,rep_backlog) успешны

 

Работа с mysql-mmm

 

Просмотр всех проверок всех севреров баз данных(агентов)

Просмотр всех проверок конкретного сервера(агента) баз данных(например,db1)

Просмотр конкретной проверки конкретного сервера(агента)

Просмотр конкретной проверки(например,rep_backlog для всех серверов баз-данных(агентов)

Ручной вывод сервера(агента) с кластера(например, на обслуживание)

Если это passive master  или slave, тогда достаточно одной  команды(например,для db2)

Проверяем

Ручной ввод cервера в кластер.

Проверяем

 

Если из mysql-кластера необходимо вывести active master,тогда сначала переводим роль writer к passive master(который после такого операции становится active master), а потом выводим бывший active master с кластера

Проверяем

Проверяем

 

Монитор-сервер проверяет сервера баз данных(агентов)   по ping-проверке(checker ping), проверке mysql(checker mysql) ,на предмет  остановки/разлома репликация(checker rep_threads ),отставания репликации превышает порог (checker rep_backlog)( по умолчанию устанавливается в 60 секунд – за это отвечает параметр    max_backlog в секции .Если его нужно увеличить, например, до 5 минут, тогда на мониторе в /etc/mysql-mmm/mmm_mon.conf

добавляем и перезапускаем mysql-mmm-monitor

 

Если какой-либо севрер баз данных(агент) не будет доступен с монитор-сервера по одной из вышеуказанных проверок, то  этот сервер(агент) будет выведен монитором из кластера с соответствующим статусом в mmm_control show

 

Например slave-сервер(db3-192.168.1.39) имеет адрес для чтения 192.168.1.131

Например,заблокируем через iptables доступ к 3306 tcp-порту на сервере 39

После этого кластер выглядит так

Адрес на чтение для db3 был перевед на на другой сервер(на db1)

Проверка slave-сервера db3

После удаления  запрещающего подключения к  порту 3306 правила  из iptables

я остановил репликацию на db3

Проверка с монитор-сервера выглядит так

Состояние кластера

Логи на мониторе смотрим в файле

После смены active master все slave-севрвра будут автоматически переведены на новый active master

Например,

до смены мастера

Slave-сервер  реплицируется с 192.168.1.110

после смены active master

Slave-сервер  реплицируется с новым active master 192.168.1.111

в логах slave-сервера

Источники:

1.http://mysql-mmm.org/

2.http://habrahabr.ru/company/mirantis_openstack/blog/177357/

 

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика