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. Для этого скачайте скрипт и откройте его на редактирование. Замените адреса серверов на адреса своих узлов, сохраните и выполните скрипт.