Установка и настройка MySQL кластера Galera в Ubuntu 22.04

MariaDB кластер Galera

MySQL является одним из самых популярных реляционных баз данных в мире, который используется для хранения и обработки данных в различных приложениях. Однако, как и любая база данных, MySQL может столкнуться с проблемой отказа или сбоя, что может привести к потере данных и простою системы.

Кластер Galera — это решение, которое позволяет создавать высокодоступные и отказоустойчивые кластеры MySQL, где данные хранятся на нескольких узлах и могут быть доступными даже при сбое одного из узлов.

В этой статье мы рассмотрим, как установить и настроить высокодоступный отказоустойчивый кластер Galera на операционной системе Ubuntu 22.04.

Шаг 1: Установка необходимых пакетов

Для установки MySQL кластера Galera (оф. сайт: https://galeracluster.com/) нам необходимо установить следующие пакеты:

sudo apt updatesudo apt install software-properties-commonsudo add-apt-repository universesudo apt updatesudo apt install galera-4 mysql-server-8.0 mysql-client-8.0

Шаг 2: Настройка первичного сервера

Настройка первичного сервера начинается с создания конфигурационного файла /etc/mysql/conf.d/galera.cnf со следующим содержимым:

[mysqld]

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

# Galera Provider Configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera-4/libgalera_smm.so

# Galera Cluster Configuration

wsrep_cluster_name=»test_cluster»

wsrep_cluster_address=»gcomm://»

# Galera Synchronization Configuration

wsrep_sst_method=rsync

Здесь мы включаем режим записи бинарных логов ROW, указываем хранилище по умолчанию InnoDB, задаем режим блокировки для автоинкрементных ключей и открываем привязку к любому доступному IP-адресу. Затем мы указываем параметры для подключения к кластеру Galera и метод синхронизации SST (State Snapshot Transfer).

После того, как мы создали конфигурационный файл, мы можем запустить первичный сервер с помощью команды:

sudo galera_new_cluster

Шаг 3: Настройка вторичного сервера

Настройка вторичного сервера почти идентична настройке первичного сервера. Создайте файл /etc/mysql/conf.d/galera.cnf со следующим содержимым:

[mysqld]

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

# Galera Provider Configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera-4/libgalera_smm.so

# Galera Cluster Configuration

wsrep_cluster_name=»test_cluster»

wsrep_cluster_address=»gcomm://<ip-адрес первичного сервера>»

# Galera Synchronization Configuration

wsrep_sst_method=rsync

Замените <ip-адрес первичного сервера> на IP-адрес первичного сервера. Затем запустите службу MySQL на вторичном сервере:

sudo systemctl start mysql

Шаг 4: Проверка статуса кластера

После настройки первичного и вторичного серверов мы можем проверить статус кластера. Для этого выполните команду:

sudo mysql -u root -p -e «SHOW STATUS LIKE ‘wsrep_cluster_size'»

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

Шаг 5: Проверка репликации данных

Мы можем проверить, что данные реплицируются между серверами, создав базу данных на первичном сервере и проверив ее наличие на вторичном сервере. Для этого выполните следующие команды на первичном сервере:

sudo mysql -u root -p -e «CREATE DATABASE test_db»

sudo mysql -u root -p -e «CREATE TABLE test_db.test_table (id INT PRIMARY KEY, name VARCHAR(50))»

sudo mysql -u root -p -e «INSERT INTO test_db.test_table (id, name) VALUES (1, ‘Test Data’)»

Затем проверьте наличие базы данных и таблицы на вторичном сервере:

sudo mysql -u root -p -e «SHOW DATABASES»

sudo mysql -u root -p -e «USE test_db; SELECT * FROM test_table»

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

Шаг 6: Настройка балансировщика нагрузки

Наконец, мы можем настроить балансировщик нагрузки для распределения трафика между серверами в кластере. Для этого можно использовать любой доступный балансировщик нагрузки, такой как HAProxy или NGINX.

Например, для настройки HAProxy, создайте файл /etc/haproxy/haproxy.cfg со следующим содержимым:

frontend mysql-cluster bind <ip-адрес балансировщика>:3306 mode tcp default_backend mysql-nodesbackend mysql-nodes mode tcp balance roundrobin option tcpka option mysql-check user haproxy_check server node1 <ip-адрес первичного сервера>:3306 check weight 1 server node2 <ip-адрес вторичного сервера>:3306 check weight 1

Замените <ip-адрес балансировщика>, <ip-адрес первичного сервера> и <ip-адрес вторичного сервера> на соответствующие IP-адреса. Затем запустите службу HAProxy:

sudo systemctl start haproxy

Теперь вы можете подключаться к кластеру через балансировщик нагрузки, который будет автоматическираспределять трафик между первичным и вторичным серверами в кластере.

Шаг 7: Обслуживание кластера Galera

Как и любая база данных, кластер Galera требует регулярного обслуживания для поддержания оптимальной производительности и надежности. Вот некоторые общие рекомендации по обслуживани
ю кластера Galera:

  • Регулярно проверяйте состояние кластера и статус синхронизации узлов. Это можно сделать с помощью команды SHOW STATUS LIKE ‘wsrep_%’.
  • Резервируйте достаточно места на диске для хранения базы данных и журналов транзакций.
  • Оптимизируйте запросы и индексы для улучшения производительности.
  • Регулярно резервируйте базу данных и журналы транзакций для защиты от потери данных.
  • Обновляйте систему и ПО, включая кластер Galera, чтобы получить последние исправления ошибок и улучшения производительности.

В этой статье мы рассмотрели, как установить и настроить кластер Galera на Ubuntu 22.04. Мы прошли через все необходимые шаги, начиная от установки MySQL, до настройки кластера и балансировщика нагрузки. Мы также рассмотрели некоторые общие рекомендации по обслуживанию кластера. Надеюсь, этот материал поможет вам настроить кластер Galera и обеспечить надежную и производительную базу данных для вашего проекта.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!