Мне нужно защитить репликацию базы данных 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