Galera Cluster – это решение кластеризации баз данных MySQL, реализующий механизм multi-master, используя синхронную репликацию. Galera автоматически обрабатывает размещение данных на разных узлах, позволяя отправлять запросы на чтение и запись на любые узлы в любое время. Синхронная репликация гарантирует, что если изменения произошли на одном узле кластера, то они произошли на всех узлах. Синхронная репликация имеет ряд преимуществ: высокая доступность, параллельное выполнение транзакций на разных узлах и гарантия причинно-следственной связи во всем кластере. Однако при выборе этого решения кластеризации стоит принять во внимание что на практике синхронная репликация данных работает значительно медленнее асинхронной. В этой статье будет описана установка Galera Cluster 4, MySql 8 и настройка кластера с тремя узлами, а так же установка и настройка Pen, балансировщика нагрузки для протоколов на основе TCP и UDP.
В первую очередь необходимо установить пакеты 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 |
В параметрах |
На первом узле выполните команду:
mysqld_bootstrap |
После того как mysql запустится на первом узле. Запустите mysql на остальных узлах командой:
service mysql start |
Проверить количество узлов, которые уже включились в кластер можно командой (рекомендуется выполнять команду на первом узле):
show status like 'wsrep_cluster_size'; |
Для подключения кассового сервера к СУБД необходимо дополнить конфигурацию сервера MySql и создать базу данных artixcs_struct
. Для этого на первом узле выполните скрипт для конфигурации MySQL и скрипт для создания БД artixcs_struct. При выполнении скриптов будет запрошен пароль от пользователя root
, который вводили при установке MySQL.
На машине с кассовым сервером установите балансировщик Pen. Для этого скачайте скрипт и откройте его на редактирование. Замените адреса серверов на адреса своих узлов, сохраните и выполните скрипт.