web-dev-qa-db-ja.com

MySQLサーバーから先月の値を抽出し、それらの値から新しいデータベースを構築することは可能ですか?

開発用仮想マシンテンプレートを作成する割り当てがあります。

新しい開発者が製品ごとに開発できるように、会社の製品ごとにMySQLデータベースをサーバーに追加する必要があります。

ほとんどのデータベースは1GB未満です。

しかし、私は巨大な(約160G)データベースをいくつか持っていますが、作成しようとしているテンプレートのサイズには制限があり、そこに160GBのDBを追加するのは合理的ではありません。

したがって、たとえば先月の値をこの巨大なデータベースから抽出してサーバーに追加し、開発者がこのデータベースでの作業がどのようなものかを「感じる」ことができるようにするための適切な方法を見つけようとしています。

そのようなことをすることは可能ですか、そしてそれはどのように行われますか?ありがとう!

編集:

残念ながら、すべての開発データベースを保持する別のメインDBサーバーのオプションはありません。また、データを定期的に更新する必要もありません。本番サーバーと同じデータを(ランダムな期間で)提示する必要があります。新しい開発者のためのサンドボックス環境。

8
Itai Ganot

私が正しく理解していれば、開発環境ごとに個別のDBコピーを作成することを計画しています。

これは小さなデータベースでは実行可能かもしれませんが、大きなDBではうまく機能しません。したがって、環境ごとに個別のDBをセットアップする本当に正当な理由がない限り、開発データベースの単一のコピーを用意し、それを使用するようにすべての開発環境を設定することを検討する方がよい場合があります。

このアプローチにより、開発DBを最新のデータで定期的に更新でき、誰かがそれを台無しにした場合は、もう一度更新することができます。

また、開発者が新しいテーブルの作成を必要とする新しいプロジェクトに取り組み始める状況を想像してみてください。開発DBのコピーが1つしかない場合は、(または開発者が)それらのテーブルを作成し、テストデータを1回だけ入力する必要があります。ここで、開発者が初期テーブル構造が最適ではなく、変更する必要があることに気付いたと想像してください。繰り返しますが、これは、おそらく数十の環境ではなく、単一のDBで実行する必要があります。

これは、大きなプロジェクトで何度も使用されているのを見たアプローチであり、ほとんどの場合、かなりうまく機能します。

8
grekasius

これは、データベース内のデータの種類に大きく依存します。場合によっては、それは同じくらい簡単かもしれません

select * from table where date > ....

他の場合では、データの構造のためにこれを分離することは不可能です。結局、それはおそらくミックスであり、正しく理解するのは非常に難しいでしょう。

4
Sven

最近、顧客がデータベースの過去30日間を抽出したいという状況が発生しました。すべてのテーブルに同じ属性があり、日時を定義できる場合は、

mysqldump --where = 'datetimefield> "2014-06-28"'

しかし、彼はさまざまなテーブルを古いデータと新しいデータと組み合わせたいと考えていました。それで、これは彼にとって解決策ではありませんでしたが、あなたにとっては解決策かもしれませんか?

0
shinguz