長い間、私たちはプロジェクトのリポジトリ内にデータを保持してきました。すべてを data/sql の下に保持し、各テーブルには独自の create_tablename.sql および data_tablename.sql ファイルがありました。
2 番目のプロジェクトを Scalr にデプロイしたところ、少し面倒であることに気付きました。
デプロイ方法:
プロジェクトを 3 つのアーカイブ (データ、コード、静的ファイル) に分割するスクリプトの「packageup」コレクションがあり、それらは S3 の 3 つの個別のバケットに保存されます。
ロールが起動するたびに、ファイルの 1 つがダウンロードされ (ロールに応じて、データ、nfs、または Web)、「パッケージ解除」スクリプトが各ロールのすべてをセットアップし、データを mysql にロードし、nfs をセットアップします。 .
サーバー イメージを保存したくないので、このようにします。常にバニラ インスタンスから開始し、さまざまな社内ビルド スクリプトを使用してすべてをゼロからインストールします。起動時間は問題ではありません (9 分でファームを使用できるようになります)。
問題は、新しい開発ビルドをセットアップしようとするたびに、適切なバージョンのデータベースを見つけようとするのが面倒なことです (いつでも、1 つのプロジェクトに対して約 4 つの開発ビルドがあります)。また、本番環境に入ると、git が詰まり始めています。SQL ファイルのサイズが合計で約 500 MB になるからです。
質問は:
他の人はどのようにデータベースを管理していますか? データを本番環境から開発環境に簡単に移行できるものを探していましたが、開発環境から本番環境にデータを移行することもできましたが、何も見つかりませんでした。