Установка и настройка MySQL Cluster на Debian 10 — трёхузловой пример
Что вы получите из этой инструкции
- Полный пошаговый сценарий установки менеджера, дата‑нодов и SQL‑узла на Debian 10.
- Готовые примеры config.ini, /etc/my.cnf и systemd‑юнитов.
- Проверки работоспособности и контрольные тесты.

Важно: в тексте используются реальные IP-адреса примера — не меняйте их на этапах тестирования, если вы следуете инструкции для той же сети. Если разворачиваете в другой инфраструктуре — замените IP на ваши адреса.
Введение
MySQL — свободная реляционная СУБД. MySQL Cluster (NDB) — вариант архитектуры, ориентированный на горизонтальную масштабируемость и высокую доступность за счёт распределённого хранения данных. В типичном простом развёртывании используется: менеджер кластера (ndb_mgmd), парные дата‑ноды (ndbd) и SQL‑узлы (mysqld), которые обслуживают приложения.
Определения в одну строку:
- Менеджер кластера (Management Server) — хранит конфигурацию и координирует ноды.
- Дата‑нода (Data Node, ndbd) — хранит данные NDB в памяти/на диске; для отказоустойчивости используются реплики.
- SQL‑узел (mysqld) — предоставляет интерфейс SQL к данным в NDB.
Первые шаги и требования
- Три сервера с Debian 10: один для менеджера, два для дата‑нодов.
- На каждом сервере доступ root (пароль настроен).
- В примере используются IP: 104.245.33.61 (менеджер), 104.245.32.195 (data1), 69.87.218.169 (data2).
Прежде чем начать, обновите пакеты на всех серверах:
apt-get update -yПосле обновления переходите к установке.
Установка и настройка MySQL Cluster Manager (ndb_mgmd)
- На менеджер‑ноде скачайте пакет менеджера (в репозитории Debian он обычно отсутствует):
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb- Установите .deb:
dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb- Создайте каталог для конфигурации и откройте файл config.ini:
mkdir /var/lib/mysql-cluster
nano /var/lib/mysql-cluster/config.iniПример содержания config.ini (используйте приведённые IP или замените на свои):
[ndbd default]
NoOfReplicas=2 # Number of replicas
[ndb_mgmd]
# Management process options:
hostname=104.245.33.61 #IP of the MySQL Cluster Manager
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=104.245.32.195 #IP of the first data node
NodeId=2 # Node ID for this data node
datadir=/usr/local/mysql/data # Remote directory for the data files
[ndbd]
hostname=69.87.218.169 #IP of the second data node
NodeId=3 # Node ID for this data node
datadir=/usr/local/mysql/data # Remote directory for the data files
[mysqld]
# SQL node options:
hostname=104.245.33.61 #IP of the MySQL Cluster ManagerСохраните файл и запустите менеджер для проверки:
ndb_mgmd -f /var/lib/mysql-cluster/config.iniОжидаемый начальный вывод (пример):
MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
2021-05-10 08:23:05 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2021-05-10 08:23:05 [MgmtSrvr] INFO -- Sucessfully created config directoryЗавершите тестовый процесс и создайте systemd‑юнит для менеджера, чтобы сервис управлялся системно:
pkill -f ndb_mgmd
nano /etc/systemd/system/ndb_mgmd.serviceДобавьте:
[Unit]
Description=MySQL NDB Cluster Management Server
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.targetЗагрузите демона systemd и включите сервис:
systemctl daemon-reload
systemctl start ndb_mgmd
systemctl enable ndb_mgmd
systemctl status ndb_mgmdОжидаемый вывод статуса показывает, что ndb_mgmd активен и запущен.
Важно: если менеджер не стартует — проверьте права на /var/lib/mysql-cluster и наличие порта 1186, который используется менеджером.
Установка и настройка дата‑нодов (ndbd)
На каждом дата‑ноде выполните:
- Установите зависимости:
apt-get install libclass-methodmaker-perl -y- Скачайте пакет дата‑нода и установите его:
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb- Создайте файл /etc/my.cnf с параметром подключения к менеджеру:
nano /etc/my.cnfДобавьте:
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61 #IP of the MySQL Cluster Manager- Создайте папку для данных и запустите ndbd для первоначальной регистрации:
mkdir -p /usr/local/mysql/data
ndbdПример ожидаемого вывода при успешном подключении:
2021-05-10 08:27:13 [ndbd] INFO -- Angel connected to '104.245.33.61:1186'
2021-05-10 08:27:13 [ndbd] INFO -- Angel allocated nodeid: 2Остановите тестовый процесс и создайте systemd‑юнит:
pkill -f ndbd
nano /etc/systemd/system/ndbd.serviceВставьте:
[Unit]
Description=MySQL NDB Data Node Daemon
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndbd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.targetЗагрузите демона и включите сервис:
systemctl daemon-reload
systemctl start ndbd
systemctl enable ndbd
systemctl status ndbdВ статусе вы увидите информацию о подключении к менеджеру и назначении nodeid.
Примечание: папка datadir должна быть доступна и иметь достаточный объём под хранение данных NDB.
Установка и настройка MySQL Server (SQL‑узел)
На менеджере (или на выделенном SQL‑узле) выполните следующие шаги:
- Скачайте и распакуйте bundle с пакетами MySQL Cluster:
wget https://cdn.mysql.com/Downloads/MySQL-Cluster-8.0/mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar
tar -xvf mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar -C /opt- Установите зависимости и общие пакеты:
cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y
dpkg -i mysql-common*- Установите клиентские и серверные пакеты (приведены примеры команд):
dpkg -i mysql-cluster-community-client_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-core_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-plugins_8.0.24-1debian10_amd64.deb
dpkg -i mysql-client_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-server*Если возникнут ошибки зависимостей, выполните:
apt-get install -f- Установите mysql-server и во время установки задайте пароль root, если потребуется:
dpkg -i mysql-server_8.0.24-1debian10_amd64.deb- Обновите /etc/mysql/my.cnf, чтобы включить использование NDB и указать менеджер:
nano /etc/mysql/my.cnfДобавьте или измените секции:
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61 #IP of the MySQL Cluster Manager- Перезапустите MySQL и включите автозапуск:
systemctl restart mysql
systemctl enable mysql
systemctl status mysqlОжидаемый результат: mysqld запущен и подключён к NDB.
Проверка работоспособности кластера
- Подключитесь к MySQL как root:
mysql -u root -p- В MySQL выполните:
SHOW ENGINE NDB STATUS \GОжидаемый набор строк демонстрирует подключения и количество дата‑нодов.
- Подключитесь к консоли управления менеджера:
ndb_mgmВнутри консоли выполните:
SHOWОжидаемый вывод показывает конфигурацию кластера и список нодов. Также можно проверять статус по‑узлово:
2 STATUS
3 STATUSЕсли оба нода в состоянии started — кластер функционирует.
Частые проблемы и их устранение
- Менеджер не видит дата‑ноды: проверьте доступность порта 1186 (firewall), правильность ndb-connectstring в /etc/my.cnf и совпадение IP в config.ini.
- Ошибки зависимостей при установке .deb: выполните apt-get install -f и повторите dpkg -i.
- Недостаточно прав на директорию datadir: проверьте владельца и права (обычно root или mysql).
- Различия версий пакетов: убедитесь, что версии менеджера, дата‑нодов и клиента совместимы (рекомендуется использовать один бандл/версию).
Когда MySQL Cluster не подходит
- Для транзакционных систем с большими сложными JOIN и OLAP‑нагрузками InnoDB в сочетании с репликацией может быть проще.
- Если нужно хранить огромные объёмы данных на диске с минимной памяти — NDB спроектирован для in‑memory/памяти с дампом на диск; для чисто дисковых рабочих нагрузок лучше InnoDB/Partitioning.
Альтернативы и подходящие варианты
- Galera Cluster (для InnoDB) — синхронная репликация для совместимости с обычными MySQL/MariaDB.
- Встроенный репликационный набор MySQL (master‑replica) — проще для односторонней масштабируемости чтения.
- Распределённые СУБД (Cassandra, CockroachDB) — для требований к горизонтальной записи и отказоустойчивости на уровне данных.
Ментальные модели и эвристики
- «Менеджер = конфигурация, дата‑ноды = тело, SQL‑узел = интерфейс».
- Минимизируйте число точек отказа: держите менеджеру резервную копию конфигурации и обеспечьте сетевую изоляцию каналов управления.
- Всегда тестируйте восстановление нода: остановил/запустил ndbd — убедился, что данные синхронизировались.
Контрольный список перед вводом в эксплуатацию
- Менеджер: systemd‑юнит создан и включён.
- Дата‑ноды: /etc/my.cnf с ndb-connectstring настроен.
- SQL‑узлы: my.cnf содержит ndbcluster и ndb-connectstring.
- Сеть: порты 1186 (mgmd), 2202 (NDB), 3306 (mysqld) открыты и доступны между узлами.
- Резервное копирование конфигурации /var/lib/mysql-cluster/config.ini.
- Проведены тесты: SHOW ENGINE NDB STATUS, ndb_mgm SHOW, проверены node STATUS.
Критерии приёмки
- Все ноды в состоянии started в ndb_mgm SHOW.
- В MySQL SHOW ENGINE NDB STATUS показывает number_of_ready_data_nodes равным числу дата‑нодов.
- Примитивные запросы INSERT/SELECT отрабатывают корректно и данные читаются с разных SQL‑узлов (если их несколько).
Набор тестов (Test cases)
- Тест записи: INSERT в NDB‑таблицу, SELECT на другом SQL‑узле — ожидать видимость данных.
- Тест отказа: выключить один дата‑нод, убедиться, что кластер продолжает работу (NoOfReplicas>1).
- Тест восстановления: включить нод, проверить, что он синхронизируется и возвращается в started.
- Тест нагрузочного чтения: нагрузочный SELECT с нескольких клиентских потоков; мониторить задержки.
Роли и обязанности (чек‑лист для команды)
- Системный администратор: установка пакетов, настройка systemd, мониторинг процессов.
- DBA: создание NDB‑таблиц, оптимизация схемы, мониторинг производительности.
- Сетевой инженер: открытие/контроль портов, настройка VLAN/MTU и прав доступа.
Мини‑методология развёртывания
- Подготовьте три тестовых ВМ со статическими IP и доступом root.
- На менеджере установите ndb_mgmd и подготовьте config.ini.
- На дата‑нодах установите ndbd, настройте /etc/my.cnf и проверьте подключение.
- Установите mysqld и протестируйте SQL‑операции.
- Проведите отказоустойчивые тесты и нагрузочное тестирование.
Пример команды для быстрой диагностики
- Проверить состояние кластера из shell менеджера:
ndb_mgm -e SHOW- Проверить статус MySQL:
systemctl status mysqlКороткая шпаргалка (cheat sheet)
- Порт менеджера: 1186
- Команда запуска менеджера вручную: ndb_mgmd -f /var/lib/mysql-cluster/config.ini
- Команда запуска дата‑нода вручную: ndbd
- Консоль управления: ndb_mgm
Заключение
Поздравляем — вы настроили трёхузловой MySQL Cluster на Debian 10: менеджер, два дата‑нода и SQL‑узел. Перед переводом в продакшен обязательно выполните отказоустойчивые тесты, настройте бэкапы конфигурации и мониторинг. MySQL Cluster отлично подходит для сценариев с высокой доступностью и требованием к масштабируемости записи, но требует тщательного планирования ресурсов (памяти, сети) и тестирования.
Ключевые рекомендации:
- Всегда использовать совместимые версии NDB на всех узлах.
- Тестировать восстановление нодов и сценарии отказа до запуска в продуктив.
- Мониторить сетевую задержку и загрузку памяти на дата‑нодах.
Источники команд и конфигураций взяты из официальных пакетов MySQL Cluster и представляют базовый рабочий пример развёртывания.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты