Заглавие
- Предпосылки
- Шаг 1 – Настройка узла управления
- Шаг 2 – Настройка в MySQL Cluster Data Nodes
- Шаг 3 – Настройка SQL Node
- Шаг 4 – Монитор кластера
- Шаг 5 – Тестирование кластера
- Вывод
MySQL Cluster предназначен для обеспечения совместимой базы данных MySQL с высокой доступностью и низкой задержкой. Технология кластера MySQL реализуется через механизмы хранения NDB (Network DataBase) и NDB кластер и обеспечивает неразделяемую кластеризацию и авто-шардинга для систем баз данных MySQL. В неразделяемой архитектуре, каждый из узлов имеет свою собственную память и диск, использование общего хранилища, такие как NFS, SANs не рекомендуется и поддерживается.
Для реализации кластера MySQL, мы должны установить три типа узлов. Каждый тип узлов будет установлен на его собственном сервере. Компоненты:
1. Узел управления – NDB_MGMD/MGM
Сервер управления кластера используется для управления другого узла кластера. Мы можем создавать и настраивать новые узлы, перезагрузки, удаление или резервирование узлов в кластере из узла управления.
2. Узлы данных – NDBD / NDB
Это слой, где происходит процесс синхронизации и репликации данных между узлами.
3. SQL Узлы – MYSQLD / API
Серверы интерфейса, которые используются приложениями для подключения к кластеру базы данных.
На этом уроке, я проведу вас через установку и конфигурацию кластера MySQL с CentOS 7. Мы настроим узел управления, два узла передачи данных и два узла SQL.
Предпосылки
- ОС CentOS 7 – 64-битная.
- 5 CentOS серверов или виртуальных машин. Я буду использовать имена хостов и IP-адреса, как показано ниже:
- Узел управления
DB1 = 192.168.1.220 - Данные узлы
db2 = 192.168.1.221
db3 = 192.168.1.222 - SQL узлы
db4 = 192.168.1.223
DB5 = 192.168.1.224
Шаг 1 – Настройка узла управления
Первый шаг заключается в создании “Узел управления” с CentOS 7 DB1 и IP 192.168.1.220 . Убедитесь , что вы вошли в сервер db1 в качестве пользователя root.
A. Загрузите программное обеспечение кластера MySQL
Я буду загружать его с сайта MySQL с помощью wget. Я использую здесь “Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-разрядная версия), RPM Bundle”, который совместим с CentOS 7. Затем извлекаем архивный файл.
cd ~ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Установка и удаление пакетов
Перед тем как установить пакет MySQL Cluster, вам нужно установить Perl-Data-Dumper, который требуется серверу MySQL-кластера. И вам нужно удалить MariaDB-LIBS прежде чем мы сможем установить MySQL Cluster.
yum -y install perl-Data-Dumper yum -y remove mariadb-libs
C. Установить MySQL Cluster
Установить пакет MySQL Cluster с командой rpm :
cd ~ rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Убедитесь, что нет никакой ошибки.
D. Настройка MySQL Cluster
Создайте новый каталог для файлов конфигурации. Я буду использовать каталог “/var/lib/mysql-cluster“.
mkdir -p /var/lib/mysql-cluster
Затем создайте новый файл конфигурации для управления кластерами под названием “config.ini ” в каталоге MySQL-кластера.
cd /var/lib/mysql-cluster vi config.ini
Вставьте следующую конфигурацию:
[ndb_mgmd default] # Directory for MGM node log files DataDir=/var/lib/mysql-cluster [ndb_mgmd] #Management Node db1 HostName=192.168.1.220 [ndbd default] NoOfReplicas=2 # Number of replicas DataMemory=256M # Memory allocate for data storage IndexMemory=128M # Memory allocate for index storage #Directory for Data Node DataDir=/var/lib/mysql-cluster [ndbd] #Data Node db2 HostName=192.168.1.221 [ndbd] #Data Node db3 HostName=192.168.1.222 [mysqld] #SQL Node db4 HostName=192.168.1.223 [mysqld] #SQL Node db5 HostName=192.168.1.224
Сохраните файл и выйдите.
E. Запустите узел управления
Далее запустите узел управления с командой ниже:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Результат должен быть похож на этот:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-10-08 18:26:05 [MgmtSrvr] INFO — The default config directory ‘/usr/mysql-cluster’ does not exist. Trying to create it…
2016-10-08 18:26:05 [MgmtSrvr] INFO — Successfully created config directory
Узел управления запускается, теперь вы можете использовать команду “ndb_mgm” для мониторинга узла:
ndb_mgm show
Вы можете увидеть, что узел управления был запущен с: MySQL-6.6 и ndb-7.4.
Шаг 2 – Настройка в MySQL Cluster Data Nodes
Мы будем использовать 2 сервера CentOS для узлов данных.
- db2 = 192.168.1.221
- db3 = 192.168.1.222
A. Войдите как пользователь root и загрузите программное обеспечение кластера MySQL
Вход на сервер DB2 с помощью SSH:
ssh root@192.168.1.221
Затем загрузите пакет MySQL Cluster и извлеките его:
cd ~ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Установка и удаление пакетов
Установка Perl-Data-Dumper и удаление MariaDB-LIBS:
yum -y install perl-Data-Dumper yum -y remove mariadb-libs
C. Установите MySQL Cluster
Теперь мы можем установить пакеты кластера MySQL для узлов данных с помощью этих команд rpm:
cd ~ rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Убедитесь, что нет никакой ошибки.
D. Настройка узла данных
Создайте новый файл конфигурации в директории /etc с помощью редактора vi:
vi /etc/my.cnf
Вставьте следующую конфигурацию:
[mysqld] ndbcluster ndb-connectstring=192.168.1.220 # IP address of Management Node [mysql_cluster] ndb-connectstring=192.168.1.220 # IP address of Management Node
Сохраните файл и выйдите.
Затем создайте новый каталог для данных базы данных, которое мы определили в файле конфигурации узла управления “config.ini”.
mkdir -p /var/lib/mysql-cluster
Теперь запустите узел данных / NDBD:
ndbd
Результаты:
2016-10-08 19:35:56 [ndbd] INFO — Angel connected to ‘192.168.1.220:1186’
2016-10-08 19:35:56 [ndbd] INFO — Angel allocated nodeid: 2
Узел данных DB2 подключен к узлу управления интеллектуальной собственностью 192.168.1.220.
E. Повторить шаг 2.А – 2.D на db3 сервере.
Так как мы имеем 2 узла данных, пожалуйста, повторить шаги 2.А – 2.d на нашем втором узле данных.
Шаг 3 – Настройка SQL Node
Это шаг содержит настройки для SQL Node, который предоставляет приложению доступ к базе данных. Мы используем 2 сервера CentOS для SQL узлов:
- DB4 = 192.168.1.223
- DB5 = 192.168.1.224
A. Войдите в систему и загрузите MySQL Cluster
Войдите на сервер db4 в качестве пользователя root:
ssh root@192.168.1.223
И загрузите пакет MySQL Cluster:
cd ~ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Установка и удаление пакетов
Установите perl-Data-Dumper и удалите mariadb-libs, чтобы не было конфликта с MySQL Cluster.
yum -y install perl-Data-Dumper yum -y remove mariadb-libs
C. Установите MySQL Cluster
Установите сервер MySQL Cluster, клиента и пакет с помощью команды rpm ниже:
cd ~ rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
D. Настройка SQL Node
Создайте новый файл my.cnf в каталоге /etc:
vi /etc/my.cnf
Скопируйте конфигурацию ниже:
[mysqld] ndbcluster ndb-connectstring=192.168.1.220 # IP address for server management node default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL [mysql_cluster] ndb-connectstring=192.168.1.220 # IP address for server management node
Сохраните файл и выйдите из редактора.
Запустите SQL Node, запустив сервер MySQL:
service mysql start
E. Повторить шаг 3.A – 3.D на DB5 сервере.
Пожалуйста, повторите шаги 3.А – 3.D на втором сервере SQL (DB5).
Шаг 4 – Мониторинг кластера
Чтобы увидеть состояние кластера, мы должны войти в DB1 узел управления.
ssh root@192.168.1.120
Мы можем использовать команду ndb_mgm, чтобы увидеть состояние кластера:
ndb_mgm ndb_mgm> show
Еще одна полезная команда:
ndb_mgm -e "all status" ndb_mgm -e "all report memory"
Шаг 5 – Тестирование кластера
Для того, чтобы выполнить тест на нашем новом MySQL Cluster, мы должны войти в db4 или db5 узлов серверов SQL.
Вход на сервер db4:
ssh root@192.168.1.223
Измените в MySQL пароль по умолчанию, сохраненный в файле “.mysql_secret” в корневом каталоге:
cd ~ cat .mysql_secret
это мой пример:
# The random password set for the root user at Tue Mar 21 19:44:07 2016 (local time): qna4AwbJOuOnw13T
Теперь измените пароль с помощью команды ниже:
mysql_secure_installation
Введите старый пароль MySQL, а затем введите новый, нажмите клавишу ВВОД, чтобы подтвердить.
Если все будет сделано, вы можете войти в оболочку MySQL с паролем:
mysql -u root -p
После того, как вы вошли в систему, создайте нового пользователя root для хоста ” @ “, так что мы сможем получить доступ к MySQL извне.
CREATE USER 'root'@'%' IDENTIFIED BY 'andreyex123';
Заменить andreyex123 на ваш собственный надежный пароль! Теперь вы можете увидеть нового пользователя root “@” в списке пользователей MySQL:
select user, host, password from mysql.user;
И предоставьте новому пользователю root привилегии: читать и написать доступ с удаленного узла:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
Теперь попробуйте создать новую базу данных с сервера db4 и вы увидите базу данных на DB5 тоже.
Это просто результат выборки для тестирования репликации данных кластера.
Вывод
MySQL Cluster представляет собой технологию, которая обеспечивает высокую доступность и избыточность для баз данных MySQL. Он использует NDB или NDBCLUSTER в качестве механизма хранения и обеспечивает неразделяемую кластеризацию и авто-шардинг для баз данных MySQL. Для реализации кластера, нам нужно 3 компонента: Узел управления (MGM), Узлы данных (NDB) и SQL-узлы (API). Каждый из узлов должен иметь свою собственную память и диск. Не рекомендуется использовать сетевое хранилище, такие как NFS. Чтобы установить MySQL Cluster на минимальной системе CentOS 7, мы должны удалить пакет MariaDB-LIBS, MariaDB-LIBS конфликтует с MySQL кластер-сервером, и вы должны установить пакет Perl-Data-Dumper, это необходимо для MySQL-кластера-сервера. Кластер MySQL легко установить и настроить на нескольких серверах CentOS.