У меня есть задание создать шаблон виртуальной машины для разработки.
Мне нужно добавить на сервер базы данных MySQL из каждого продукта моей компании, чтобы новые разработчики имели возможность разрабатывать для каждого из продуктов.
Большинство баз данных меньше 1 ГБ.
Но у меня есть несколько огромных баз данных (около 160 ГБ), но я ограничен размером шаблона, который пытаюсь создать, и нецелесообразно добавлять туда БД размером 160 ГБ.
Поэтому я пытаюсь найти правильный метод для извлечения, скажем, значений за прошлый месяц из этой огромной базы данных и добавления их на сервер, чтобы разработчик мог «почувствовать», каково это работать с этой базой данных.
Возможно ли такое и как это делается? Спасибо!
Редактировать:
К сожалению, нет возможности для отдельного основного сервера БД, который будет содержать все базы данных разработки, также нет необходимости регулярно обновлять данные, мне просто нужно представить те же данные, что и на производственных серверах (в произвольный период времени) в виде среда песочницы для новых разработчиков.
Если я правильно понял, вы планируете делать отдельную копию БД для каждой среды разработки.
Хотя это может быть осуществимо с небольшими базами данных, это не будет работать с большими базами данных. Поэтому, если у вас нет действительно веских причин для установки отдельной БД для каждой среды, возможно, лучше подумать о наличии одной копии базы данных разработки и настройке всех сред разработки для ее использования.
Такой подход позволит вам периодически обновлять базу данных разработки последними данными, и если кто-то испортит ее, вы можете просто обновить ее снова.
Также представьте ситуацию, когда ваши разработчики начинают работать над каким-то новым проектом, который требует создания новых таблиц. Если у вас есть одна копия базы данных разработки, вам (или разработчикам) нужно будет создать эти таблицы и заполнить их тестовыми данными только один раз. Теперь представьте, что разработчики понимают, что исходная структура таблицы не оптимальна и ее необходимо изменить. Опять же, это нужно будет сделать в одной БД, а не в десятках сред.
Это подход, который я видел снова и снова в больших проектах, и в большинстве случаев он работает довольно хорошо.
Это очень сильно зависит от типа данных в базе данных. В некоторых случаях это может быть так просто, как
select * from table where date > ....
в то время как в других случаях разделить это невозможно из-за структуры данных. В конце концов, это, скорее всего, будет смесь, и сделать ее будет очень сложно.
Недавно у нас была ситуация, когда клиент хотел извлечь базу данных за последние 30 дней. Если ВСЕ таблицы имеют один и тот же атрибут, где вы можете определить дату и время, вы можете сделать
mysqldump --where = 'datetimefield> «2014-06-28»'
но он хотел смешать разные таблицы со старыми и новыми данными. Значит, это не было решением для него, но, может быть, оно подойдет вам?