SystemdDoctor
служба не работает mariadb кластер

MariaDB Galera: узел не стартует без bootstrap

После полной остановки кластера Galera ни один узел не запустится обычной командой: каждый ждёт, пока появится кластер, к которому можно присоединиться. Первый узел поднимают особой командой, которая объявляет его начальным.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Кластер остановлен полностью, и некому объявить начало

    Узел при старте ищет работающий кластер. Если его нет, он не рискует начать сам, чтобы не разойтись с данными других узлов.

  2. В файле состояния указано, что узел не может быть начальным

    Значение safe_to_bootstrap равно нулю: узел завершался не последним и может не иметь всех данных.

  3. Сетевой обмен между узлами заблокирован

    Galera использует несколько портов. Если они закрыты, узел не находит кластер даже при работающих соседях.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Номер последовательности и признак возможности начального запуска.

sudo cat /var/lib/mysql/grastate.dat

Сообщения кластерного слоя о попытках присоединения.

journalctl -u mariadb -n 60 --no-pager | grep -i -E "galera|wsrep"

Код завершения и последние строки.

systemctl status mariadb --no-pager -l

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Кластер остановлен полностью, и некому объявить начало
Почему происходит
Узел при старте ищет работающий кластер. Если его нет, он не рискует начать сам, чтобы не разойтись с данными других узлов.
Как проверить
Посмотрите состояние узла и сохранённое состояние кластера.
sudo cat /var/lib/mysql/grastate.dat
journalctl -u mariadb -n 40 --no-pager | grep -i galera
Как исправить
Определите узел с самыми свежими данными по номеру в файле состояния и запустите его особой командой, затем поднимайте остальные обычным способом.
sudo galera_new_cluster   # только на узле с самыми свежими данными
2. В файле состояния указано, что узел не может быть начальным
Почему происходит
Значение safe_to_bootstrap равно нулю: узел завершался не последним и может не иметь всех данных.
Как проверить
Посмотрите значение в файле состояния на всех узлах.
sudo grep -E "seqno|safe_to_bootstrap" /var/lib/mysql/grastate.dat
Как исправить
Выберите узел с наибольшим номером последовательности. Менять значение вручную можно только понимая риск расхождения данных.
3. Сетевой обмен между узлами заблокирован
Почему происходит
Galera использует несколько портов. Если они закрыты, узел не находит кластер даже при работающих соседях.
Как проверить
Проверьте доступность портов до других узлов.
for p in 4567 4568 4444; do timeout 2 bash -c "</dev/tcp/узел2/$p" && echo "$p открыт" || echo "$p закрыт"; done
Как исправить
Откройте порты 4567, 4568 и 4444 между узлами кластера.

Пример вывода

Узел не находит кластер и завершается. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

mariadbd[7100]: [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view
mariadbd[7100]: [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():219: Failed to open backend connection: -110
mariadbd[7100]: [ERROR] Aborting
systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация MariaDB: восстановление кластера Galera документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Наблюдалось на тестовом кластере из двух узлов после одновременной остановки.
    собственная проверка, systemd 255
    сверено 15 сентября 2026