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

Установка и настройка MySQL Cluster на Debian 10 — трёхузловой пример

6 min read Databases Обновлено 24 Nov 2025
MySQL Cluster на Debian 10 — установка и настройка
MySQL Cluster на Debian 10 — установка и настройка

Что вы получите из этой инструкции

  • Полный пошаговый сценарий установки менеджера, дата‑нодов и SQL‑узла на Debian 10.
  • Готовые примеры config.ini, /etc/my.cnf и systemd‑юнитов.
  • Проверки работоспособности и контрольные тесты.

Иллюстрация: схема трёхузлового MySQL Cluster

Важно: в тексте используются реальные 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)

  1. На менеджер‑ноде скачайте пакет менеджера (в репозитории Debian он обычно отсутствует):
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb
  1. Установите .deb:
dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb
  1. Создайте каталог для конфигурации и откройте файл 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)

На каждом дата‑ноде выполните:

  1. Установите зависимости:
apt-get install libclass-methodmaker-perl -y
  1. Скачайте пакет дата‑нода и установите его:
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
  1. Создайте файл /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
  1. Создайте папку для данных и запустите 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‑узле) выполните следующие шаги:

  1. Скачайте и распакуйте 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
  1. Установите зависимости и общие пакеты:
cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y
dpkg -i mysql-common*
  1. Установите клиентские и серверные пакеты (приведены примеры команд):
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
  1. Установите mysql-server и во время установки задайте пароль root, если потребуется:
dpkg -i mysql-server_8.0.24-1debian10_amd64.deb
  1. Обновите /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
  1. Перезапустите MySQL и включите автозапуск:
systemctl restart mysql
systemctl enable mysql
systemctl status mysql

Ожидаемый результат: mysqld запущен и подключён к NDB.

Проверка работоспособности кластера

  1. Подключитесь к MySQL как root:
mysql -u root -p
  1. В MySQL выполните:
SHOW ENGINE NDB STATUS \G

Ожидаемый набор строк демонстрирует подключения и количество дата‑нодов.

  1. Подключитесь к консоли управления менеджера:
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)

  1. Тест записи: INSERT в NDB‑таблицу, SELECT на другом SQL‑узле — ожидать видимость данных.
  2. Тест отказа: выключить один дата‑нод, убедиться, что кластер продолжает работу (NoOfReplicas>1).
  3. Тест восстановления: включить нод, проверить, что он синхронизируется и возвращается в started.
  4. Тест нагрузочного чтения: нагрузочный SELECT с нескольких клиентских потоков; мониторить задержки.

Роли и обязанности (чек‑лист для команды)

  • Системный администратор: установка пакетов, настройка systemd, мониторинг процессов.
  • DBA: создание NDB‑таблиц, оптимизация схемы, мониторинг производительности.
  • Сетевой инженер: открытие/контроль портов, настройка VLAN/MTU и прав доступа.

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

  1. Подготовьте три тестовых ВМ со статическими IP и доступом root.
  2. На менеджере установите ndb_mgmd и подготовьте config.ini.
  3. На дата‑нодах установите ndbd, настройте /etc/my.cnf и проверьте подключение.
  4. Установите mysqld и протестируйте SQL‑операции.
  5. Проведите отказоустойчивые тесты и нагрузочное тестирование.

Пример команды для быстрой диагностики

  • Проверить состояние кластера из 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 и представляют базовый рабочий пример развёртывания.

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

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

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android