Можно ли извлечь значения за последний месяц с сервера MySQL и создать новую базу данных из этих значений?

8

У меня есть задание на создание шаблона виртуальной машины для разработки.

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

Большинство баз данных меньше 1 ГБ.

Но у меня есть несколько огромных баз данных (около 160 ГБ) - но я ограничен в размере шаблона, который я пытаюсь создать, и нет смысла добавлять туда БД 160 ГБ.

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

Можно ли сделать такую ​​вещь и как это сделать? Спасибо!

Редактировать:

К сожалению, нет опции для отдельного основного сервера БД, который будет содержать все базы данных разработки, также нет необходимости регулярно обновлять данные, мне просто нужно представить те же данные, что и на производственных серверах (в произвольный период времени), в виде среда песочницы для новых разработчиков.

Итай Ганот
источник

Ответы:

8

Если я правильно понял, вы планируете сделать отдельную копию БД для каждой среды разработки.

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

Этот подход позволит вам периодически обновлять БД разработки с использованием последних данных, и если кто-то испортит их, вы можете просто обновить их снова.

Также представьте ситуацию, когда ваши разработчики начинают работать над новым проектом, требующим создания новых таблиц. Если у вас есть одна копия БД разработки, вам (или разработчикам) нужно будет создать эти таблицы и заполнить их тестовыми данными только один раз. Теперь представьте, что разработчики понимают, что исходная структура таблицы не является оптимальной и требует изменения. Опять же, это нужно будет сделать на одной БД, а не на десятках сред.

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

grekasius
источник
2
В магазине, где я работаю, у каждого разработчика есть своя собственная копия базы данных, поэтому никто не наступает на чужие пальцы. Это сработало очень хорошо для нас. У нас есть сценарии, чтобы перестроить базу данных с нуля и заполнить ее тестовыми данными, необходимыми для разработки. Единая база данных часто была проблематичной, когда люди, работающие в некоторых областях базы данных, ломали ее для других людей. И тогда все останавливаются, пока восстанавливается большая БД. Таким образом, наличие единой базы данных НЕ является превосходным решением. (ТБХ тоже нет. Это ситуативный.)
Андрей Савиных,
Согласовано. Просто из любопытства, насколько велики ваши БД? Я не вижу, как это может работать с БД размером 160 ГБ.
Грекасиус
Конечно, базы данных разработчиков были бы преднамеренно малы, и для проверки того, над чем работают разработчики, требуется только подмножество данных. Для таких целей, как тестирование производительности, будет использоваться отдельный (больший) экземпляр.
Андрей Савиных
Я не обязан регулярно обновлять данные, просто разместить их один раз в этом шаблоне.
Итай Ганот
Посмотрите, можете ли вы создать небольшой примерный набор данных из вашей текущей БД. К сожалению, здесь нет однозначного ответа. Что вам нужно сделать, зависит от того, какие данные у вас есть и что вы решите поместить в эту базу данных разработчиков.
Грекасиус
4

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

select * from table where date > ....

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

Свен
источник
2
В частности, некоторые базы данных могут иметь более новые записи (скажем, <1 месяц), которые ссылаются на записи из более старых записей (скажем,> 1 месяц). То, как вы справляетесь с ними, полностью зависит от того, как эти ссылки установлены, и неосуществимо для всех, кроме самых основных.
Боб
0

У нас недавно была ситуация, когда клиент хотел извлечь последние 30 дней из базы данных. Если ВСЕ таблицы имеют одинаковый атрибут, где вы можете определить дату и время, вы можете сделать

mysqldump --where = 'datetimefield> "2014-06-28"'

но он хотел смешать разные таблицы со старыми и новыми данными. Так что это не было решением для него, но может быть для вас?

shinguz
источник