Как установить и настроить кластер MySQL на CentOS 7
На этой странице
- Предпосылки
- Шаг 1. Настройка узла управления
- А. Загрузите программное обеспечение кластера MySQL
- Б. Установка и удаление пакетов
- С. Установить MySQL-кластер
- Д. Настроить кластер MySQL
- Э. Запустите узел управления
- А. Войдите в систему как пользователь root и загрузите программное обеспечение MySQL Cluster.
- Б. Установка и удаление пакетов
- С. Установить MySQL-кластер
- Д. Настроить узел данных
- Э. Повторите шаги 2.A - 2.D на сервере db3.
- А. Войдите и загрузите MySQL Cluster
- Б. Установка и удаление пакетов
- С. Установить MySQL-кластер
- Д. Настройте узел SQL
- Э. Повторите шаги 3.A - 3.D на сервере db5.
MySQL Cluster предназначен для предоставления базы данных, совместимой с MySQL, с высокой доступностью и низкой задержкой. Технология MySQL Cluster реализована с помощью механизмов хранения NDB (Network DataBase) и NDBCLUSTER и обеспечивает кластеризацию без совместного использования и автоматическое разделение для систем баз данных MySQL. В архитектуре без общего доступа каждый из узлов имеет свою память и диск, использование общего хранилища, такого как NFS, SAN, не рекомендуется и не поддерживается.
Чтобы реализовать MySQL Cluster, мы должны установить три типа узлов. Каждый тип узла будет установлен на своем собственном сервере. Компоненты:
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.120 - Узлы данных
db2=192.168.1.121
db3=192.168.1.122 - Узлы SQL
db4=192.168.1.123
db5=192.168.1.124
Шаг 1. Настройка узла управления
Первым шагом является создание \Узел управления\ с CentOS 7 db1 и IP-адресом 192.168.1.120. Убедитесь, что вы вошли на сервер db1 как пользователь root.
А. Загрузите программное обеспечение MySQL Cluster.
Я скачаю его с сайта MySQL с помощью wget. Я использую «Red Hat Enterprise Linux 7/Oracle Linux 7 (x86, 64-разрядная версия), пакет RPM», который совместим с CentOS 7. Затем извлеките файл tar.
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.tarB. Установка и удаление пакетов
Перед установкой пакета rpm для MySQL Cluster необходимо установить perl-Data-Dumper, необходимый для сервера MySQL-Cluster. И вам нужно удалить mariadb-libs, прежде чем мы сможем установить MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC. Установите кластер MySQL
Установите пакет 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
Создайте новый каталог для файлов конфигурации. Я буду использовать каталог \/var/lib/mysql-cluster\.
mkdir -p /var/lib/mysql-cluster
Затем создайте новый файл конфигурации для управления кластером с именем \config.ini\ в каталоге mysql-cluster.
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.120
[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.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124Сохраните файл и выйдите.
E. Запустите узел управления
Затем запустите узел управления с помощью следующей команды:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Результат должен быть похож на этот:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directoryУзел управления запущен, теперь вы можете использовать команду \ndb_mgm\ для мониторинга узла:
ndb_mgm
showВы можете видеть, что узел управления был запущен с: mysql-6.6 и ndb-7.4.
Шаг 2. Настройка узлов данных кластера MySQL.
Мы будем использовать 2 сервера CentOS для узлов данных.
- db2=192.168.1.121
- db3=192.168.1.122
A. Войдите в систему как пользователь root и загрузите программное обеспечение MySQL Cluster.
Войдите на сервер db2 с помощью ssh:
ssh
Затем загрузите пакет 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.tarB. Установка и удаление пакетов
Установите perl-Data-Dumper и удалите mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC. Установите кластер MySQL
Теперь мы можем установить пакеты 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. Настройка узла данных
Создайте новый файл конфигурации в каталоге /etc с помощью редактора vi:
vi /etc/my.cnf
Вставьте конфигурацию ниже:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management NodeСохраните файл и выйдите.
Затем создайте новый каталог для данных базы данных, которые мы определили в файле конфигурации узла управления \config.ini\.
mkdir -p /var/lib/mysql-cluster
Теперь запустите узел данных/ndbd:
ndbd
Результаты:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2Узел данных db2 подключен к узлу управления с IP-адресом 192.168.1.120.
E. Повторите шаги 2.A - 2.D на сервере db3.
Поскольку у нас есть 2 узла данных, повторите шаги 2.A — 2.D на нашем втором узле данных.
Шаг 3 — Настройка узла SQL
Этот шаг содержит настройку узла SQL, который обеспечивает доступ приложения к базе данных. Мы используем 2 сервера CentOS для узлов SQL:
- db4=192.168.1.123
- db5=192.168.1.124
A. Войдите в систему и загрузите MySQL Cluster
Войдите на сервер db4 как пользователь root:
ssh
И загрузите пакет 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.tarB. Установка и удаление пакетов
Установите perl-Data-Dumper и удалите библиотеки mariadb, конфликтующие с MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC. Установите кластер MySQL
Установите сервер 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.rpmD. Настройте узел SQL
Создайте новый файл my.cnf в каталоге /etc:
vi /etc/my.cnf
И вставьте конфигурацию ниже:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management nodeСохраните файл и выйдите из редактора.
Запустите узел SQL, запустив сервер MySQL:
service mysql start
E. Повторите шаги 3.A - 3.D на сервере db5.
Повторите шаги 3.A - 3.D на втором сервере SQL (db5).
Шаг 4. Мониторинг кластера
Чтобы увидеть состояние кластера, мы должны войти в узел управления db1.
ssh
Мы можем использовать команду ndb_mgm, чтобы увидеть статус кластера:
ndb_mgm
ndb_mgm> showЕще одна полезная команда:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"Шаг 5 — Тестирование кластера
Чтобы выполнить тест на нашем новом кластере MySQL, мы должны войти в систему на серверах SQL Nodes db4 или db5.
Войдите на сервер db4:
ssh
Измените пароль MySQL по умолчанию, который хранится в файле \.mysql_secret\ в корневом каталоге:
cd ~
cat .mysql_secretэто мой образец:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
Теперь измените пароль с помощью команды ниже:
mysql_secure_installation
Введите свой старый пароль mysql, а затем введите новый и нажмите клавишу ВВОД, чтобы подтвердить все.
Если все сделано, вы можете войти в оболочку MySQL со своим паролем:
mysql -u root -p
После входа в систему создайте нового пользователя root с хостом \@\, чтобы мы могли получить доступ к MySQL извне.
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Замените aqwe123 собственным безопасным паролем! Теперь вы можете увидеть нового пользователя 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 успешно настроен на CentOS 7 с 5 серверными узлами.
Заключение
MySQL Cluster — это технология, обеспечивающая высокую доступность и избыточность для баз данных MySQL. Он использует NDB или NDBCLUSTER в качестве механизма хранения и обеспечивает кластеризацию без общего доступа и автоматическое разделение для баз данных MySQL. Для реализации кластера нам нужны 3 компонента: узел управления (MGM), узлы данных (NDB) и узлы SQL (API). Каждый узел должен иметь свою память и диск. Не рекомендуется использовать сетевое хранилище, такое как NFS. Чтобы установить MySQL Cluster в минимальной системе CentOS 7, нам нужно удалить пакет mariadb-libs, mariadb-libs конфликтует с MySQL-Cluster-server, и вы должны установить пакет perl-Data-Dumper, он необходим MySQL-Cluster. -сервер. Кластер MySQL легко установить и настроить на нескольких серверах CentOS.