Galera Cluster – это решение кластеризации баз данных MySQL, реализующий механизм multi-master, используя синхронную репликацию. Galera автоматически обрабатывает размещение данных на разных узлах, позволяя отправлять запросы на чтение и запись на любые узлы в любое время. Синхронная репликация гарантирует, что если изменения произошли на одном узле кластера, то они произошли на всех узлах. Синхронная репликация имеет ряд преимуществ: высокая доступность, параллельное выполнение транзакций на разных узлах и гарантия причинно-следственной связи во всем кластере. Однако при выборе этого решения кластеризации стоит принять во внимание что на практике синхронная репликация данных работает значительно медленнее асинхронной. В этой статье будет описана установка Galera Cluster 4, MySql 8 и настройка кластера с тремя узлами, а так же установка и настройка Pen, балансировщика нагрузки для протоколов на основе TCP и UDP.

Установка и настройка Galera Cluster 4 + MySQL 8 на каждом узле

В первую очередь необходимо установить пакеты dirmngr и software-properties-common.

Dirmngr – это служба для управления, загрузки, обновления и отслеживания состояния сертификатов. Пакет software-properties-common позволяет легко добавлять и обновлять список репозиториев.

Здесь и далее все команды выполняются от имени root (sudo su) и написаны для Ubuntu 18.04.
apt install dirmngr software-properties-common

Далее необходимо добавить репозитории galeracluster:

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 BC19DDBA
echo 'deb https://releases.galeracluster.com/galera-4/ubuntu bionic main' | tee -a /etc/apt/sources.list.d/cashserver4.list
echo 'deb https://releases.galeracluster.com/mysql-wsrep-8.0/ubuntu bionic main' | tee -a /etc/apt/sources.list.d/cashserver4.list

После добавления репозиториев в /etc/apt/preferences.d необходимо создать файл galera.pref командой:

touch /etc/apt/preferences.d/galera.pref

и содержимым:

Package: *
Pin: origin releases.galeracluster.com
Pin-Priority: 1001

Для обновления списков пакетов выполните команду:

apt-get update

Теперь можно установить Galera Cluster и MySQL.

При установке необходимо указать пароль для пользователя root (в дальнейшем понадобится) и выбрать аутентификацию MySQL 5.x.
apt-get install galera-4 galera-arbitrator-4 mysql-wsrep-8.0 mysql-wsrep-server mysql-wsrep-client

После установки остановите mysql server командой:

service mysql stop

Необходимо отключить apparmor или настроить его так, чтобы mysql мог запускать внешние программы и открывать для прослушивания сокеты на непривилегированных портах. Чтобы отключить apparmor для mysql выполните следующие команды:

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld
apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

В завершении нужно сконфигурировать узел. Для этого в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секцию [mysqld] добавьте следующее:

default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=128M
binlog_format=ROW
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_node_name="g1"
wsrep_node_address="ipaddress"
wsrep_cluster_name="galera4"
wsrep_cluster_address="gcomm://ip1,ip2,ip3"
wsrep_provider_options="gcache.size=128M; gcache.page_size=128M"
wsrep_slave_threads=4
wsrep_sst_method=rsync

Скорректируйте конфигурацию

В параметрах wsrep_node_name и wsrep_node_address укажите имя узла и его ip-адрес, эти данные будут уникальными для каждого узла. В параметрах wsrep_cluster_name и wsrep_cluster_address укажите имя кластера и адреса всех узлов в кластере соответственно, эти данные будут одни и те же для всех узлов в кластере.

Запуск кластера

На первом узле выполните команду:

mysqld_bootstrap

После того как mysql запустится на первом узле. Запустите mysql на остальных узлах командой:

service mysql start

Проверить количество узлов, которые уже включились в кластер можно командой (рекомендуется выполнять команду на первом узле):

show status like 'wsrep_cluster_size';

Настройка кластера для подключения кассового сервера

Для подключения кассового сервера к СУБД необходимо дополнить конфигурацию сервера MySql и создать базу данных artixcs_struct. Для этого на первом узле выполните скрипт для конфигурации MySQL и скрипт для создания БД artixcs_struct. При выполнении скриптов будет запрошен пароль от пользователя root, который вводили при установке MySQL.

На машине с кассовым сервером установите балансировщик Pen. Для этого скачайте скрипт и откройте его на редактирование. Замените адреса серверов на адреса своих узлов, сохраните и выполните скрипт.

  • No labels