MySQL 서버에서 지난 달의 값을 추출하고 해당 값에서 새 데이터베이스를 구축 할 수 있습니까?


8

개발 가상 머신 템플릿을 구축하라는 과제가 있습니다.

새로운 개발자가 각 제품마다 개발할 수 있도록 회사 제품마다 서버 MySQL 데이터베이스를 추가해야합니다.

대부분의 데이터베이스는 1GB보다 작습니다.

그러나 160G 정도의 거대한 데이터베이스가 있지만 만들려는 템플릿의 크기가 제한되어 있으며 160GB의 DB를 추가하는 것은 합리적이지 않습니다.

따라서 지난 달이 거대한 데이터베이스에서 값을 추출하여 서버에 추가하는 올바른 방법을 찾으려고 노력하고 있는데 개발자가이 데이터베이스에서 작업하는 것과 같은 느낌을 느낄 수 있습니다.

그런 일을 할 수 있습니까? 어떻게 이루어 집니까? 감사!

편집하다:

불행히도 모든 개발 데이터베이스를 보유하는 별도의 기본 DB 서버에는 옵션이 없으며 데이터를 정기적으로 업데이트 할 필요가 없으며 프로덕션 서버와 동일한 데이터를 임의의 기간으로 제시하면됩니다. 새로운 개발자를위한 샌드 박스 환경.

답변:


8

올바르게 이해했다면 각 개발 환경에 대해 별도의 DB 복사본을 만들 계획입니다.

작은 데이터베이스에서는 이것이 가능할 수 있지만 큰 DB에서는 제대로 작동하지 않습니다. 따라서 각 환경에 대해 별도의 DB를 설정해야 할 충분한 이유가 없으면 단일 개발 데이터베이스 복사본을 사용하고 모든 개발 환경에서이를 사용하도록 설정하는 것이 좋습니다.

이 접근 방식을 사용하면 개발 데이터를 최신 데이터로 주기적으로 새로 고칠 수 있으며 누군가가 엉망인 경우 다시 새로 고칠 수 있습니다.

또한 개발자들이 새로운 테이블을 만들어야하는 새로운 프로젝트에서 작업을 시작하는 상황을 상상해보십시오. 단일 개발 DB 사본이있는 경우 개발자 (또는 개발자)는 해당 테이블을 작성하고 테스트 데이터로 한 번만 채워야합니다. 이제 개발자들은 초기 테이블 구조가 최적이 아니며 변경이 필요하다는 것을 알고 있다고 상상해보십시오. 이 작업은 수십 개의 환경이 아닌 단일 DB에서 수행해야합니다.

이것은 내가 큰 프로젝트에 반복해서 사용되는 접근법이며 대부분의 경우 꽤 잘 작동합니다.


2
내가 일하는 상점에서 모든 개발자는 자신의 데이터베이스 사본을 가지고 있으므로 아무도 다른 사람의 발끝을 밟지 않습니다. 이것은 우리에게 아주 잘 작동했습니다. 데이터베이스를 처음부터 다시 작성하고 개발에 필요한 테스트 데이터로 채우는 스크립트가 있습니다. 단일 데이터베이스는 종종 일부 데이터베이스 영역에서 작업하는 사람들이 다른 사람들을 위해이를 깨뜨리는 데 문제가있었습니다. 그리고 큰 DB가 복원되는 동안 모두가 멈 춥니 다. 따라서 단일 데이터베이스를 갖는 것이 우수한 솔루션이 아닙니다. (TBH도 마찬가지입니다. 상황에 따라
다릅니다

동의했다. 호기심으로 DB가 얼마나 큰가요? 160GB 크기의 DB에서 이것이 어떻게 작동하는지 알 수 없습니다.
grekasius

물론 개발자 데이터베이스는 개발자가 작업하는 모든 것을 테스트하는 데 필요한 데이터의 하위 집합으로 의도적으로 작습니다. 성능 테스트와 같은 목적으로 별도의 (더 큰) 인스턴스가 사용됩니다.
Andrew Savinykh

데이터를이 템플릿에 한 번만 배치하기 위해 정기적으로 데이터를 업데이트 할 필요는 없습니다.
Itai Ganot

현재 DB에서 작은 샘플 데이터 세트를 작성할 수 있는지 살펴보십시오. 불행히도 여기에 직접적인 대답은 없습니다. 당신이해야 할 일은 가지고있는 데이터와 그 dev DB에 넣기로 선택한 것에 달려 있습니다.
grekasius

4

이것은 데이터베이스의 데이터 종류에 따라 크게 달라집니다. 경우에 따라 쉽게 할 수 있습니다

select * from table where date > ....

다른 경우에는 데이터 구조로 인해이를 분리 할 수 ​​없습니다. 결국, 그것은 혼합이 될 것이고 아마도 올바르게 얻기가 매우 어려울 것입니다.


2
특히 일부 데이터베이스에는 오래된 항목의 레코드를 참조하는 새 항목 (예 : <1 개월)이있을 수 있습니다 (예 :> 1 개월). 당신이 그것들을 다루는 방법은 전적으로 이러한 참조가 어떻게 설정되어 있는지에 달려 있으며 가장 기본적인 것 이외의 모든 사람에게는 불가능합니다.
Bob

0

최근 고객이 지난 30 일 동안 데이터베이스를 추출하려고하는 상황이있었습니다. 모든 테이블에 날짜 / 시간을 정의 할 수있는 동일한 속성이있는 경우

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

그러나 그는 서로 다른 테이블을 기존 데이터와 새로운 데이터와 혼합하려고했습니다. 그래서 이것은 그에게 해결책이 아니었지만 그것은 당신을위한 것일 수도 있습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.