Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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