Поиск по сайту:

Как настроить кластер MariaDB Galera в Ubuntu 20.04


Это руководство существует для этих версий ОС

  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 16.04 (Xenial Xerus)

На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установить сервер MariaDB
  4. Настройка кластера Galera
  5. Инициализация кластера Galera
  6. Проверить репликацию кластера
  7. Заключение

Балансировка нагрузки и кластеризация очень важны в производственной среде для достижения высокой доступности вашей системы баз данных. MariaDB Galera Cluster предоставляет решение для кластеризации с несколькими мастерами и поддерживает механизмы хранения XtraDB/InnoDB. Кластер с несколькими мастерами позволяет выполнять чтение и запись на любой узел кластера. Если вы изменяете данные на каком-либо узле, они реплицируются на все остальные узлы. Кластер Galera также поддерживает облачные и глобальные среды для создания распределенного кластера по странам и континентам.

В этом посте мы покажем, как настроить кластер MariaDB Galera из трех узлов на сервере Ubuntu 20.04.

Предпосылки

  • Три сервера с Ubuntu 20.04.
  • На сервере настроен пароль root.

Начиная

Перед запуском вам необходимо обновить системные пакеты до последней версии. Вы можете обновить их с помощью следующей команды:

apt-get update -y

Как только ваш сервер будет обновлен, вы можете перейти к следующему шагу.

Установить сервер MariaDB

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

apt-get install mariadb-server -y

После завершения установки запустите службу MariaDB и включите их запуск при перезагрузке системы:

systemctl start mariadb
systemctl status mariadb

Затем вам нужно будет защитить установку MariaDB и установить корневой пароль MariaDB на каждом узле. Вы можете сделать это с помощью следующей команды:

mysql_secure_installation

Вам будет предложено установить пароль root для MariaDB, как показано ниже:

Enter current password for root (enter for none): 
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Как только ваш сервер MariaDB будет защищен, вы можете перейти к следующему шагу.

Настройка кластера Galera

Далее вам нужно будет создать файл конфигурации Galera на каждом узле, чтобы каждый узел мог взаимодействовать друг с другом.

На первом узле создайте файл galera.cnf с помощью следующей команды:

nano /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/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node1-ip-address"
wsrep_node_name="node1"

Сохраните и закройте файл, когда закончите.

На втором узле создайте файл galera.cnf с помощью следующей команды:

nano /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/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node2-ip-address"
wsrep_node_name="node2"

Сохраните и закройте файл, когда закончите.

На третьем узле создайте файл galera.cnf с помощью следующей команды:

nano /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/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node3-ip-address"
wsrep_node_name="node3"

Сохраните и закройте файл, когда закончите.

Инициализировать кластер Galera

На данный момент все узлы настроены для связи друг с другом.

Далее вам нужно будет остановить службу MariaDB на всех узлах. Вы можете запустить следующую команду, чтобы остановить службу MariaDB:

systemctl stop mariadb

На первом узле инициализируйте кластер MariaDB Galera с помощью следующей команды:

galera_new_cluster

Теперь проверьте состояние кластера с помощью следующей команды:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Вы должны увидеть следующий вывод:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

На втором узле запустите службу MariaDB с помощью следующей команды:

systemctl start mariadb

Затем проверьте состояние кластера MariaDB Galera с помощью следующей команды:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Вы должны увидеть следующий вывод:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

На третьем узле запустите службу MariaDB с помощью следующей команды:

systemctl start mariadb

Затем проверьте состояние кластера MariaDB Galera с помощью следующей команды:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Вы должны увидеть следующий вывод:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

На этом этапе инициализируется кластер MariaDB Galera. Теперь вы можете перейти к следующему шагу.

Проверка репликации кластера

Далее вам нужно будет проверить, работает ли репликация или нет.

На первом узле подключитесь к базе данных MariaDB с помощью следующей команды:

mysql -u root -p

После подключения создайте базу данных с помощью следующей команды:

MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;

Затем выйдите из MariaDB с помощью следующей команды:

MariaDB [(none)]> exit;

Затем перейдите на второй узел и войдите в MariaDB с помощью следующей команды:

mysql -u root -p

Затем выполните следующую команду, чтобы отобразить все базы данных:

MariaDB [(none)]> show databases;

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

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Затем перейдите на третий узел и войдите в MariaDB с помощью следующей команды:

mysql -u root -p

Затем выполните следующую команду, чтобы отобразить все базы данных:

MariaDB [(none)]> show databases;

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

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Заключение

В приведенном выше руководстве мы узнали, как настроить кластер MariaDB Galera из трех узлов на сервере Ubuntu 20.04. Теперь вы можете легко добавлять дополнительные узлы в кластер MariaDB Galera. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.