1

ファブリックを使用して新しいバージョンのコードをサーバーにアップロードすると、いくつかのタスクが実行され、古いバージョンではなく新しいバージョンが提供されます。

これらのタスクの中には syncdb もありますが、これは、古いデータベース テーブルを含む新しいコード バージョン (または、新しく同期されたデータベースを含む古いコード バージョン) があるウィンドウがあることを意味します。

質問: データベースを手動でコピーし、コピーと同期してから、古いコード バージョンと元のデータベースを一度に置き換える必要がありますか?

これは非常に一般的な問題のように思えるので、この問題に対するツールまたは特定のアプローチが既にあるはずだと思います。誰か知っていますか?

(私のもう1つの懸念は、展開中に何かがうまくいかない可能性があることです。コードと同期されていない壊れたデータベースを持たずに、以前の状態にフォールバックしたいと思います)。

4

1 に答える 1

1

デプロイメントに db スキーマの移行が含まれている場合、ゼロ ダウンタイムを達成することは困難です。例として、etsy.com の人々は、インデックス化されたシャードされたマスターとマスターのペア、カスタムのシャード対応 ORM を使用し、データベースに主キー/タイムスタンプなどを生成させず、データベースに外部キーを強制しません。 http://codeascraft.etsy.com/2012/04/20/two-sides-for-salvation/

これは、展開のために計画されたダウンタイム (15 分であっても) を許容できる場合は、はるかに簡単です。( dbdeployなどのツールを使用してスクリプト化された db スキーマのアップグレードがあると仮定します)。

于 2012-06-18T03:47:31.897 に答える