2012-01-14 5 views
1

テナントごとに別々のデータベースを持つマルチテナントシステムがあります(スキーマとアプリケーションコードは同じです)。更新プログラムをテナントに公開するにはどうすればよいですか?デプロイメントプロセスは自動化されていますが、テナントデータベースごとに更新スクリプトが実行されている間は、システム全体をオフラインにする必要は特にありません。 (特に、1人のテナントがシステムのデータのために予期せぬ問題を抱えている(明らかに避けようとするもの)。マルチテナントのウェブサイト、別々のデータベース - スキーマ/共有データの更新をどのように公開するのですか?

人々はこれに対してどのような戦略を成功させましたか?別々にアップグレードされた個別のWebサイトインスタンスで各テナントを実行すると、保守オーバーヘッドは増えますが、アップグレードの際に問題が発生する可能性があります。長期的にどれが痛みが少ないのだろうか?ありがとう。

+0

あなたの問題の説明からは、[_マルチテナント_セットアップ](http://whatis.techtarget.com/definition/multi- talancy)ではなく、_single-tenant_セットアップがあるようです。 – Gruber

+0

@ Gruberデータベースインスタンスは別々ですが、アプリケーションインスタンスが1つしかありません。おそらくマルチテナントであるかどうかについてのセマンティクスになるでしょうか? –

答えて

2

まさにこの問題に対処する私たちの方法は:

  • は、すべてのテナントサイトが古いバージョン
  • を指しているとの2つのインスタンス、古いコードを実行している1、1つの、新しいコード
  • スタート(明らかに)持っていますテナント(多分、自動的)
  • が....
  • 一時的
  • にDBをコピー
  • サイクル.... DBコピー
  • OND実行して更新.... WA SH、リンス、データが正常に変換されるまで繰り返さ
  • ....一時的に変換されたDB
  • で新しいコードをテスト....テナントサイトをオフライン
  • に乗り、一時DB
  • を....ドロップ... 。実際のDBで実行し、更新は
  • が....新しいコードの組み合わせにポイントテナントサイト/ DB
  • エンドサイクル

ティを変換する(直前の変更は、新たな問題を導入しない限り、この作業をする必要があります)実際にはベーコンはかなり頻繁に保存されていました。最初の数人のテナントに問題が発生しやすくなり、バグフィックスや新しいコードで2つの問題が発生する可能性があります。

+0

切り替え処理中に発生するデータベース更新をどのように処理しますか?データベースのコピーには時間がかかります。 –

+0

私たちが(mysqldumpとfriends)を初めてコピー(temp DBにコピー)すると、更新/チェックスクリプトの一部として矛盾が見られます。 2回目(実際のスイッチオーバー)には、この1人のテナントのためにアプリケーションをオフラインにします。 –

+0

ユーザーを新しいインスタンスにどのようにルーティングしますか? –

関連する問題