Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

GALERA_SPLIT_BRAIN Linux / DevOps

Траблшутинг рассинхронизации Galera: Split-Brain и pc.bootstrap

Обновлено: 21.08.2026
  • Все ноды кластера возвращают ошибку ERROR 1047 (08S01): WSREP has not yet prepared node for application use.
  • Статус wsrep_cluster_status переходит в состояние non-Primary.
  • Кластер распался на изолированные сегменты после сетевой аварии и потерял кворум.

1. Остановка всех оставшихся процессов mysqld

systemctl stop mysqld

2. Определение наиболее актуального узла (поиск Last Sequence Number - seqno)

На каждом узле выполните команду поиска последней транзакции:

cat /var/lib/mysql/grastate.dat

Если параметр seqno равен -1, запустите временное сканирование позиции в Redo Log:

mysqld --wsrep-recover
grep "Recovered GComm position" /var/log/mysql/error.log

Пример вывода: Recovered GComm position: 12345678-1234-1234-1234-123456789abc:945820 (узел с максимальным числом в конце — самый актуальный).

3. Принудительное назначение узла Мастером через grastate.dat

На узле с наибольшим seqno отредактируйте /var/lib/mysql/grastate.dat:

# Установите safe_to_bootstrap: 1
safe_to_bootstrap: 1

4. Перезапуск первичной компоненты кластера

# На самом актуальном узле:
galera_new_cluster

# Проверьте статус
mysql -e "SHOW STATUS LIKE 'wsrep_cluster_status';" # Должно быть: Primary

5. Запуск остальных узлов и отслеживание SST/IST

systemctl start mysqld
💡 Практика специалистов: Никогда не выставляйте safe_to_bootstrap: 1 наугад на первой попавшейся ноде — старт со старого узла приведет к перезаписи новых данных на остальных нодах через SST и их безвозвратной потере.

Частые вопросы (FAQ)

Как восстановить кворум на лету без перезапуска демона?

Если одна живая нода изолирована и перешла в non-Primary, выполните: SET GLOBAL wsrep_provider_options='pc.bootstrap=YES'; Узел мгновенно объявит себя первичным компонентом.

В чем разница между IST и SST при повторном подключении узла?

IST (Incremental State Transfer) передает только недостающие транзакции из кэша gcache. SST (State Snapshot Transfer) полностью перезаписывает базу через xtrabackup, если узел отставал слишком долго.

Полезные материалы
Рекомендуем