это мой первый вопрос здесь, и английский не мой родной язык, но я постараюсь объяснить.
У меня есть главный сервер 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'
Это запустит команду дампа на мастере, но перезагрузит ее локально.