web-dev-qa-db-ja.com

さまざまなMySQLインスタンスを使用してチーム開発する良い方法はありますか?

これは初心者の質問かもしれませんが、同僚と私はプロジェクトに取り組んでいます。私たちの状況に関するいくつかの背景は次のとおりです。

  • オフィス内の集中型gitサーバーを使用してバージョンを管理しています。
  • PHPでコーディングするため、ローカルのApacheインスタンスでオフラインでコードを試します。
  • 職場ではローカルのMySQLインスタンスを使用しています。

私たちのクライアントは少し要求の厳しい人であり、要件を2回以上変更しています。主な問題は、データベース内の何かを変更する必要がある場合、他のインスタンスを機能させるために、他のサーバー(他のチームメイトのコンピューター、中央サーバー...、そしてもちろんクライアントのサーバー)にクリーンダンプを作成する必要があることです。あまりにも。

私の質問は、ローカルデータベースを同期する方法はありますか(現時点ではクライアントのデータベースは気にしません)gitまたは他のユーティリティを使用して同僚のgitを作成します変更をプッシュすると、サーバーとデータベースが最新になりますか?それが不可能な場合は、ローカルに保存されているMySQLデータベースを操作するためのより良い方法を知っていますか?前もって感謝します。

PS:さまざまな機能をテストし、さまざまな要素を格納しているため、中央データベースを1つだけ使用することは有効なソリューションではありません。

4
Korcholis

プロジェクトで常に最初にすべきことは、ビルド、デプロイ、リリースのプロセスを自動化することです。

これはあなたの場合を意味します:

  1. 新しいDDLを使用して、クリーンな状態からデータベースのセットアップを自動化します。
  2. デフォルトデータのこの新しい状態のDDLへのロードを自動化します。
  3. データのダンプを自動化して、1つのステップで再インポートできるようにします。
  4. 新しいDDLを使用して既存のスキーマのアップグレードを自動化します。
  5. 必要に応じて、古いスキーマから新しいスキーマへのデータの移行を自動化します。

自動ビルドスクリプトからこれらすべてを目標として利用できるようにして、単一のコマンドラインビルドでコードを作成し、データベースを構成できるようにします。

コードのインストールも自動化してください。LinuxではRPMまたはDebianパッケージが必須です。パッケージマネージャー内からの更新シナリオには、上記のスクリプトを活用してください。

これらは、bashスクリプトから、プラグインを備えたMavenのようなものまで、プラットフォームに依存しない方法で実行できます。可能であれば、特定のGUIツール。これは非常に一般的な問題領域であり、環境に固有の活用が可能なほぼすべての可能な言語で優れたソリューションがあります。

表示されない場合、繰り返し発生するテーマは自動化です。チームの1人だけが、上記のタスクを1回実行する必要があり、他のすべての人が自分の作業から利益を得ることができます。自動化は 力の乗数 です。チームが小さければ小さいほど、時間的に乗数の比率が大きくなります。

5
user7519

他の場所 でこれについて質問があり、それに答えて私は長いスクリードを書きました。あなたはそのスレッドを読むのを楽しむかもしれません。

簡単に言うと、私の答えは、(a)データベースを最初からクリアしてすばやく再構築するプロセス、(b)このプロセスにフィードするデータファイルのセットが必要であり、ソース管理下にあることです。これらのファイルに変更を加えるたびにデータベースを再構築する作業プロセス。

これは私の会社が行っていることであり、再構築プロセスを迅速に保つことができる限り、それは非常にうまく機能します。

2
Tom Anderson