MySQL Cluster представляет собой технологию для обеспечения высокой доступности для баз данных MySQL. Он использует NDB (Network DataBase) или NDB кластер в качестве двигателя для хранения базы данных. MySQL Cluster разработан как мульти-мастер ACID архитектуры без единой точки отказа, он использует автоматический шардинг (секционирование) для масштабирования чтения и записи процессов.
Для реализации кластера MySQL, нам нужно 3 различных типов узлов:
На этом уроке мы покажем вам, как установить “MySQL Cluster” на Ubuntu 16.04 LTS (Xenial Xerus).
Предпосылки
На этом шаге мы установим узел управления для нашего кластера с IP адресом 192.168.2.21. Мы устанавливаем программное обеспечение кластера MySQL и настроем его в качестве узла управления для кластера.
Войти на узел управления с SSH:
ssh root@192.168.2.21 TYPE YOUR PASSWORD
A. Установка управление узла кластера MySQL
Откроем сайт кластера MySQL здесь и выберем опцию ” Linux-generic” и загрузим 64-битный пакет, нажав кнопку ” Download“.
Загрузим пакет кластера MySQL с помощью wget и извлечем его.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
Переименуем директорию для MySQL:
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Перейдем в каталог mysql и скопируем 2 двоичных файла для команды управления кластером ” ndb_mgmd и ndb_mgm ‘к директории ‘/usr/local/bin/’, а затем сделаем их исполняемым с помощью команды chmod.
cd ~/mysql/ cp bin/ndb_mgm* /usr/local/bin/ chmod +x /usr/local/bin/ndb_mgm*
B. Настройка MySQL Cluster Node Management
Настройте узел управления путем создания нового каталога ‘MySQL-cluster” для конфигурационных файлов в каталоге ‘/var/lib/’.
Создание каталог ‘MySQL-cluster” и создайте новую конфигурацию “config.ini” в каталоге:
mkdir -p /var/lib/mysql-cluster/ vim /var/lib/mysql-cluster/config.ini
Вставьте ниже конфигурацию:
[ndbd default] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [mysqld default] [ndb_mgmd default] [tcp default] # Управления кластера / узле управления [ndb_mgmd] hostname=192.168.2.21 # Узел данных 1 [ndbd] hostname=192.168.2.22 DataDir= /var/lib/mysql-cluster # Узел данных 1 [ndbd] HostName=192.168.2.23 DataDir=/var/lib/mysql-cluster # Узел SQL [mysqld] hostname=192.168.2.24 # Если вы хотите добавить новый узел SQL [mysqld]
Изменение IP-адреса ndb_mgmd для управления, NDBD для узла данных и mysqld для узла SQL, чтобы соответствовать вашим настройкам.
Сохраните файл и выйдите.
Затем запустите процесс узла управления с командой ниже:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Запускаться будет во время загрузки, добавив команду ‘/etc/rc.local ‘:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local
Вы увидите результат:
MySQL Cluster Management Server MySQL-5.6.31 NDB-7.4.12
Проверьте узел управления с помощью следующей команды:
# Checking port 1186 used by ndb_mgmd netstat -plntu # Проверка узла управления готов ndb_mgm show
На этом шаге мы установим программное обеспечение кластера MySQL и настроем его в качестве узла данных. Мы будем использовать 2 сервера Ubuntu 16.04 в качестве узлов данных: узел с IP-адресом 192.168.2.22 и узел данных с IP-адреса 192.168.2.23.
Войдите на первый сервер данных с помощью SSH:
ssh root@192.168.2.22
A. Установите MySQL Cluster на узле
Перед тем , как установить программное обеспечение кластера MySQL, мы должны установить новый пакет ‘ libaio1‘ и создадим нового пользователя и группу MySQL. Выполните команду ниже в качестве root:
apt-get install libaio1 groupadd mysql useradd -g mysql mysql
Теперь загрузите пакет кластера MySQL ‘Linux-Generic ‘, разархивируйте и переименуйте каталог в MySQL.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Переместите каталог ‘MySQL’ в ‘/usr/local/’ и перейдите в этот каталог.
mv mysql /usr/local/ cd /usr/local/mysql/
Запустите скрипт для создания системных баз данных:
./scripts/mysql_install_db --user=mysql
Если нет ошибок, скопируйте файл службы MySQL в каталог ‘/etc/init.d‘ и добавьте MySQL сценарий запуска для запуска во время загрузки.
cp support-files/mysql.server /etc/init.d/mysql systemctl enable mysql
Затем переместите все MySQL двоичные команды в директорию ‘/usr/local/bin‘ и создайте новую символическую ссылку.
mv bin/* /usr/local/bin/ rm -rf bin/ ln -s /usr/local/bin /usr/local/mysql/
Изменение владельца каталога mysql в каталоге на пользователя root и группу MySQL, а также изменить каталог данных в MySQL в качестве владельца.
chown -R root:mysql . chown -R mysql data
B. Настройка MySQL Cluster Data Node
Создание новый конфигурационный файл MySQL ‘ my.cnf ‘ с помощью vim:
vim /etc/my.cnf
Вставьте конфигурацию в файл:
# MySQL Config [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock user=mysql # Run ndb storage engine ndbcluster # IP address management node ndb-connectstring=192.168.2.21 [mysql_cluster] # IP address management node ndb-connectstring=192.168.2.21 # MySQL Pid and Log [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
Сохраните и выйдите.
Создайте новый каталог для узла данных и измените владельца на пользователя MySQL.
mkdir -p /var/lib/mysql-cluster/ chown -R mysql /var/lib/mysql-cluster
C. Запуск MySQL на узле Data
Запустите службу MySQL с командой ниже:
ndbd --initial systemctl start mysql
Убедитесь, что нет никакой ошибки, и результаты приведены ниже (data-node2):
MySQL на узле данных запускается. Теперь вы можете установить пароль MySQL с помощью следующей команды:
mysql_secure_installation
или получить доступ к оболочке MySQL.
mysql -u root -p
Примечание :
Повторить этот шаг на “data-node2” IP – адрес сервера 192.168.2.23.
На этом этапе мы будем устанавливать программное обеспечение кластера MySQL и настроем его в качестве SQL Node. Этот узел используется для доступа к базам данных на узлах данных. Процесс установки такой же, как узел данных, но мы не должны запускать службу NDBD в SQL Node.
Войдите в SQL Node с SSH:
ssh root@192.168.2.24
A. Установите MySQL Cluster на узле SQL
Установите пакет libaio1 и создайте нового пользователя и группу MySQL:
apt-get install libaio1 groupadd mysql useradd -g mysql mysql
Загрузите пакет MySQL Cluster с сайта, разархивируйте и переименуйте его:
http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Переместите каталог MySQL:
mv mysql /usr/local/ cd /usr/local/mysql/
Запустите скрипт mysql_install_db:
./scripts/mysql_install_db --user=mysql
Скопируйте файл службы и добавьте его в автозагрузку:
cp support-files/mysql.server /etc/init.d/mysql systemctl enable mysql
Переместите все бинарные файлы MySQL на каталог ‘/usr/local/bin‘:
mv bin/* /usr/local/bin/ rm -rf bin/ ln -s /usr/local/bin /usr/local/mysql/
Измените владельца всех файлов и директории:
chown -R root:mysql . chown -R mysql data
B. Настройка MySQL Cluster Node SQL
Создайте новый конфигурационный файл my.cnf с помощью vim:
vim /etc/my.cnf
Вставьте конфигурацию в файл:
# Конфигурация MySQL [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock user=mysql # Запустить механизм хранения ndb ndbcluster # IP address узла управления ndb-connectstring=192.168.2.21 [mysql_cluster] # IP address узла управления ndb-connectstring=192.168.2.21 # MySQL Pid and Log [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
Сохраните и выйдите.
C. Запустите SQL Node
Запустите узел SQL, запустив службу MySQL с помощью команды systemctl:
systemctl start mysql
SQL Узел запускается, теперь вы можете настроить пароль для MySQL.
mysql_secure_installation
Тест, чтобы создать новую базу данных для узла SQL.
mysql -u root -p TYPE PASSWORD create database nanana;
Убедитесь, что база данных реплицируется на серверах данных узлов.
И когда узел выключен, другой узел будет обрабатывать соединение с узлом SQL.
mysql -u root -p TYPE PASSWORD show databases;
Проверка состояния кластера из узла управления:
ndb_mgm show
Выполнение безопасную перезагрузку и выключения кластера.
Перейдите к узлу управления кластером и введите приведенную ниже команду для выключения кластера:
ndb_mgm shutdown
Команда завершит работу всех услуг NDB по узлам данных.
Если вы хотите запустить кластер снова, вы можете запустить команду ниже на узле управления:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Выполните команду ниже на всех узлах данных:
ndbd systemctl start mysql
Затем запустите MySQL службы на узле (ы) SQL:
systemctl start mysql
Теперь ваш MySQL Cluster работает снова.