Другая идея, небольшая вариация на то, что Вы описали:
Ключ здесь - то, что туннель создается и уничтожается ведущим устройством, обновления периодически выполняются.
Ведомое устройство сохраняет постоянное соединение открытым для ведущего устройства, но действительно закрывает его при издании "ВЕДОМОГО УСТРОЙСТВА ОСТАНОВКИ".
Если Ваши данные являются очень маленькими, и можно терпеть задержку нескольких минут, Вы могли бы потенциально написать сценарий чего-то с помощью mk-table-sync инструмента от Maatkit, который делает задание. Это будет контрольная сумма Ваши таблицы и выяснять то, что изменяется для применения их. Вы могли выполнить это от ведущего устройства и подключения, периодически, к ведомому устройству в демилитаризованной зоне, которая будет намного более безопасна от точки зрения безопасности - даже если бы взломщик поставил под угрозу машину демилитаризованной зоны и заменил ее полностью их собственным программным обеспечением, то они все еще не получили бы больше доступа, чем снимок дб.
это ужасно, но все еще - если нет большого случая в ведущем устройстве, которое можно периодически выполнять в ведущем устройстве [даже однажды в минуту]:
таким образом, Вы не должны будете полагаться на mysql механизм репликации.
необходимо принять во внимание то, что мог бы быть больше чем один файл журнала, созданный сервером через минуту.
Я имею, должны иметь дело с чем-то подобным этому в прошлом. У Вас есть несколько опций.
репликация mysql с помощью ssl, сертификаты и ограничения IP. Легко установить, и можно заблокировать его вниз довольно хороший. Вы все еще открываете соединение с сервером, но Вы действительно управляете доступом плотно. Не могло бы быть достаточно хорошим для специалистов по безопасности.
Как кто-то еще упомянул, скопируйте файлы мусорного ведра журнала в ведомое устройство и затем используйте mysqlbinlog для поглощения их. Я закончил тем, что использовал это для перемещения некоторых новых приобретений в сеть корпорации. Однако это было временной мерой, и мы только использовали ее в течение месяца и нечасто выполняли ее. Также Вы собираетесь иметь задержку в отношении того, как скоро данные добираются до сервера демилитаризованной зоны.
Используйте Прокси Mysql для записи в оба сервера Mysql одновременно. http://dev.mysql.com/downloads/mysql-proxy/index.html Это могло бы иметь некоторые интересные второстепенные вопросы, если Ваша схема имеет причуды. Оборотная сторона, новый инструмент, чтобы установить и учиться, а также быть симпатичной бетой. Позитивный аспект, решает большинство Ваших проблем.
Существует много больших кусочков здесь. Однако все по усложнению различных частей загадки.
mroe сказан:
... ведомое устройство, кажется, содержит открытое соединение (даже после вызова "ВЕДОМОЙ ОСТАНОВКИ"), означая, что туннель всегда открыт...
1.
Это не роль ведомого mysqld для завершения поступления сессия SSH. (Это ближе к способу туннелировать с работами netcat, но это не место для этого так, давайте не путать проблему.) Ведущее устройство должно завершить соединение, потому что это породило его [b], это - одна внутренняя часть сеть, которую Вы хотите защитить. Если Вы хотите оконечный соединение для ведомого вызова стороны"kill -s HUP $pid_of_the_sshd_owned_by_mysqlmaster
". Я повторю, я не вижу использование.
2.
Почему Вы когда-либо звонили бы"SLAVE STOP
"? Ведомое устройство является ведомым устройством. Так как мы находимся по теме... Ведомое устройство никогда не должно останавливать себя. Если ведомое устройство будет остановленным, главный сервер (см. точку 4.
) или администратор должен сделать это.
mroe сказан: Обновления от ведущего устройства к ведомой потребности быть псевдореальным временем (т.е. задержка нескольких минут приемлемо, но не больше).
У Вас не может быть его оба пути. У Вас или есть ведомое выполнение потока IO, или это устарело.
3.
Не волнуйтесь о 'положении бинарного журнала ведущего устройства', это - то, что создало в репликации, делает.
4.
Если у Вас действительно есть свое сердце при разъединении и повторном подключении каждую минуту, запишите сценарий крона на ведущем устройстве. Это должно сделать следующее:
ssh -N -R 3333:127.0.0.1:3306 mysqlmaster@slave.server &
mysql -hslave.server -e 'SLAVE START'
mysql -hslave.server -e 'show slave status\G'|awk '/Seconds_Behind_Master/{print $2}'
sleep
для этого. Проведите исследование о своей системе, чтобы удостовериться, что она не использует ЦП.mysql -hslave.server -e 'SLAVE STOP'
(заразите, SLAVE START
является дополнительным, если Вы используете MASTER_CONNECT_RETRY),kill
pid ssh клиента от 2-го маркера.Это должно сделать это. Теперь имейте в виду, что необходимо подготовить ведомое устройство для тиражирования, прежде чем это соберется работать. Так как Вы упоминаете, что выпустили a SLAVE STOP
, Я возьму это, чтобы означать, что Вы смогли получить последовательное резервное копирование от ведущего устройства к ведомому устройству и получить положение журнала для CHANGE MASTER
команда. Я просто добавлю, что необходимо указать MASTER_HOST='127.0.0.1, MASTER_PORT=3333
Очевидно, я не имею никакой проблемы при не тороплении к исследованию и объясняю подробно. Я также пытаюсь не оскорбить любого путем объяснения слишком много. Если Вы хотите больше детали, просто спросите меня.