Как настроить кластер MariaDB Galera в Ubuntu 20.04
Это руководство существует для этих версий ОС
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 16.04 (Xenial Xerus)
На этой странице
- Предпосылки
- Начало работы
- Установить сервер MariaDB
- Настройка кластера Galera
- Инициализация кластера Galera
- Проверить репликацию кластера
- Заключение
Балансировка нагрузки и кластеризация очень важны в производственной среде для достижения высокой доступности вашей системы баз данных. 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. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.