2011-04-11 50 views
8

我對ASP.NET網站和MSSQL數據庫部署有疑問。我們主持了asp.net網站並開發了新版本,一些asp.net文件被改變了,數據庫被修改了一些。什麼是最好的爲什麼上傳新版本的網站和升級MSSQL數據庫沒有宕機?部署ASP.NET網站和更新MSSQL數據庫,零宕機時間

+0

網站的舊版本是否可以與新版本的數據庫一起使用? – 2011-04-11 08:10:48

+0

不,新數據庫版本有許多新字段,有些舊字段被刪除。 – Tomas 2011-04-11 08:11:42

回答

1

不這樣做。點。

ZERO停機安裝很難做到,並且涉及數據庫的多個副本,預先檢查它在分期工作中,謹慎編程和重新同步數據庫。

採取小的停機時間幾乎總是更好。在夜間長時間睡眠,早上2點部署。或早點醒來。確定租賃時間不便於您的用戶。

100%的正常運行時間對於執行時間的花費非常昂貴。除非這是一個嚴格的商業案例,否則偶爾的停機時間是一個非常理想的商業決策。

+1

100%是不可能的 – gbn 2011-04-11 09:08:10

+1

這是可能的。正在處理零計劃停機時間要求的系統。除了重大更新每年可能一次。不過,這是BRUTAL。對操作和工作的要求是可怕的。 – TomTom 2011-04-11 09:23:36

+1

「零計劃停機時間」......「除一年一次外」。與100%運行時間不一樣。 – NotMe 2011-04-22 17:08:52

12

我在過去的5年中管理了一個大型網站,每月發佈一次,並且在95%以上的時間內設置了零停機時間。不幸的是,關鍵在於確保數據庫始終向後兼容,但僅限於以前的版本,因此您有機會回滾。

所以,如果你打算刪除列,例如,您的應用程序依賴於:

  1. 更改應用程序代碼不依賴於列,並釋放(沒有除去列數據庫)。
  2. 下一個版本刪除列(因爲應用程序不再依賴它)。

它需要開發團隊的一些訓練,但是如果您有適當的環境設置(dev/test/staging/production),實現起來非常容易。

當你鬆開:

  1. 部署數據庫更改爲分期環境,這是因爲接近生產越好。最好使用SQL Compare和SQL Data Compare等自動化方式進行此操作,以便您知道數據庫與您的測試環境完全一致。
  2. 使用舊的應用程序執行「冒煙測試」,但使用新的數據庫模式,確保沒有在數據庫中引入重大中斷更改。
  3. 發佈您的應用程序代碼。
  4. 煙霧測試您的舞臺應用程序。
  5. 正式投入生產。

我們做的另一件事情是確保網站零停機時間是藍綠色部署。這涉及到每個網站有2個文件夾,更新一個,並且在IIS主目錄更新後切換。我在這裏發佈了博客:http://davidduffett.net/post/4833657659/blue-green-deployment-to-iis-with-powershell

0

即使是像salesforce.com和eBay這樣的大型網站。com已經安排了維護窗口,其中由於後端的變化,這些站點的至少部分在一段時間內不可用。

對於易趣而言,它的每個Thursday nig ht並持續4個小時,其中「某些功能在此期間可能會很慢或無法使用」。對於銷售人員,根據需要they schedule and notify users

根據您的網站,您可能最好安排一個1小時的窗口,在您的網站處於最低流量級別的某個深夜。在提前1周,提前1天和提前1小時提前通知用戶。

在使其脫機之前,請確保您從當前生產數據庫的副本在另一臺服務器上測試部署。這會讓你知道你可能遇到的任何問題,並讓你知道究竟需要多長時間。在通知用戶時將該數字加倍。多次運行測試以確保不僅需要花費時間,而且還要驗證數據一致性。

爲了獲得推送的更新,Duffman在很短的時間內並行運行版本方面有很好的答案。但是,它們通常是數據模型更改的原因,通常在部署時轉換所有現有數據通常會更好。運行此轉換可能會使在發生某些事務時無效並導致數據損壞。

經歷了許多「熱」生產推動,我可以100%肯定地說,我和我的客戶都不想再次處理這些問題。絕對沒有錯誤的餘地。