2017-04-19 7 views
2

これは簡単な質問であれば謝ります。一人で検索して回答を見つけることは困難でした。Postgres - devデータベースからライブバージョンへの変更を配備する方法

devデータベースからライブバージョンへの変更を展開するための良いワークフローは何ですか?

私のアプリケーションのデータベースは、Herokuで動作するPostgresです。定期的にユーザーのコンテンツに更新されます。私はローカルで実行されているdevのバージョン(古いコンテンツ)を持っています。

ローカルデータベースに新しいテーブルを作成しました。ライブを展開したいと思います。ライブサーバー上のすべての作業を複製せずに、ローカルコピーを複製せずに、これを行うにはどうすればよいですか?

ありがとうございました!

答えて

2

TL; DR

に使用Flyway SQLスクリプトのあなたのコレクションを自動的に適用されます。

用語「データベースの移行」データベースの移行は、生産マシンに上のこのテストの開発からデータベースの構造への変更を動かすの雑用とを記述するために登場しています。

  • これまで、開発者と管理者はこれを特別な方法で実行し、SQLとコードの断片と希望と祈りをまとめました。
  • 近年では、これを組織化され、信頼性が高く、再現性があり、テスト可能で自己文書化するプロセスに変えるいくつかのツールが登場しています。

フライウェイ

Flywayプロジェクトは、データベースの更新に使用するSQLスクリプトとJavaのjarファイルのシリーズを追跡するためのJavaベースのキットです。

ここには特別な魔法はありません。このツールは、SQLスクリプトにシーケンス番号を付けるために名前付きのファイルを検索します。このツールは、最後に適用されたスクリプトの番号を含むメタデータを格納するためにデータベース内に余分なテーブルを作成します。このツールは、存在する新しいファイルをスキャンして適用し、最後に適用されたスクリプトの番号でメタデータテーブルを更新します。

導入は、最新のSQLスクリプトをデプロイメントマシンに移動して、Flywayにその作業を任せることを意味します。

もう1つの利点は、テストで使用するためにデータベースを特定のポイントにすばやく再構築することです。同様に、データベースを正しい形に自動的に保つために、継続的な統合で使用するのに適しています。

これらの特典の代価は規律です。 は絶対にでなければならず、データベースの構造の中で即座に変更を加える必要があります。すべての変更は、SQLスクリプト(およびオプションでjarファイルのJavaコード)として記述し、Flywayを介して適用する必要があります。

データベースの作成の最初から使用したほうが簡単です。しかし、既存のデータベースでの使用を開始するために「ベースライン」することもできます。

Flywayには、コマンドラインツールとJava APIインターフェイスが含まれています。したがって、Java以外のアプリケーションでも、Flywayを利用できます。

オープンソースで、無料です。 Postgresを含む多くのデータベースをサポートします。

LiquiBaseを

​​プロジェクトはフライウェイの目的で非常に似別のツールです。

+0

flywaydb.comが解決しませんでした。 flywaydb.orgはthoを動作させます。 – jamie

+0

@jamie固定URL。参考までに、スタックオーバーフローについては、このようなエラーを修正するための答えを直接編集することは大歓迎です。 –

1

このタスクでは、PostgreSQL用のEMS DB Comparerを使用します。残念ながら、それは無料ではありませんが、私は何年も前より良い選択肢を見つけることができません。 2つのDBを比較し、create/alter/etcスクリプトを生成できます。かなり簡単で、たくさんのオプションがあります。

関連する問題