Martin Fowlerは、このテーマに関する私のお気に入りの記事http://martinfowler.com/articles/evodb.htmlを作成しました。スキーマダンプをalumbとしてバージョン管理下に置かないことを選択しました 実稼働データベースをアップグレードする簡単な方法が必要なため、他の人が提案しています。
単一の本番データベースインスタンスを持つWebアプリケーションの場合、次の2つの手法を使用します。
データベースアップグレードスクリプト
スキーマをバージョンNからN+1に移動するために必要なDDLを含むシーケンスデータベースアップグレードスクリプト。 (これらはバージョン管理システムに組み込まれます。)_version_history_テーブル。
のようなものです。create table VersionHistory (
Version int primary key,
UpgradeStart datetime not null,
UpgradeEnd datetime
);
新しいバージョンに対応するアップグレードスクリプトが実行されるたびに、新しいエントリを取得します。
これにより、存在するデータベーススキーマのバージョンを簡単に確認でき、データベースアップグレードスクリプトが1回だけ実行されます。繰り返しますが、これらはありません データベースダンプ。むしろ、各スクリプトは変更を表します あるバージョンから次のバージョンに移動するために必要です。これらは、本番データベースに「アップグレード」するために適用するスクリプトです。
開発者サンドボックスの同期
- 本番データベースをバックアップ、サニタイズ、および縮小するためのスクリプト。本番DBにアップグレードするたびにこれを実行します。
- 開発者のワークステーションでバックアップを復元(および必要に応じて微調整)するためのスクリプト。各開発者は、本番DBにアップグレードするたびにこのスクリプトを実行します。
注意:自動テストはスキーマは正しいが空のデータベースに対して実行されるため、このアドバイスはニーズに完全には適合しません。