Гид по технологиям

Установка и настройка MySQL Cluster на Ubuntu 16.04

• 6 min read • Базы данных • Обновлено 21 Nov 2025
MySQL Cluster на Ubuntu 16.04 — руководство
MySQL Cluster на Ubuntu 16.04 — руководство

MySQL Cluster обеспечивает отказоустойчивость и масштабирование для MySQL с помощью движка NDB/NDBCLUSTER. В статье показана поэтапная установка на четырёх серверах Ubuntu 16.04: узел управления (ndb_mgmd), два узла данных (ndbd) и SQL-узел (mysqld). Включены конфигурационные файлы, команды запуска, проверка кластера и плейбук восстановления.

Важно: примеры IP-адресов — 192.168.1.11–192.168.1.14. Замените их на свои.

Кому это нужно

  • Администраторам БД, которые хотят обеспечить высокую доступность и масштабирование.
  • Инженерам DevOps, которым нужно локально развёртывать MySQL Cluster для тестов или продакшна.

Ключевые термины (одной строкой)

  • NDB (Network DataBase): распределённый хранилищный движок для MySQL Cluster.
  • ndb_mgmd: процесс управления кластером.
  • ndbd: процесс хранения данных (data node).
  • mysqld: сервер MySQL, выступающий SQL-слоем кластера.

Обзор архитектуры

MySQL Cluster — мульти-мастер ACID-архитектура без единой точки отказа. Данные автоматически шардуются и реплицируются между data-узлами. Для простого кластера требуется 3 типа узлов:

  • Management Node (ndb_mgmd) — управление и мониторинг.
  • Data Node (ndbd) — хранение и репликация данных.
  • SQL Node (mysqld) — интерфейс для приложений.

Предварительные требования

  • Четыре сервера с Ubuntu 16.04 (Xenial):
    1. 192.168.1.11 — management-node
    2. 192.168.1.12 — data-node1
    3. 192.168.1.13 — data-node2
    4. 192.168.1.14 — sql-node
  • root-привилегии на всех узлах.
  • Доступ по SSH между администратором и каждым узлом.

Шаг 1 — Установка и настройка узла управления

Выполните вход на узел управления по SSH:

ssh [email protected]
TYPE YOUR PASSWORD

A. Установка файлов управления

  1. Скачайте пакет MySQL Cluster (Linux-generic, 64-bit) с сайта 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
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
  1. Скопируйте бинарники управления в /usr/local/bin и сделайте их исполняемыми:
cd ~/mysql/
cp bin/ndb_mgm* /usr/local/bin/
chmod +x /usr/local/bin/ndb_mgm*

B. Конфигурация management node

Создайте каталог конфигурации и файл config.ini:

mkdir -p /var/lib/mysql-cluster/
vim /var/lib/mysql-cluster/config.ini

Вставьте в файл следующее (изменйте IP по вашей схеме при необходимости):

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[mysqld default]

[ndb_mgmd default]

[tcp default]

# Cluster Control / Management node
[ndb_mgmd]
hostname=192.168.1.11

# Data Node 1
[ndbd]
hostname=192.168.1.12
DataDir= /var/lib/mysql-cluster

# Data Node 2
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster

# SQL Node
[mysqld]
hostname=192.168.1.14

# If you to add new SQL Node
[mysqld]

Сохраните и выйдите.

Запустите процесс управления:

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

то mgmd запущен.

Проверка портов и статуса:

# Проверка порта 1186, используемого ndb_mgmd
netstat -plntu

# Проверка готовности management node
ndb_mgm
show

Узел управления MySQL Cluster запущен и принимает соединения

Важно: убедитесь, что firewall/Security Group разрешает порт 1186 между узлами.


Шаг 2 — Установка и настройка data-узла

Повторите этот шаг для двух data-узлов (192.168.1.12 и 192.168.1.13). В примере показан первый узел.

Подключитесь по SSH:

ssh [email protected]

A. Установка зависимостей и пользователя

Установите пакет libaio1 и создайте пользователя mysql:

apt-get install libaio1
groupadd mysql
useradd -g mysql mysql

Скачайте и распакуйте пакет, переименуйте папку в 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/
mv mysql /usr/local/
cd /usr/local/mysql/

Создайте системные базы данных:

./scripts/mysql_install_db --user=mysql

Скопируйте скрипт запуска и включите сервис:

cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql

Перенесите бинарники и создайте симлинк:

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. Конфигурация data-узла

Создайте /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.1.11

