Новости Tech-Net-Game

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

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

MariaDB Galera - это кластер с несколькими мастерами для MariaDB. Поскольку MariaDB 10.1, пакеты сервера MariaDB и MariaDB Galera Server были объединены, а пакеты Galera и их зависимости устанавливаются автоматически при установке MariaDB. В настоящее время MariaDB Galera Cluster поддерживает только механизм хранения InnoDB / XtraDB. В MariaDB 10.0 и 5.5 вам нужно будет загрузить его отдельно. MariaDB Galera добавляет избыточность для базы данных сайта. В MariaDB Galera Cluster несколько серверов баз данных взаимосвязаны друг с другом и сохраняют синхронизацию.

MariaDB Galera предоставляет множество функций, некоторые из которых перечислены ниже:

  1. Синхронная репликация.
  2. Автоматическое соединение узлов.
  3. Активно-активная топология с несколькими мастерами.
  4. Истинная параллельная репликация, на уровне строк.
  5. Масштабирование чтения и записи, меньшие задержки клиента.
  6. Неудачные узлы, автоматическое падение из кластера.

В этом уроке мы объясним, как настроить MariaDB Galera Cluster 10.1 с узлами 3, работающими на сервере Ubuntu 16.04. Мы также проверим репликацию базы данных между всеми узлами.

Требования

  • Три узла, на которых запущен сервер Ubuntu 16.04.
  • Node1 со статическим IP-адресом 192.168.0.102, Node2 со статическим IP-адресом 192.168.0.103 и Node3 со статическим IP-адресом 192.168.0.104 на вашем сервере.
  • Пользователь без полномочий root с настройками привилегий sudo на всех узлах.

С чего начать

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

sudo apt-get update -y
sudo apt-get upgrade -y

Затем перезапустите все узлы, чтобы применить эти изменения. Затем войдите в систему с пользователем sudo и перейдите к следующему шагу.

Установить MariaDB Galera

Серверы MariaDB Server и MariaDB Galera Server объединены в версии MariaDB 10.1. По умолчанию MariaDB 10.1 недоступен в репозиториях Ubuntu по умолчанию, поэтому вам нужно будет добавить репозиторий MariaDB на всех узлах.

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

sudo apt-key adv -recv-keys -keyserver hkp: //keyserver.ubuntu.com: 80 0xF1656F24C74CD1D8

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

sudo add-apt-repository 'deb [arch = amd64, i386, ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update -y

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

sudo apt-get install mariadb-server rsync -y

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

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

sudo mysql_secure_installation

В этом процессе вам будет предложено установить пароль root, удалить анонимных пользователей, удаленно запретить вход в root и удалить тестовую базу данных. Ответьте на все вопросы, как показано ниже:

Введите текущий пароль для root (введите для none): измените пароль root? [Y / n] n Удалить анонимных пользователей? [Y / n] Y Запретить вход в систему удаленно? [Y / n] Y Удалить тестовую базу данных и получить к ней доступ? [Y / n] Y Обновить таблицы привилегий сейчас? [Y / n] Y

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

Настройка кластера MariaDB на Node1

Сначала перейдите в Node1 и создайте файл конфигурации для Galera. По умолчанию MariaDB считывает конфигурацию из каталога /etc/mysql/conf.d/. Для этого запустите следующую команду:

sudo 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 wsrep_on = ON wsrep_provider = / usr / lib / galera / libgalera_smm.so # Конфигурация кластера Galera wsrep_cluster_name = "galera_cluster" wsrep_cluster_address = "gcomm: // 192.168.0.102,192.168.0.103,192.168.0.104" # Конфигурация синхронизации Galera wsrep_sst_method = rsync # Конфигурация Galera Node wsrep_node_address = "192.168.0.102" wsrep_node_name = "Node1"

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

Примечание: 192.168.0.102 - это IP-адрес узла Node1

Добавить Node2 в Galera Cluster

Затем перейдите в Node2 и создайте файл конфигурации для Galera:

sudo 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 wsrep_on = ON wsrep_provider = / usr / lib / galera / libgalera_smm.so # Конфигурация кластера Galera wsrep_cluster_name = "galera_cluster" wsrep_cluster_address = "gcomm: // 192.168.0.102,192.168.0.103,192.168.0.104" # Конфигурация синхронизации Galera wsrep_sst_method = rsync # Конфигурация Galera Node wsrep_node_address = "192.168.0.103" wsrep_node_name = "Node2"

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

Примечание: 192.168.0.103 - это IP-адрес узла Node2.

Добавить Node3 в Galera Cluster

Затем перейдите в Node3 и создайте файл конфигурации для Galera:

sudo 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 wsrep_on = ON wsrep_provider = / usr / lib / galera / libgalera_smm.so # Конфигурация кластера Galera wsrep_cluster_name = "galera_cluster" wsrep_cluster_address = "gcomm: // 192.168.0.102,192.168.0.103,192.168.0.104" # Конфигурация синхронизации Galera wsrep_sst_method = rsync # Конфигурация Galera Node wsrep_node_address = "192.168.0.104" wsrep_node_name = "Node3"

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

Примечание: 192.168.0.104 - это IP-адрес узла Node3.

