Repolode
golang-migrate

golang-migrate/migrate

複数のデータベースに対して順序付きのスキーマ変更を適用できる、CLIとライブラリを備えたGo製のマイグレーションツール。

スター
18,983
フォーク
1,618
未解決の Issue
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ライブラリとしてインポートしたりできます。ライブラリでは独自のデータベースクライアントとロガーを渡せるほか、マイグレーションの一部だけが適用される事態を避けるための、グレースフルな停止にも対応しています。

主な機能

  • 01upとdownのマイグレーションファイルを、バージョン順に適用します。
  • 02PostgreSQL、MySQL、SQLite、MongoDB、Spannerなど、多数のデータベースに対応しています。
  • 03ファイルシステム、埋め込みデータ、Gitホスティングサービス、クラウドストレージからマイグレーションを読み込みます。
  • 04CLI、Dockerイメージ、Goライブラリを提供します。
  • 05ライブラリとして使う場合、既存のデータベースクライアントとカスタムロガーを指定できます。

ユースケース

  • PostgreSQLまたはMySQLを利用するGoサービスのスキーマ変更をバージョン管理する。
  • CI/CDやコンテナのデプロイパイプラインのステップとしてマイグレーションを実行する。
  • マイグレーションをGoバイナリに埋め込み、アプリケーションと一緒に配布する。
  • 1つのツールで複数のデータベースエンジンにまたがるスキーマ変更を管理する。

クイックスタート

  1. 1

    スタートガイドを読み、記載されている手順に従ってCLIをインストールしてください

  2. 2

    migration directoryのプレースホルダーを置き換えて、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 は今もメンテナンスされていますか?
半年以内に更新あり。migrate の最終コミットは 2026年9月9日 です。
migrate は何に使えますか?
PostgreSQLまたはMySQLを利用するGoサービスのスキーマ変更をバージョン管理する。 CI/CDやコンテナのデプロイパイプラインのステップとしてマイグレーションを実行する。 マイグレーションをGoバイナリに埋め込み、アプリケーションと一緒に配布する。 1つのツールで複数のデータベースエンジンにまたがるスキーマ変更を管理する。
migrate のインストール方法は?
スタートガイドを読み、記載されている手順に従ってCLIをインストールしてください migration directoryのプレースホルダーを置き換えて、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 の数値は毎日更新されます。

関連プロジェクト