2009-11-23 12 views
30

MySQL 데이터베이스의 버전 제어가 가능한지 궁금합니다.MySQL 버전 제어 - 서브 버전

나는 그러나 최신 거의 년 전에 전에이 질문은 요청 된 인식, 사물이 변화 속도 ...에

이 문제는 각 개발자가 자신의 아파치/MySQL은/​​PHP를 가지고오고있다 때로 데이터베이스를 편집하는 컴퓨터. 다른 모든 개발자에게 전자 메일을 보내고 테스트 서버 데이터베이스를 수동으로 편집해야하는 경우 다소 불편합니다.

이 문제는 어떻게 처리합니까?

감사

+0

DBV도 있습니다. http://stackoverflow.com/a/13837473/6309 – VonC

답변

15

이 그 자체로 MySQL의 관련 해결책이 아니다, 그러나 우리는 제품이라고 liquibase 성공을 많이 했어. (http://www.liquibase.org/)

많은 다른 데이터베이스 공급 업체를 대상으로하는 마이그레이션 솔루션으로, 모든 데이터베이스 변경 사항을 구성 파일에 코딩 할 수 있습니다. 모든 구성 변경 사항은 Subversion에 보관됩니다. 모든 구성이 XML 파일로 유지되기 때문에 다른 사람들의 변경 사항을 메인 라인 스크립트에 쉽게 병합 할 수 있으며 태그 및 분기와도 잘 작동합니다.

데이터베이스는 "데이터베이스 업데이트"명령을 실행하여 현재 개정 레벨까지 끌어 올 수 있습니다. 대부분의 변경 사항에도 데이터베이스 변경 사항을 롤백 할 수있는 기능이 있으므로 도움이 될 수도 있습니다. 마이그레이션을 실행하기 전에 현재 상태가되는지 확인하는 연습을 따르는 것이 좋습니다. 이렇게하는 것이 가장 쉽기 때문입니다.

마지막으로 프로덕션 딜리버리와 관련하여 모든 데이터베이스 변경 사항을 전체 SQL 스크립트로 출력하도록 선택할 수 있으므로 DBA가이를 실행하고 업무 분리를 유지할 수 있습니다.

지금까지 매력과 같이 작동했습니다.

+0

이것은 훌륭한 솔루션처럼 보입니다. - 대단히 감사합니다! – user103219

+0

많은 Linux 배포판에 내장 된 maatkit을 사용할 수도 있습니다. 그것은 작은 유틸리티 나이프 인 maatkit이며 다른 프로그램과의 종속성을 설정하지 않습니다. –

+0

Really cool Approach. – funktioneer

1

그럼 우리는 마이그레이션 파일의 모든 변경 사항을 유지하는 레일스를 사용합니다. 몇 가지 PHP 프레임 워크가 똑같은 일을한다는 것을 알고 있습니다 - 예를 들어 Symphony. 따라서 모든 변경 사항이 리포지토리 (사용자 수은)에 병합 될 때 개발시 데이터베이스에 적용되거나 마이그레이션에 적용된 모든 변경 사항을 볼 수 있습니다. 생산 책임자보다 전체 백업이 만들어진 후 생산 코드가 롤아웃됩니다. 그러나 이것을 처리하는 PHP 프레임 워크를 사용하지 않는다면 awied의 제안은 매우 흥미 롭습니다. 이전에 액체 기반에 대해 들어 보지 못했지만 확실히 확인해 보겠습니다.

1

데이터베이스의 버전을 완벽하게 처리하는 MyBatis라고하는 iBatis라는 도구가 있습니다.

그래픽 도구 대신 스크립트에 모든 변경 사항을 적용하는 것은 약간의 작업이 필요하지만 코딩에 익숙하다면 문제가되지 않습니다.

dev-test-prod와 같은 여러 데이터베이스가있는 경우 3 개의 환경 파일을 만들고 하나의 명령 줄 명령으로 하나의 환경 만 업데이트 할 수 있습니다.