Настройка брандмауэра

Galera Cluster использует четыре порта 3306 для подключения клиентов MySQL, 4444 для передачи моментального снимка состояния, 4567 для трафика репликации Galera Cluster и 4568 для инкрементного переноса состояния. Таким образом, вам нужно будет разрешить все эти порты использовать брандмауэр UFW. Вы можете сделать это, выполнив следующую команду на всех узлах:

Во-первых, включите брандмауэр UFW с помощью следующей команды:

sudo ufw включить

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

sudo ufw разрешает 3306 / tcp
sudo ufw разрешает 4444 / tcp
sudo ufw разрешает 4567 / tcp
sudo ufw разрешает 4568 / tcp
sudo ufw разрешает 4567 / udp

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

Статус sudo ufw

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

Запуск кластера MariaDB Galera

После успешной настройки всех узлов перейдите в Node1 и запустите Galera Cluster.

Прежде чем Galera начнет работу, вам необходимо убедиться, что служба MariaDB остановлена ​​на всех узлах.

Выполните следующую команду для всех узлов:

sudo systemctl stop mysql

Теперь запустите Galera Cluster на Node1 с помощью следующей команды:

sudo galera_new_cluster

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

mysql -u root -p -e "показать статус как" wsrep_cluster_size ""

Если все в порядке, вы должны увидеть следующий результат:

+ -------------------- + ------- + | Variable_name | Значение | + -------------------- + ------- + | wsrep_cluster_size | 1 | + -------------------- + ------- +

В Node2 запустите службу MariaDB:

sudo systemctl start mysql

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

Статус sudo systemctl mysql

Если все в порядке, вы должны увидеть следующий вывод:

?? mariadb.service - сервер базы данных MariaDB Загружен: загружен (/lib/systemd/system/mariadb.service; включен; предварительный набор поставщика: включен) Активен: активен (работает) с Sun 2017-09-17 10: 11: 20 EDT; 10min ago Процесс: 715 ExecStartPost = / bin / sh -c systemctl unset-environment _WSREP_START_POSITION (code = exited, status = 0 / SUCCESS) Процесс: 713 ExecStartPost = / etc / mysql / debian-start (code = exited, status = 0 / SUCCESS) Процесс: 545 ExecStartPre = / bin / sh -c [! -e / usr / bin / galera_recovery] && VAR = || VAR = `/ USR / бен / galera_recovery`; [$? -eq 0] && systemctl set Процесс: 535 ExecStartPre = / bin / sh -c systemctl unset-environment _WSREP_START_POSITION (code = exited, status = 0 / SUCCESS) Процесс: 514 ExecStartPre = / usr / bin / install -m 755 -o mysql -g root -d / var / run / mysqld (code = exited, status = 0 / SUCCESS) Основной PID: 661 (mysqld) Статус: «Выполнение ваших SQL-запросов сейчас ...» Задачи: 26 (ограничение: 4915) CGroup: /system.slice/mariadb.service 661 / usr / sbin / mysqld Sep 17 10: 11: 11 debian systemd [1]: запуск сервера базы данных MariaDB ... Sep 17 10: 11: 15 debian mysqld [661]: 2017-09-17 10: 11: 15 140287134630464 [Примечание] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1), начиная с процесса Sep 17 10: 11: 20 debian systemd [1 ]: Запущен сервер базы данных MariaDB.

Теперь ваш второй узел должен автоматически привязываться к кластеру. Вы можете проверить это с помощью следующей команды:

mysql -u root -p -e "показать статус как" wsrep_cluster_size ""

Если все работает хорошо, размер кластера должен быть равен двум:

+ -------------------- + ------- + | Variable_name | Значение | + -------------------- + ------- + | wsrep_cluster_size | 2 | + -------------------- + ------- +

В Node3 запустите службу MariaDB:

sudo systemctl start mysql
mysql -u root -p -e "показать статус как" wsrep_cluster_size ""

Если все работает хорошо, размер кластера должен быть установлен в три:

+ -------------------- + ------- + | Variable_name | Значение | + -------------------- + ------- + | wsrep_cluster_size | 3 | + -------------------- + ------- +

Теперь кластер работает и обменивается информацией.

Тестирование репликации базы данных

Теперь все узлы находятся в сети, пришло время протестировать репликацию базы данных в Galera Cluster. Начнем с создания базы данных на Node1 и проверьте, реплицируется ли она на всех узлах.

Сначала войдите в консоль MariaDb со следующей командой:

mysql -u root -p

Введите пароль root и создайте базу данных с именем test_db:

MariaDB [(none)]> создать базу данных test_db;
MariaDB [(none)]> показывать базы данных;

+ -------------------- + | База данных | + -------------------- + | test_db | + -------------------- +

Теперь перейдите в Node2 и Node3, затем проверьте, работает ли репликация или нет:

mysql -u root -p
MariaDB [(none)]> показывать базы данных;

+ -------------------- + | База данных | + -------------------- + | test_db | + -------------------- +

Поздравления! вы успешно установили и настроили MariaDB Galera Cluster на сервере Ubuntu 16.04.

Заключение

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

Источник

Похожие темы

Теги

Оставить комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.

Вернуться к началу кнопки