Инициализируйте подчиненный сервер MySQL, расположенный в другой сети, нежели главный сервер.

Инициализируйте подчиненный сервер MySQL, расположенный в другой сети, нежели главный сервер.

Это мой первый вопрос здесь, и английский не мой родной язык, но я попытаюсь объяснить.

У меня есть главный сервер MySQL с публичным IP-адресом, работающий в инфраструктуре моего провайдера, и я хочу запустить локальный подчиненный сервер MySQL в своем офисе, который будет реплицировать все данные в целях тестирования.

Настройка репликации работает отлично, я создал SSH-туннель, чтобы мой подчиненный сервер читал бинарный лог с главного сервера, здесь все отлично.

Моя проблема заключается в настройке данных с главного устройства. Обычно, когда я хочу загрузить данные с главного устройства на любое подчиненное устройство в той же сети, я запускаю следующую команду на главном устройстве:

mysqldump 'master' --master-data=1 | mysql 'slave' 

но здесь я не могу назначить IP-адрес подчиненному устройству, поскольку оно находится в моем офисе за рядом маршрутизаторов NAT...

Есть ли у кого-нибудь решение, зная, что я не могу остановить мастер, а на нем около 50 ГБ данных. Если у вас есть какое-либо другое решение для осуществления «горячей» передачи данных с мастера на слейв, мне тоже очень интересно.

Заранее спасибо.

решение1

Предположим, что вы можете подключиться к главному серверу по ssh. А как насчет подключения с подчиненного сервера?

ssh master 'mysqldump \'master\' --master-data=1' | mysql 'slave'

Это запустит команду дампа на главном устройстве, но перезагрузит ее локально.

решение2

Почему бы вам просто не переслать его в файл и не передать позже с помощью scpили rsync?

mysqldump master --master-data=1 >master.dump

на рабе

mysql <master.dump

Альтернатива, запустите mysqldumpкоманду на подчиненном устройстве, а не на главном. Возможно, без ошибки выше это будет работать лучше.

Подсказка: Может быть, вам стоит сделать дамп всех баз данных, а не только одной?

Связанный контент