Используя репликацию MySQL для включения копии только для чтения базы данных в демилитаризованной зоне

Секвойя очень датирована, но это - то, которое я использую.

Дает интересный визуальный обзор Ваших дисков/папок.

3
задан 9 June 2009 в 08:59
5 ответов

Другая идея, небольшая вариация на то, что Вы описали:

  • Туннель установки от ведущего устройства
  • Запустите ведомое устройство от ведущего устройства (отметьте положение бинарного журнала ведущего устройства),
  • Выполненное ведомое устройство до положения бинарного журнала ведущего устройства встречено или превышено
  • Остановите ведомое устройство
  • Близкий туннель
  • Повторитесь каждый x минуты

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

2
ответ дан 3 December 2019 в 05:21

Ведомое устройство сохраняет постоянное соединение открытым для ведущего устройства, но действительно закрывает его при издании "ВЕДОМОГО УСТРОЙСТВА ОСТАНОВКИ".

Если Ваши данные являются очень маленькими, и можно терпеть задержку нескольких минут, Вы могли бы потенциально написать сценарий чего-то с помощью mk-table-sync инструмента от Maatkit, который делает задание. Это будет контрольная сумма Ваши таблицы и выяснять то, что изменяется для применения их. Вы могли выполнить это от ведущего устройства и подключения, периодически, к ведомому устройству в демилитаризованной зоне, которая будет намного более безопасна от точки зрения безопасности - даже если бы взломщик поставил под угрозу машину демилитаризованной зоны и заменил ее полностью их собственным программным обеспечением, то они все еще не получили бы больше доступа, чем снимок дб.

2
ответ дан 3 December 2019 в 05:21
  • 1
    Ре " остановите slave" это doesn' t, кажется, имеют место для меня (mysql v5.1.31, debian/ubuntu). По крайней мере, туннель ssh никогда не закрывается, который является, должен, если ничто не использует его. –  mrowe 9 June 2009 в 09:39
  • 2
    Спасибо за указатель Maatkit, все же.:) –  mrowe 9 June 2009 в 09:40

это ужасно, но все еще - если нет большого случая в ведущем устройстве, которое можно периодически выполнять в ведущем устройстве [даже однажды в минуту]:

  • ЖУРНАЛЫ СБРОСА; [я предполагаю, что у Вас есть бинарное журналирование на ведущем устройстве. раз так - это закроет старый файл журнала и вынудит ведущее устройство создать новый файл журнала]
  • с помощью ssh туннель или просто mysql и команда бинарного журнала 'отвечают' файлу журнала на ведомом устройстве в dmz

таким образом, Вы не должны будете полагаться на mysql механизм репликации.

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

1
ответ дан 3 December 2019 в 05:21

Я имею, должны иметь дело с чем-то подобным этому в прошлом. У Вас есть несколько опций.

  1. репликация mysql с помощью ssl, сертификаты и ограничения IP. Легко установить, и можно заблокировать его вниз довольно хороший. Вы все еще открываете соединение с сервером, но Вы действительно управляете доступом плотно. Не могло бы быть достаточно хорошим для специалистов по безопасности.

  2. Как кто-то еще упомянул, скопируйте файлы мусорного ведра журнала в ведомое устройство и затем используйте mysqlbinlog для поглощения их. Я закончил тем, что использовал это для перемещения некоторых новых приобретений в сеть корпорации. Однако это было временной мерой, и мы только использовали ее в течение месяца и нечасто выполняли ее. Также Вы собираетесь иметь задержку в отношении того, как скоро данные добираются до сервера демилитаризованной зоны.

  3. Используйте Прокси Mysql для записи в оба сервера Mysql одновременно. http://dev.mysql.com/downloads/mysql-proxy/index.html Это могло бы иметь некоторые интересные второстепенные вопросы, если Ваша схема имеет причуды. Оборотная сторона, новый инструмент, чтобы установить и учиться, а также быть симпатичной бетой. Позитивный аспект, решает большинство Ваших проблем.

1
ответ дан 3 December 2019 в 05:21

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

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'
  • Теперь необходимо сделать выбор:
    1. Оставайтесь на связи, пока ведомое устройство не схвачено с ведущим устройством. Можно протестировать на '0' в выводе следующего (одна строка, проигнорировать обертывание): mysql -hslave.server -e 'show slave status\G'|awk '/Seconds_Behind_Master/{print $2}'
    2. Оставайтесь на связи определенного количества времени. Возможно, Вы были бы sleep для этого. Проведите исследование о своей системе, чтобы удостовериться, что она не использует ЦП.
  • MySQL является выделенными соединениями дескрипторов корректно, таким образом, это является дополнительным: 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

Очевидно, я не имею никакой проблемы при не тороплении к исследованию и объясняю подробно. Я также пытаюсь не оскорбить любого путем объяснения слишком много. Если Вы хотите больше детали, просто спросите меня.

1
ответ дан 3 December 2019 в 05:21

Теги

Похожие вопросы