Централизованный бекап MySQL

// Декабрь 18th, 2017 // MySQL, Системное администрирование

MySBFLogo60Давненько мне хотелось сделать так, чтобы было одно место, где хранились все бекапы баз данных с разных серверов. Сервера, как правило виртуалки на Linux, а машина с бекапами — Windows Server +Veeam. В этом посте расскажу, что получилось и как.

Задача

Есть разнородные машины с крутящимся на них MySQL. Машин много, а я одна (бекапная тачка). Необходимо сделать так, чтобы на бекапной машине были собственно все бекапы. Раньше у меня была для этих целей отдельная Linux машина и набор bash скриптов. Но потом начался Docker и скрипты в машине уже просто так не запускались. Еще один момент состоит в том, что у меня уже была машина с Windows Server на борту, на которой крутился Veeam. И хотелось не плодить сущности, а настроить всё на ней.

bitvise

Решение

Сначала нам надо как-то соединяться с портом 3306 виртуалок. Открывать его наружу — плохая идея. Поэтому надо пробросить туннель.

Пробрасываем тоннель

Для этого будем использовать бесплатную программу Bitvise SSH Client. Она мне очень понравилась. Она может делать коннект, и после этого пробрасывать порты на клиентскую машину. Делается это в разделе «C2S».

bitvise-port-forwarding

Соединяемся и проверяем коннект: telnet localhost 3308. Если всё ок, то мы увидим приветствие MySQL.

Автоматизируем поднятие SSH тоннеля

Дальше, нам надо сделать так, чтобы тоннель автоматически создавался при старте машины. Для этого будем использовать софтину FireDaemon Pro. Хочу заметить, что версия 1.9.5 не устанавливается на Windows 10 / 2016. Так что ставьте версию 3.14. Открываем софтину, создаем там запись о сервисе и вставляем путь до файла stlnc.exe В параметрах указываем путь до файла профиля Bitvise SSH client.

firedaemon-service-program

На следующей вкладке указываем данные юзера, от которого запускать сервисы.

firedaemon-service-settings

Ну теперь пробуем перезагрузиться и после этого снова telnet localhost 3308. Если коннект пройдёт, значит тоннель поднят автоматически. Если вам нужны коннекты до нескольких серверов — делаем соответствующее количество профилей в Bitvise и сервисов в FireDaemon. Главное, следите, чтобы локальные порты не пересекались.

Делаем бекапы MySQL

Для этого весьма неплоха софтина MySQLBackupFtp. Она умеет делать бекапы по расписанию, копировать резервные копии в локальную папку, FTP, DropBox, GDrive, Amazon S3, OneDrive, Azure Storage. В ней даже есть туннелирование mysql трафика через ssh … но оно не работает. Собственно поэтому и начался весь этот огород выше.

mysqlbackupftp

Настройка программы тривиальна. В нашем случае указываем ей MySQL сервер на 127.0.0.1 порт 3308, папку назначения и пробуем сделать. Когда проверите, что бекап создался — зайдите в раздел Jobs и там запланируйте время резервирования. Когда вы создаёте Job в программе, то она сама добавляет их в Windows Task Sheduler, так что вам это делать не придётся.

Ссылки

Automatic ssh tunelling for Windows
Running Bitvise SSH Client as a Windows Service
Running BitVise with FireDaemon
FireDaemon Pro 3.14 Crash on Windows 10 & Server 2016
Share

Спасибо!


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


2 Responses to “Централизованный бекап MySQL”

  1. Никита:

    Есть фатальный недостаток: небезопасно хранить бекапы в одном месте.

    • google.com Андрей Токарчук:

      Согласен, Никит! Это решение — скорее временное, до перехода на что-нибудь enterprise.

Комментировать