Назад | Перейти на главную страницу

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

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

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

Эти записи необходимы, потому что я определяю каналы в команде «ИЗМЕНИТЬ МАСТЕР НА», как показано ниже:

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

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

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

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

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

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

2017-01-01T12: 41: 54.446764Z 0 [ОШИБКА] Ошибка при проверке типа информации репозитория mysql.slave_master_info TABLE.
2017-01-01T12: 41: 54.446764Z 0 [ОШИБКА] Ошибка создания основной информации: Ошибка проверки репозиториев. 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. Даже если я удалю эти таблицы, а затем создам снова, он все равно покажет ту же ошибку. Кстати, я использую несколько экземпляров на одной машине.

Вам не хватает информации в вашем change master команда. Для репликации с несколькими источниками, как и при обычной репликации, вам необходимо включить либо начальные координаты журнала (когда мастер использует двоичное ведение журнала), либо вам нужно указать автоматическое позиционирование (когда мастер использует 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";