내 두 센트 : 나는 그것이 좋은 생각이라고 생각하지 않습니다. GIT는 "시간에 다른 지점에서 파일 집합의 저장 스냅 샷"와 같은 무언가를, 그래서 당신은 할 수 완벽하게 같은 뭔가를 GIT를 사용하지만, 그건 당신이 의미하지 않는다 해야한다 . GIT는 소스 코드를 저장하도록 설계 되었기 때문에 대부분의 기능이 빠져있을뿐 아니라 약간의 편의를 위해 많은 성능을 거래하게됩니다.
이것에 대해 생각하는 주된 이유는 "데이터와 코드의 사본을 동기화하여 유지하기"때문이며, 이는 코드의 버전 2.0과 버전 1.0과 다른 데이터베이스 스키마가 필요하다는 것을 걱정한다는 것을 의미합니다. . 더 간단한 해결책은 데이터베이스 스키마를 CREATE
Git 저장소의 소스 코드 와 함께 명령문 이있는 SQL 스크립트 세트로 저장하는 것 입니다. 그런 다음 설치 절차 중 일부는 이전에 설치된 데이터베이스 서버에서 해당 스크립트를 실행하는 것입니다.
이러한 -d 테이블 의 실제 내용 은 CREATE
소스 코드 버전과 관련이 없습니다. 다른 팀에서 서로 다른 회사에서 사용하는 서버 A와 서버 B에 소프트웨어 버전 1.0을 설치한다고 가정하십시오. 몇 주 후에는 스키마가 완전히 동일하더라도 테이블의 내용이 매우 다릅니다.
데이터베이스의 내용을 백업하고자하므로 덤프에 속하는 소프트웨어의 현재 버전으로 백업 덤프에 태그를 지정 하는 백업 스크립트를 사용하는 것이 좋습니다 . 스크립트는 소스 코드 버전 문자열에 액세스 할 수 있도록 GIT 저장소에 있어야하지만 덤프 자체는 버전 제어 시스템에 속하지 않습니다.
편집 :
질문에 동기를 부여한 원래 게시물을 읽은 후에 는 더 모호한 아이디어를 발견했습니다. 요점은 mysqldump
명령이 DB의 현재 상태를 일련의 SQL INSERT
문으로 변환하고 GIT가이를 업데이트하여 테이블 행만 가져올 수 있다는 것입니다.
mysqldump
이 때문에 일부는 소리 백업 방법 중 하나 의 MySQL의 설명서에 적혀. GIT 부분은 저자가 데이터베이스 서버 가 MySQL을 포함한 충돌로부터 복구하기 위해 트랜잭션 로그 를 유지한다는 것을 알지 못하는 곳 입니다. 되는 이 로그를 사용 하면 데이터베이스에 대한 증분 백업을 생성해야한다고,하지 GIT를. 이것은 무엇보다도 GIT 리포지토리를 무한대 이상으로 늘리지 않고 복구 후 로그를 회전하거나 플러시 할 수 있다는 이점이 있습니다 ...