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

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

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

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

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

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

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

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

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

Спасибо заранее.

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

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

на рабе

mysql <master.dump

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

Подсказка: может быть, вам следует выгрузить все базы данных, а не одну?

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

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

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