2010-09-02 5 views
0

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

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

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

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

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

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

Все это в Windows 2003 32-bit или 2008R2 64-bit, MySQL 5.1.

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

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

Спасибо, Эрик

+0

Это может быть дешевле, но есть миллион мелочей, из-за которых MySQL болит по сравнению с mssql. Мне нравится и использовать его все время, но переход от mssql к mysql - это шаг вниз imho. –

+0

@Byron Whitlock: Есть больше, чем просто резервные копии, демонстрирующие, что MySQL является шагом вниз от SQL Server ... –

+0

@OMG Ponies, yep no microsecond precision on datetime fields, не позволяя по умолчанию GETDATE() определять таблицы временных меток, оптимизированный оптимизатор запросов, который заставляет вас переписывать ваши запросы именно так. Список можно продолжать и продолжать :( –

ответ

0

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

Смежные вопросы