Я не знал, как это описать, поэтому назвал его полукругом. Вот что я делаю.
Сервер А
Сервер B = Это подчиненный сервер A
Сервер C = Это подчиненный сервер B
Когда я что-то обновляю на сервере A, это отражается на сервере B. Но это же изменение не отражается на сервере C.
Только когда я что-то обновляю на сервере B, это изменение отражается на сервере C.
Как сделать так, чтобы любые изменения, сделанные на сервере A, приходили на сервер B (который уже работает), а затем на сервер C?
РЕДАКТИРОВАТЬ
Проведя расследование, я обнаружил, что когда я вношу некоторые изменения на сервере A, его положение в файле журнала меняется. Но когда эти изменения отражаются на сервере B, положение файла журнала сервера B не меняется. Именно по этой причине сервер C не знает, были ли какие-либо изменения на сервере B, если я явно не изменю что-то (вставка, обновление, удаление) на сервере B.
Итак, есть ли способ сообщить MySQL об увеличении позиции файла журнала, когда Slave получает обновления от Master?
FYI - это обычно называется цепочкой ретрансляции репликации. Чтобы включить это, вам необходимо убедиться, что на сервере B установлены следующие параметры:
log_bin
log_slave_updates
Это укажет серверу B обновить свою позицию в журнале, когда будут получены обновления от A. Документацию для этого можно найти Вот (курсив мой):
Обычно подчиненное устройство не записывает никаких обновлений, полученных от главного сервера, в свой собственный двоичный журнал. Эта опция заставляет ведомое устройство записывать обновления, выполненные его потоком SQL, в его собственный двоичный журнал. Чтобы эта опция имела какой-либо эффект, ведомое устройство также должно быть запущено с --log-bin опция для включения двоичного журнала. --log-slave-updates используется, когда вы хотите связать серверы репликации. Например, вы можете настроить серверы репликации, используя эту схему.
A -> B -> C
Здесь A служит ведущим для ведомого B, а B служит ведущим для ведомого C. Чтобы это работало, B должен быть и ведущим, и ведомым. Вы должны начать как A, так и B с --log-bin для включения двоичного журнала и B с --log-slave-updates вариант, чтобы обновления, полученные от A, записывались B в свой двоичный журнал.