Ошибка: «не удалось инициализировать структуру основной информации» при выполнении репликации главного подчиненного в MySQL - PullRequest
41 голосов
/ 17 февраля 2011

Я пытаюсь выполнить Master Slave Replication для MySQL.Когда я набираю следующую команду:

CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;

выдает следующую ошибку:

ОШИБКА 1201 (HY000): не удалось инициализировать структуру основной информации;больше сообщений об ошибках можно найти в журнале ошибок MySQL

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

143 голосов
/ 30 марта 2012

ПОПРОБУЙТЕ СБРОСИТЬ ЭТО, ЭТО ДЕЛАЕТСЯ МАГИЕМ НА РАБЕ ТИП КОМАНДЫ MYSQL:

RESET SLAVE;

ПОТОМ ПОПРОБУЙТЕ:

CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;
5 голосов
/ 17 февраля 2011

Пожалуйста, проверьте несколько вещей:

1) Убедитесь, что в /etc/my.cnf Мастера действительно установлен server_id

Вот почему: Репликация полагается на server_id.Всякий раз, когда запрос выполняется и записывается в двоичный журнал мастера, в него записывается server_id мастера.По умолчанию, если server_id не определен в /etc/my.cnf, server_id по умолчанию равен 1. Однако правила MySQL Replication требуют, чтобы server_id был явно определен в /etc/my.cnf мастера.Кроме того, для любого данного ведомого, mysqld проверяет server_id оператора SQL, поскольку это читает его из журнала ретрансляции и удостоверяется, что это отличается от server_id ведомого.Таким образом, MySQL Replication знает, что выполнять этот оператор SQL безопасно.Это правило необходимо в случае, если реализована репликация Circular (Master-Master, MultiMaster).

используйте select @@server_id; в командной строке sql для проверки конфигурации на сервере.

2) Убедитесь, чтодля /etc/my.cnf ведомого устройства фактически задано значение server_id

Вот почему: та же причина, что и в # 1

3) Убедитесь, что значение server_id в /etc/my.cnf Мастера равноотличается от server_id в подчиненном /etc/my.cnf

Вот почему: та же причина, что и в # 1

Примечание: если вы настраиваете несколько подчиненных, убедитесь, что каждыйslave имеет другой server_id, отличный от своего главного и дочерних подчиненных.

Вот почему: Пример

Мастер с двумя подчиненными
MASTER имеет server_id 1
У SLAVE1 есть server_id 2
У SLAVE2 есть server_id 2

Репликация станет агрессивно медленной на SLAVE2, потому что подчиненный подчиненный имеет тот же server_id.Фактически, он неуклонно отстает, перехватывает, обрабатывает несколько операторов SQL.Это ошибка мастера за наличие одного или нескольких ведомых с одинаковыми значениями server_ids.Это гоча, которая нигде не документирована.Я видел это десятки раз в моей жизни.

...