Я пытаюсь настроить репликацию из нескольких источников. В моем ведомом устройстве я определил следующие два свойства в его файле конфигурации.
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";