Вышла стабильная версия MariaDB Galera Cluster 10.0.12, доступная для эксплуатации в производственных условиях. MariaDB представляет собой систему управления реляционными базами данных (СУРБД). Обычно для небольших приложений достаточно одного сервера базы данных, однако представьте, что ваше приложение обслуживает тысячи пользователей одновременно. В таких условиях требуется архитектура, способная выдерживать такую нагрузку и гарантировать высокую доступность. Поэтому важно подключить несколько серверов баз данных, которые будут взаимосвязаны и синхронизированы, чтобы при сбое одного сервера остальные могли его заменить и продолжить предоставление услуг пользователям.

В данной статье вы узнаете, как настроить кластер MariaDB Galera версии 10.0.12 с тремя узлами на операционной системе CentOS 6.Ниже приведена информация о серверах, входящих в кластер.
- Узел DB1: 192.168.1.10 (Имя хоста: db1.tecadmin.net)
- Узел DB2: 192.168.1.20 (Имя хоста: db2.tecadmin.net)
- Узел DB3: 192.168.1.30 (Имя хоста: db3.tecadmin.net)
Обратите внимание: Шаги 1, 2 и 3 нужно выполнить на каждом узле кластера, остальные шаги специфичны для конкретного узла.
Подготовка серверов: Перед началом установки убедитесь, что все узлы могут общаться друг с другом по сети. Проверьте настройки файрвола и отключите SELinux на время установки, чтобы избежать проблем с подключением.
Установка необходимых пакетов: На каждом узле установите MariaDB и необходимые библиотеки. Для этого выполните команду:
yum install mariadb-server galera
Настройка конфигурации: После установки откройте файл конфигурации MariaDB (обычно это /etc/my.cnf) и добавьте необходимые параметры для Galera:
[mysqld]
binlog_format=ROW
default-storage-engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="my_cluster"
wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.20,192.168.1.30"
wsrep_node_address="192.168.1.10"
wsrep_node_name="db1"
Замените wsrep_node_address и wsrep_node_name для каждого узла соответственно.
Запуск кластера: После настройки всех узлов выполните на первом узле команду для инициализации кластера:
service mysql start --wsrep-new-cluster
На остальных узлах запустите MariaDB обычным образом:
service mysql start
Теперь ваш кластер должен быть успешно настроен и готов к работе. Вы можете проверить состояние кластера, используя команду:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_%';"
Если все узлы отображаются как «online», значит, кластер работает корректно. В дальнейшем следите за производительностью и балансировкой нагрузки для обеспече
Содержание статьи
- 1 Добавление репозиториев MariaDB
- 2 Установка MariaDB и Galera
- 3 Первоначальная настройка MariaDB
- 4 Настройка кластера MariaDB Galera на DB1
- 5 Добавление DB2 в кластер MariaDB
- 6 Добавление DB3 в кластер MariaDB
- 7 Проверка настройки кластера Galera MariaDB
- 8 Создание пользователя с аутентификацией по сокетам в MySQL/MariaDB
- 9 Установка MariaDB на Ubuntu 24.04
- 10 Установка MySQL Server на Ubuntu 24.04
Добавление репозиториев MariaDB
Для 64-битной версии CentOS 6.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Для 32-битной версии CentOS 6
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
После добавления репозитория рекомендуется обновить кэш менеджера пакетов, выполнив команду:
yum makecache
Для установки MariaDB можно использовать следующую команду:
yum install MariaDB-server MariaDB-client
Не забудьте настроить и запустить MariaDB после установки:
systemctl start mariadb
Для автоматического запуска MariaDB при загрузке системы выполните:
systemctl enable mariadb
Также рекомендуется выполнить начальную настройку безопасности:
mysql_secure_installation
Эта команда поможет вам установить корневой пароль, удалить анонимных пользователей и отключить удаленный доступ к корневому аккаунту, что повысит безопасность вашей базы данных.
Дополнительные шаги по настройке:
- Настройка конфигурации: Вы можете отредактировать файл конфигурации MariaDB, расположенный по адресу
/etc/my.cnf, чтобы изменить параметры, такие как размер буфера, количество соединений и другие настройки производительности. - Проверка статуса службы: Убедитесь, что MariaDB работает корректно, используя команду:
- Создание базы данных: После успешной установки и запуска MariaDB вы можете создать свою первую базу данных с помощью команды:
- Управление пользователями: Для создания новых пользователей и назначения им прав доступа используйте команды
CREATE USERиGRANTв MySQL.
systemctl status mariadb
mysql -u root -p -e "CREATE DATABASE имя_базы_данных;"
Установка MariaDB и Galera
Перед установкой пакетов кластера MariaDB Galera необходимо удалить все существующие пакеты MySQL или MariaDB из системы. Затем выполните следующую команду на всех узлах.
# yum install MariaDB-Galera-server MariaDB-client galera
После установки пакетов рекомендуется настроить систему для работы с Galera. Для этого необходимо отредактировать конфигурационный файл MariaDB, который обычно находится по пути /etc/my.cnf. Добавьте следующие строки в секцию [mysqld]:
wsrep_on=ON
wsrep_cluster_address=gcomm://
wsrep_node_address=<адрес_узла>
wsrep_node_name=<имя_узла>
binlog_format=ROW
default_storage_engine=InnoDB
Замените <адрес_узла> на IP-адрес вашего узла, а <имя_узла> на уникальное имя для каждого узла кластера.
Также не забудьте установить параметры innodb_flush_log_at_trx_commit=2 и innodb_doublewrite=OFF для повышения производительности в кластере.
После внесения изменений в конфигурацию, запустите службу MariaDB с помощью команды:
# systemctl start mariadb
Проверьте статус службы, чтобы убедиться, что она работает корректно:
# systemctl status mariadb
Для дальнейшей настройки и управления кластером рекомендуется ознакомиться с официальной документацией MariaDB и Galera.
Первоначальная настройка MariaDB
После успешной установки пакетов выполните начальные настройки MariaDB. Используйте следующую команду и следуйте инструкциям на всех узлах кластера. Вам также будет предложено установить пароль для учетной записи root.
# service mysql start # mysql_secure_installation
Затем создайте в MariaDB пользователя, который сможет получать доступ к базе данных из вашей сети в кластере.
# mysql -u root -p MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'cluster'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit
Не забудьте остановить службу MariaDB перед началом настройки кластера.
# service mysql stop
Для улучшения безопасности рекомендуется также отключить удаленный доступ к учетной записи root. Это можно сделать, выполнив следующую команду:
# mysql -u root -p MariaDB [(none)]> UPDATE mysql.user SET Host='localhost' WHERE User='root'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit
Кроме того, рассмотрите возможность настройки бэкапов базы данных. Это поможет избежать потери данных в случае сбоя. Используйте утилиты, такие как mysqldump, для создания резервных копий:
# mysqldump -u root -p --all-databases > backup.sql
Не забудьте протестировать восстановление данных из резервной копии, чтобы убедиться, что процесс работает корректно.
Настройка кластера MariaDB Galera на DB1
Начнем настройку кластера MariaDB Galera на сервере DBОтредактируйте файл конфигурации сервера MariaDB и добавьте следующие параметры в секцию [mariadb].
[root@db1 ~]# vim /etc/my.cnf.d/server.cnf
query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.20,192.168.1.30" wsrep_cluster_name='cluster1' wsrep_node_address='192.168.1.10' wsrep_node_name='db1' wsrep_sst_method=rsync wsrep_sst_auth=cluster:password
Запустите кластер с помощью следующей команды.
[root@db1 ~]# /etc/init.d/mysql bootstrap
Bootstrapping the clusterStarting MySQL. SUCCESS!
Если возникнут проблемы при запуске, проверьте файл журнала ошибок MariaDB в /var/lib/mysql/.err.
Дополнительно, убедитесь, что на всех узлах кластера установлен одинаковый набор версий MariaDB и Galera, чтобы избежать несовместимости. Рекомендуется также настроить параметры сети, чтобы обеспечить минимальную задержку между узлами, так как это существенно влияет на производительность кластера.
Не забудьте настроить брандмауэр для разрешения трафика между узлами по необходимым портам, включая 3306 для MySQL и 4567 для Galera. Для мониторинга состояния кластера можно использовать утилиты, такие как ‘mysqladmin’ и ‘watch’.
Также рекомендуется настроить параметры для повышения безопасности, например, использовать SSL для защиты соединений между узлами. Проверьте конфигурацию сетевого интерфейса, чтобы убедиться, что все узлы могут обмениваться данными, и настройте параметры `wsrep_node_name` и `wsrep_node_address` на каждом узле в соответствии с их IP-адресами и именами.
Не забудьте создать резервные копии данных перед внесением изменений в конфигурацию и запуском кластера. Это поможет избежать потери данных в случае ошибки.
После успешной настройки и запуска кластера рекомендуется провести тестирование на производительность и отказоустойчивость, чтобы убедиться, что кластер работает как ожидалось.
Добавление DB2 в кластер MariaDB
После успешного запуска кластера на DB1, перейдите к настройке на DBОтредактируйте файл конфигурации сервера MariaDB и добавьте аналогичные параметры, изменив только wsrep_node_address, wsrep_cluster_address и wsrep_node_name.
[root@db2 ~]# vim /etc/my.cnf.d/server.cnf
query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.20,192.168.1.30" wsrep_cluster_name='cluster1' wsrep_node_address='192.168.1.20' wsrep_node_name='db2' wsrep_sst_method=rsync wsrep_sst_auth=cluster:password
Запустите кластер с помощью следующей команды.
[root@db2 ~]# /etc/init.d/mysql start Starting MySQL. SUCCESS!
После запуска сервера проверьте статус кластера с помощью команды:
[root@db2 ~]# mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
Эта команда покажет количество узлов в кластере. Убедитесь, что значение соответствует ожидаемому количеству узлов. Если вы сталкиваетесь с проблемами при подключении к кластеру, проверьте настройки брандмауэра и убедитесь, что необходимые порты открыты (обычно 3306 для MariaDB и 4567 для Galera). Также проверьте логи MariaDB для получения дополнительной информации о возможных ошибках.
Важно также настроить регулярное резервное копирование данных кластера, чтобы избежать потери информации в случае сбоя. Рекомендуется использовать утилиты для резервного копирования, совместимые с MariaDB, такие как Percona XtraBackup.
Добавление DB3 в кластер MariaDB
Этот сервер не является обязательным. Если вы хотите ограничиться двумя серверами в кластере, можете пропустить этот этап, но при этом необходимо удалить IP-адрес третьего сервера из конфигураций DB1/DBДля добавления этого сервера внесите изменения аналогично DB2.
[root@db3 ~]# vim /etc/my.cnf.d/server.cnf
query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.20,192.168.1.30" wsrep_cluster_name='cluster1' wsrep_node_address='192.168.1.30' wsrep_node_name='db3' wsrep_sst_method=rsync wsrep_sst_auth=cluster:password
Запустите кластер с помощью следующей команды.
[root@db3 ~]# /etc/init.d/mysql start Starting MySQL. SUCCESS!
После запуска кластера рекомендуется проверить статус узла с помощью следующей команды:
[root@db3 ~]# mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
Эта команда покажет количество узлов, успешно подключенных к кластеру. Убедитесь, что все узлы видны и работают корректно. Также не забудьте настроить брандмауэр, чтобы обеспечить связь между узлами кластера.
Если вы сталкиваетесь с проблемами при подключении, проверьте логи MariaDB, которые могут находиться по пути /var/log/mariadb/mariadb.log. В них можно найти полезную информацию о возникших ошибках.
Также рекомендуется установить mysqltuner для оптимизации производительности вашего кластера.
Проверка настройки кластера Galera MariaDB
На данном этапе настройка вашего кластера завершена и функционирует правильно. Теперь вы можете протестировать его, создав базу данных и таблицы на любом сервере в кластере; они будут мгновенно реплицированы на все другие серверы кластера.
кластерная база данных mariadb MariaDB Galera Cluster MySQL
Поделиться. Facebook Twitter Pinterest LinkedIn Tumblr Email WhatsApp
Создание пользователя с аутентификацией по сокетам в MySQL/MariaDB
Создание пользователя в MySQL или MariaDB с использованием аутентификации по сокетам позволяет повысить безопасность приложения, так как данные не передаются по сети, а аутентификация происходит на локальном уровне. Это особенно полезно для приложений, которые работают на одном сервере с базой данных.
Для начала необходимо выполнить следующие шаги:
- Подключитесь к серверу MySQL/MariaDB с помощью командной строки или GUI-клиента.
- Создайте нового пользователя, указав, что аутентификация будет производиться по сокетам. Например, выполните следующую команду:
- Предоставьте пользователю необходимые права доступа к базе данных:
- Не забудьте обновить привилегии:
CREATE USER 'username'@'localhost' IDENTIFIED WITH 'auth_socket';
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
Теперь пользователь ‘username’ сможет подключаться к базе данных, используя аутентификацию по сокетам. Важно отметить, что данный метод работает только для локальных соединений (localhost), и пользователь не сможет подключиться к серверу удаленно, если не будет настроена соответствующая аутентификация для других типов соединений.
Дополнительно, для проверки, что аутентификация работает корректно, можно выполнить:
SHOW GRANTS FOR 'username'@'localhost';
Это позволит убедиться в наличии всех необходимых привилегий для нового пользователя. Если вы планируете использование данного метода в продакшене, убедитесь, что у вас настроены соответствующие меры безопасности на уровне операционной системы.
Установка MariaDB на Ubuntu 24.04
Установка MySQL Server на Ubuntu 24.04
Спасибо за руководство. Оно прекрасно сработало для меня, но когда я останавливаю один узел, кластер перестает работать. “use mydb; ERROR 1047 (08S01): WSREP еще не подготовил узел для использования приложением” “wsrep_local_state_comment | Initialized” “wsrep_ready | OFF” “wsrep_provider_version | 3.5(rXXXX)” Можете помочь мне решить эту проблему?
Просто измените wsrep_sst_method=rsync на wsrep_sst_method=xtrabackup.
Также убедитесь, что все узлы кластера имеют одинаковую конфигурацию и версию Galera. Проверьте настройки, такие как wsrep_cluster_address, wsrep_node_name и другие параметры, чтобы убедиться, что они корректны и соответствуют друг другу. Если проблема сохраняется, попробуйте запустить команду SHOW STATUS LIKE 'wsrep_%'; на проблемном узле, чтобы получить больше информации о состоянии кластера.
Не забывайте следить за логами MySQL, которые могут содержать подсказки о том, что происходит при отключении узла. Логи могут находиться по пути /var/log/mysql/error.log или аналогичному, в зависимости от вашей конфигурации. Если возникли другие ошибки, приведите их здесь для дальнейшего анализа.

