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

Установка и настройка 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
Автор
Редакция

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

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

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

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

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

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

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

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

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

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

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

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

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