web-dev-qa-db-ja.com

MySQLバージョン管理-Subversion

MySQLデータベースのバージョン管理が可能かどうか疑問に思います。

私はこの質問が以前に尋ねられたことを理解していますが、最新のものはほぼ1年前であり、状況は変化します...

問題は、各開発者が自分のコンピューターにApache/MySQL/PHPを持っていて、データベースを編集することがあるということです。他のすべての開発者に電子メールを送信してから、テストサーバーデータベースを手動で編集する必要がある場合は、かなり不便です。

この問題にどのように対処しますか?

ありがとう

31
user103219

これ自体はMySQL関連のソリューションではありませんが、liquibaseと呼ばれる製品で多くの成功を収めています。 ( http://www.liquibase.org/

これは、多くの異なるデータベースベンダーを対象とする移行ソリューションであり、すべてのデータベース変更を構成ファイルにコーディングできます。これらはすべてSubversionに保持されます。すべての構成はXMLファイルに保持されるため、他の人の変更をメインラインスクリプトに簡単にマージでき、タグやブランチとうまく連携します。

「データベースの更新」コマンドを実行すると、データベースを現在のリビジョンレベルに上げることができます。ほとんどの変更には、データベースの変更をロールバックする機能もあります。これも役立ちます。移行を実行する前に最新の状態になっていることを確認する方法に従うことをお勧めします。これが最も簡単な方法です。

最後に、本番配信に関しては、すべてのデータベース変更を完全なSQLスクリプトとして出力することを選択できるため、DBAはそれを実行し、職務の分離を維持できます。

これまでのところ、それは魅力のように機能しました。

16
awied

データベースのバージョンを完全に処理するiBatisと呼ばれるツールがあります。現在はMyBatisと呼ばれています。

グラフィカルツールではなく、スクリプトですべての変更を行うには少し手間がかかりますが、コーディングに精通している場合は問題ありません。

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

1
Yves Vindevogel

Railsを使用すると、移行ファイルのすべての変更が保持されます。いくつかのPHPフレームワークが同じことを行うことはわかっています。たとえば、Symphonyです。すべての変更がリポジトリにマージされると(ユーザーはMercurial)、開発中のデータベースに適用する必要がある、またはデータベースに適用された移行のすべての変更を確認できます。完全バックアップ後に本番環境にコードをロールアウトする担当者よりもただし、これを処理するPHPフレームワークを使用しない場合、awiedの提案は非常に興味深いものに聞こえます。Liquidbaseについては聞いたことがありませんが、必ずチェックします。

1
konung