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

Как убедиться, что подчиненный сервер MySQL использует туннель SSH для репликации с главного?

Мне нужно защитить репликацию базы данных MySQL между двумя серверами CentOS 5.7. На сервере 1 есть действующая база данных, и репликация уже нормально работает с сервером 2, который находится в другом месте в Интернете.

Очевидно, что это нехорошо, поскольку трафик репликации можно легко прочитать, поэтому его необходимо защитить.

Я создал SSH-туннель, введя его на Сервер 2:

ssh -f root@server1ip -L 3305:server1ip:3306 -N

Я подтвердил, что смог успешно войти в MySQL на сервере 1 с сервера 2, используя:

mysql -h27.0.0.1 -uuser -ppassword -P 3305

Итак, означает ли это, что репликация mysql теперь автоматически проходит через SSH? Могу я как-нибудь это подтвердить? Или это Сервер 2 вынужденный подключиться к серверу 1 через SSH из-за этого правила переадресации портов, которое я установил?

Я заметил, что если я перезагружаю Сервер 2, туннель SSH исчезает при перезапуске, но репликация продолжается (я предполагал, что это обычный текст). Могу ли я что-нибудь сделать, чтобы репликация остановилась, когда туннель обрывается? Я хочу убедиться, что он не будет автоматически воспроизводиться в виде открытого текста без SSH.

Спасибо!

Вам необходимо настроить главную конфигурацию репликации ведомого устройства так, чтобы оно проходило через связанный порт туннеля вместо внешнего адреса однорангового узла репликации:

CHANGE MASTER TO MASTER_HOST='127.0.0.1' MASTER_PORT=3305;

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

После настройки подключения (через SSH, stunnel или что-то еще) вам нужно запустить репликацию - см. Ответ Шейна Мэддена. Обязательно используйте правильные параметры MASTER _ * - (см. ИЗМЕНИТЬ МАСТЕР НА Синтаксис).

Также я бы предпочел использовать встроенную поддержку SSL mysqld, как и предлагалось embobo. Таким образом, у вас нет никаких внешних зависимостей для вашей настройки репликации.

Все настройки mysql должны автоматически запускать репликацию после перезагрузки / перезапуска / ... - но обязательно следите за настройкой mysql-replication-setup, потому что существует множество ситуаций и обстоятельств, которые могут нарушить вашу настройку. Я очень рекомендую такой инструмент, как pt-сердцебиение (преемник mk-heartbeat от maatkit-tools), потому что Seconds_Behind_Master из SHOW SLAVE STATUS \G ненадежный.

HTH