Я поддерживаю сервер, который запускает ежедневные задания cron для агрегирования источников данных и создания отчетов, доступных частному приложению Ruby on Rails.Что такое эффективный способ поддержки локальной копии только для чтения живой удаленной базы данных MySQL?
Одним из наших источников данных является частичный сброс базы данных наших партнеров. Партнер запускает активное приложение, а база данных MySQL содержит сотни таблиц. Они дали нам доступ только для чтения к относительно маломощному ведомому только для чтения их прикладной БД.
Из-за проблем с задержкой и узких мест производительности на их подчиненной БД мы поддерживали ограниченную локальную копию их БД. Нам нужны только около 20 таблиц для наших отчетов, поэтому я просто отказываюсь от этих таблиц. Нам также нужны данные только для ежедневной детализации, поэтому синхронизация в реальном времени не является обязательным требованием.
В течение нескольких месяцев я реализовал ночной cron, который передавал дамп необходимых таблиц в локальную базу данных production_tmp
. Затем, когда все таблицы были импортированы, я сбросил production
и переименовал production_tmp
в production
. Это работало до тех пор, пока БД не выросла до более чем 25 ГБ, и мы начали использовать ограничения на дисковое пространство.
На данный момент, я удалил шаг избыточности, и я просто передаю свалку прямо на production
на нашем локальном сервере. Мне это кажется немного хлипким, и я хотел бы применить более безопасный подход. Кроме того, в настоящее время полная загрузка дампа/загрузка занимает наш сервер в течение 2 часов, и я хотел бы реализовать подход, который не займет много времени. База данных будет продолжать расти, поэтому я хотел бы реализовать что-то в будущем.
Любые предложения будут оценены!
Вы пробовали с помощью 'функции горячей backup' в MySql? Похоже, вы сбрасываете всю БД, чтобы сделать эту передачу, но на самом деле нужно только переместить изменения. Дополнительная информация: [Incremental Backup] (http://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_incremental_backup) –
@SusannahPotts - единственный способ сделать это с помощью MySQL Enterprise Edition? –
Я так считаю ... MySQL довольно строг в отношении функциональности платных версий. Я предположил, что вы будете использовать версию EE, поскольку лицензирование MySQL не разрешает коммерческое использование ... по крайней мере, с той части лицензии, которую я прочитал. –