[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11

# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Создайте каталог данных ndb и назначьте владельца:

mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-cluster

C. Запуск ndb и mysql

Запустите демон хранения и сервис MySQL:

ndbd --initial
systemctl start mysql

Если ошибок нет, выполните безопасную настройку пароля:

mysql_secure_installation

Или войдите в shell:

mysql -u root -p

Примечание: повторите те же действия на втором data-узле (192.168.1.13).

Старт MySQL на data-узле прошел успешно


Шаг 3 — Установка и настройка SQL-узла

SQL-узел (192.168.1.14) почти идентичен data-узлу, но на нём не запускается ndbd.

Подключитесь по SSH и выполните:

ssh [email protected]

A. Установка и подготовка

apt-get install libaio1
groupadd mysql
useradd -g mysql 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/
mv mysql /usr/local/
cd /usr/local/mysql/
./scripts/mysql_install_db --user=mysql
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
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. Конфигурация SQL-узла

Создайте /etc/my.cnf как для data-узла, укажите ndbcluster и ndb-connectstring на IP management node:

# 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.1.11

[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11

# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

C. Запуск SQL-узла

systemctl start mysql
mysql_secure_installation

Теперь SQL-узел может подключаться к кластеру и выполнять SQL-запросы.


Шаг 4 — Тестирование

На SQL-узле создайте тестовую базу данных:

mysql -u root -p
TYPE PASSWORD

create database nanana;

Создание тестовой базы данных в кластере

Проверьте, что данные доступны и реплицируются на узлах данных. При выключении одного data-узла другой должен брать на себя нагрузку.

Показать базы данных:

mysql -u root -p
TYPE PASSWORD

show databases;

Проверка базы данных на узле данных

Проверка состояния кластера на узле управления:

ndb_mgm
show

Проверка статуса кластера


Шаг 5 — Безопасная остановка и восстановление

Безопасное завершение работы кластера выполняется с management node:

ndb_mgm
shutdown

Команда завершит процессы ndb на data-узлах. Для старта снова выполните:

На management:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/

На всех data-узлах:

ndbd
systemctl start mysql

На SQL-узлах:

systemctl start mysql

Полезные команды и чек-лист

Cheat sheet — часто используемые команды:

# Проверка статуса кластера на management node
ndb_mgm
show

# Проверка процессов на data node
ps aux | grep ndbd

# Проверка сетевых подключений к mgmd
netstat -plntu | grep 1186

# Старт/рестарт MySQL на SQL-узле
systemctl start mysql
systemctl restart mysql

# Инициализация data node (при первом старте)
ndbd --initial

Роль-ориентированные чек-листы при развёртывании:

  • Для администратора управления:

    • Подготовить config.ini с корректными IP.
    • Открыть порт 1186 между узлами.
    • Запустить ndb_mgmd и проверить show.
  • Для инженера data-узлов:

    • Установить libaio1, создать пользователя mysql.
    • Настроить /etc/my.cnf с ndbcluster и ndb-connectstring.
    • Запустить ndbd –initial и systemctl start mysql.
  • Для владельца SQL-узла:

    • Убедиться, что mysqld видит ndb storage engine.
    • Настроить резервное копирование и мониторинг.

Когда эта схема не подходит (контрпримеры)

  • Нужен только однопользовательский локальный сервер с низкими требованиями — кластер избыточен.
  • Если приложение использует сложные транзакции, затрагивающие большие объёмы данных, NDB может быть не лучшим выбором; рассмотрите InnoDB в конфигурации master-slave или Galera.

Альтернативы:

  • MySQL Group Replication — для синхронной репликации без NDB.
  • Galera Cluster (MariaDB / Percona XtraDB Cluster) — для многомастерной синхронной репликации.

Мини-методология развёртывания

  1. Подготовить сеть и сервера, согласовать IP и firewall.
  2. Настроить management node и убедиться в доступности порта 1186.
  3. Установить и запустить data-узлы, проверить регистрацию в mgm.
  4. Установить SQL-узлы и протестировать создание/чтение данных.
  5. Настроить мониторинг и регулярные резервные копии.

Runbook: восстановление после отказа data-узла

Симптом: один data-узел упал, остальные в режиме NoOfReplicas позволяют продолжать работу.

Действия:

  1. На management node выполните ndb_mgm и show, оцените статус.
  2. Попробуйте перезапустить ndbd на упавшем узле: ndbd. Если не удаётся, выполните системный рестарт сервера.
  3. После восстановления выполните ndb_mgm

start

(где nodeid — идентификатор узла).

  1. Проверьте консистентность данных через приложения и дополнительные проверки.

Критерии приёмки

  • Все узлы зарегистрированы и в статусе started.
  • SQL-узлы успешно читают и пишут данные.
  • При отключении одного data-узла кластер продолжает обслуживать запросы.

Факт-бокс: ключевые параметры

  • NoOfReplicas — количество копий фрагментов (рекомендуемо >=2 для отказоустойчивости).
  • Порт mgmd — 1186 (по умолчанию).
  • Минимальные компоненты — mgmd + >=2 data nodes + >=1 sql node.

Схема принятия решения (Mermaid)

flowchart TD
  A[Нужно высокая доступность?] -->|Да| B[Использовать кластер]
  A -->|Нет| C[Обычный MySQL 'InnoDB']
  B --> D{Есть опыт с NDB?}
  D -->|Да| E[Развернуть MySQL Cluster]
  D -->|Нет| F[Рассмотреть Galera или Group Replication]

Совместимость и миграция

  • Версия примера — MySQL Cluster 7.4 с компонентами ndb-7.4.x. Нюансы и команды могут отличаться в более новых релизах.
  • При миграции с InnoDB: планируйте тестовую миграцию и проверку целостности, NDB использует другую модель хранения и ограничения.

Краткое резюме

MySQL Cluster даёт отказоустойчивость и масштабирование для сценариев с высокой доступностью. Развёртывание требует строгой сетевой настройки, корректных config.ini и /etc/my.cnf, а также чёткого плана восстановления. Следуйте чек-листам по ролям, тестируйте отказ и проверяйте поведение приложений.

Примечание: ссылки на исходную документацию приведены в конце статьи.

Ссылки и материалы


Краткое руководство для социальных сетей

MySQL Cluster на Ubuntu 16.04: шаги установки management, data и SQL узлов, проверка статуса, команды восстановления и чек-листы для ролей. Быстрый запуск и тесты.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро