Удаленное резервное копирование базы данных MySQL

Наше приложение на сервере Java записывает данные в базу данных SQL, которая может находиться или не находиться на одном компьютере. В настоящее время мы используем MS SQL Server, и теперь мы портируем на MySQL. Пользователь настраивает параметры резервного копирования базы данных на нашем сервере приложений, например, время дня для запуска резервного копирования, и сервер приложений выполняет команду BACKUP DATABASE SQL Server в соответствующее время через sproc. Он делает инкрементные резервные копии ежедневно и еженедельно полностью.

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

  • Создайте UDF для оболочки в mysqldump (или скопируйте файлы базы данных), которую можно вызывать с нашего сервера приложений через sproc. По сути, мы будем реализовывать версию BACKUP DATABASE для MySQL.
  • Создайте службу для запуска в окне MySQL, которая может получать параметры резервного копирования с сервера приложений, и запускать mysqldump (или копию файла) локально.
  • Создайте резервную копию sproc для имитации mysqldump, например, SHOW CREATE TABLES и SELECT INTO OUTFILE для каждой таблицы.

Настройка задания cron, сценария Perl, стороннего приложения или других хитростей, которые отлично работают в центре обработки данных, не являются предпочтительными; это упаковка в термоусадочную пленку, которая должна быть достаточно прочной и не использовать.

Размеры базы данных могут варьироваться от примерно 10 МБ до 10 ГБ.

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

Это все в Windows 2003 32-разрядная или 2008R2 64-разрядная, MySQL 5.1.

Опция UDF кажется мне лучшей. В репозитории UDF ( http://www.mysqludf.org/) есть mysqludf_sys, что может быть всем, что нам нужно, но я подумал, что буду спрашивать мнения, так как после интенсивного поиска в Google, похоже, другие люди не пришли к такому же выводу или, может быть, наши потребности просто необычны. Наше приложение - единственное, что есть в MySQL, поэтому я не беспокоюсь о том, что другие пользователи имеют доступ к нашей UDF.

Какие решения я пропускаю? Есть опыт использования UDF таким способом?

Спасибо эрик

1 ответ

Решение

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

Другие вопросы по тегам