버전 관리되는 SQL 파일이나 Go 함수로 데이터베이스 스키마 변경을 관리하는 CLI 및 Go 라이브러리입니다.
golang-migrate/migrate
여러 데이터베이스에서 순서가 지정된 스키마 변경을 적용하는 CLI 및 라이브러리 기반 Go 데이터베이스 마이그레이션 도구입니다.
- 스타
- 18,983
- 포크
- 1,618
- 열린 이슈
- 492
- 마지막 커밋
- 지난달
어떤 프로젝트인가요?
migrate는 로컬 파일 시스템, S3, GitHub 같은 소스에서 버전이 지정된 마이그레이션 파일을 읽어 대상 데이터베이스에 순서대로 적용합니다. 각 마이그레이션은 up 파일과 down 파일 한 쌍으로 구성되어 변경 사항을 적용하거나 되돌릴 수 있습니다. 실행은 데이터베이스 드라이버가 담당하고, 핵심 로직은 순서와 상태 관리를 한곳에서 처리합니다.
PostgreSQL, MySQL 및 MariaDB, SQLite, MongoDB, Cassandra, Neo4j, Google Cloud Spanner, CockroachDB, ClickHouse, SQL Server 등 다양한 데이터베이스를 지원합니다. 마이그레이션 소스로는 파일 시스템 경로, io/fs, 임베디드 바이너리 데이터, GitHub, GitLab, Bitbucket, AWS S3, Google Cloud Storage를 사용할 수 있습니다.
독립 실행형 명령줄 도구로 실행하거나 공식 Docker 이미지를 사용하고, Go 라이브러리로 가져와 사용할 수도 있습니다. 라이브러리에 자체 데이터베이스 클라이언트와 로거를 전달할 수 있으며, 마이그레이션이 중간 상태로 남는 일을 방지하는 데 도움이 되는 graceful stop도 지원합니다.
핵심 기능
- 01버전 순서에 따라 up 및 down 마이그레이션 파일을 적용합니다.
- 02PostgreSQL, MySQL, SQLite, MongoDB, Spanner를 비롯한 여러 데이터베이스를 지원합니다.
- 03파일 시스템, 임베디드 데이터, Git 호스팅 서비스, 클라우드 스토리지에서 마이그레이션을 읽습니다.
- 04CLI, Docker 이미지, Go 라이브러리를 제공합니다.
- 05라이브러리로 사용할 때 기존 데이터베이스 클라이언트와 사용자 지정 로거를 전달할 수 있습니다.
활용 사례
- PostgreSQL 또는 MySQL을 사용하는 Go 서비스의 스키마 변경 사항을 버전 관리합니다.
- CI/CD 또는 컨테이너 배포 파이프라인의 단계로 마이그레이션을 실행합니다.
- 마이그레이션을 Go 바이너리에 포함해 애플리케이션과 함께 배포합니다.
- 하나의 도구로 여러 데이터베이스 엔진의 스키마 변경 사항을 관리합니다.
빠른 시작
- 1
시작 가이드를 읽고 안내된 대로 CLI를 설치하세요
- 2
마이그레이션 디렉터리 플레이스홀더를 바꿔 Docker로 마이그레이션을 실행하세요
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
사용 전 알아둘 점
- 프로젝트 메타데이터에 라이선스가 명확하게 표시되어 있지 않으므로, 사용하기 전에 저장소의 라이선스 조건을 확인하세요.
토픽
자주 묻는 질문
- migrate은(는) 무엇인가요?
- 여러 데이터베이스에서 순서가 지정된 스키마 변경을 적용하는 CLI 및 라이브러리 기반 Go 데이터베이스 마이그레이션 도구입니다. migrate는 로컬 파일 시스템, S3, GitHub 같은 소스에서 버전이 지정된 마이그레이션 파일을 읽어 대상 데이터베이스에 순서대로 적용합니다. 각 마이그레이션은 up 파일과 down 파일 한 쌍으로 구성되어 변경 사항을 적용하거나 되돌릴 수 있습니다. 실행은 데이터베이스 드라이버가 담당하고, 핵심 로직은 순서와 상태 관리를 한곳에서 처리합니다.
- migrate은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- migrate은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- migrate은(는) 아직 유지보수되고 있나요?
- 6개월 이내 업데이트. migrate의 마지막 커밋은 2026년 9월 9일입니다.
- migrate은(는) 어디에 사용할 수 있나요?
- PostgreSQL 또는 MySQL을 사용하는 Go 서비스의 스키마 변경 사항을 버전 관리합니다. CI/CD 또는 컨테이너 배포 파이프라인의 단계로 마이그레이션을 실행합니다. 마이그레이션을 Go 바이너리에 포함해 애플리케이션과 함께 배포합니다. 하나의 도구로 여러 데이터베이스 엔진의 스키마 변경 사항을 관리합니다.
- migrate는 어떻게 설치하나요?
- 시작 가이드를 읽고 안내된 대로 CLI를 설치하세요 마이그레이션 디렉터리 플레이스홀더를 바꿔 Docker로 마이그레이션을 실행하세요: docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
- migrate은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/golang-migrate/migrate
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
팀과 환경 전반에서 일반 SQL 데이터베이스 마이그레이션을 관리하는 경량 프레임워크 독립형 CLI 도구입니다.
JDBC 및 ODBC 드라이버를 통해 100개 이상의 데이터베이스를 지원하는 무료 멀티플랫폼 데스크톱 SQL 클라이언트이자 데이터베이스 도구입니다.
40개 이상의 데이터베이스를 지원하는 무료 로컬 우선 AI 보조 데이터베이스 클라이언트 및 SQL 작업 공간으로, 데스크톱·웹·Docker·CLI에서 사용할 수 있습니다.
SQL 쿼리를 읽고 타입 안전한 Go, Kotlin, Python, TypeScript 코드를 생성하는 SQL 컴파일러입니다.
SQL 데이터베이스 전반에서 테이블, 컬럼, 결과 타입을 자동 완성하는 타입 안전한 TypeScript SQL 쿼리 빌더입니다.