2009-11-23 33 views
30

MySQLデータベースのバージョン管理が可能かどうかわかりませんか?MySQLバージョン管理 - Subversion

私は問題は、各開発者が自分の上のApache/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

本当にクールなアプローチ。 – funktioneer

1

私たちは、すべての変更を移行ファイルに保持するRailsを使用します。私は、いくつかのPHPフレームワークが同じことをしていることを知っています - 例えばSymphony。したがって、すべての変更がリポジトリ(ユーザーの水銀)にマージされると、開発中にデータベースに適用する必要があった、または適用された移行のすべての変更を見ることができます。フルバックアップが作成された後、プロダクション担当者がコードをプロダクションにロールアウトします。しかし、これを処理するPHPフレームワークを使用しないと、awiedの提案は非常に興味深いように聞こえます - 私は以前は液体ベースについて聞いていませんが、確かにチェックアウトします。

1

現在、データベースのバージョンを完全に処理するMyBatisというツールがあります。

グラフィカルツールではなくスクリプトですべての変更を加えるのは少ししかかかりませんが、コーディングに慣れていれば問題ありません。

複数のデータベース(dev-test-prodなど)がある場合は、3つの環境ファイルを作成するだけで、1つの環境を1つのコマンドライン命令で更新できます。

関連する問題