Репликация из нескольких источников не работает в MySQL

Я пытаюсь настроить репликацию из нескольких источников. В моем ведомом устройстве я определил следующие два свойства в его конфигурационном файле.

master-info-repository=table  
relay-log-info-repository=table

Эти записи необходимы, потому что я определяю каналы в команде «CHANGE MASTER TO», как показано ниже:

change master to master_host="127.0.0.1", master_port=20000, master_user="replication",master_password="password1" for channel="master1";

Вышеупомянутая команда показывает ошибку:

ERROR 1794 (HY000): ведомое устройство не настроено или не удалось инициализировать должным образом. Вы должны хотя бы установить --server-id, чтобы включить мастер или раб. Дополнительные сообщения об ошибках можно найти в ошибке MySQL log.

ИД СЕРВЕРА четко определен в файле конфигурации.

Если я не определю эти два свойства (показанные вверху) в файле конфигурации и не запустил ведомое устройство без «для канала», все будет нормально. Только когда я пытаюсь определить несколько источников, отображается эта ошибка.

Файл журнала ошибок содержит следующие записи:

2017-01-01T12: 41: 54.446764Z 0 [ERROR] Ошибка при проверке mysql.slave_master_info тип информации репозитория ТАБЛИЦА.
2017-01-01T12: 41: 54.446764Z 0 [ERROR] Ошибка создания основной информации: Ошибка проверки репозиториев. 2017-01-01T12: 41: 54.446764Z 0 [ОШИБКА] Не удалось создать или восстановить репозиторий информации о репликации.
2017-01-01T12: 41: 54.446764Z 0 [ОШИБКА] Не удалось создать или восстановить репозитории информации репликации.

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

РЕДАКТИРОВАТЬ
Я узнал, что это связано с 5 таблицами innodb_index_stats , innodb_table_stats , slave_master_info , slave_relay_log_info , slave_worker_info . Даже если я удалю эти таблицы, а затем создам снова, он все равно покажет ту же ошибку. Кстати, я использую несколько экземпляров на одной машине.

0
задан 1 January 2017 в 21:27
1 ответ

В команде смена ведущего отсутствует информация. Для многоисточниковой репликации, как и при обычной репликации, необходимо указать либо начальные координаты лог-файла (когда ведущий использует двоичный лог-файл), либо указать автоматическое позиционирование (когда ведущий использует GTID). Здесь находится mysql документация по дополнительным параметрам, которые необходимо указать.

Для автоматического позиционирования:

change master to 
  master_host="127.0.0.1", 
  master_port=20000, 
  master_user="replication",
  master_password="password1",
  master_auto_position=1 
for channel="master1";

Для репликации, основанной на лог-файлах:

change master to 
  master_host="127.0.0.1", 
  master_port=20000, 
  master_user="replication",
  master_password="password1",
  master_log_file='some_log_file.bin',
  master_log_pos=1
for channel="master1";    
0
ответ дан 5 December 2019 в 08:49

Теги

Похожие вопросы