1. 程式人生 > >一次上線總結

一次上線總結

系統開發,測試結束,最後都期待著上線。上線完之後,就可以暫時告一段落,可以放鬆放鬆,做做自己愛做的事情。。。。但是,這次上線,是我有史以來最糟心的一次,今天寫此文章,就是給自己提個醒,以後上線必須注意的事項。我很感謝讓我跌倒在今天,而不是在我不可一世的將來,我必須重新梳理,坦然面對並牢牢記住。大笑

前提:

由於這次使用的資料庫是db2,這個資料庫也是我第一次接觸,之前都是使用oracle,一開始就覺得沒啥,反正都差不多,在這點上的大意,以及不上心,為後續的上線埋下了一顆炸彈。

上線:

時間

內容

17:30

打包檔案給運維人員,傳到伺服器上面去。。。簡單。信心十足。。。。。沒問題。很簡單,很快上線結束,回酒店睡覺。。。。。。。。。大笑

18:00

解壓打包檔案,修改.bash_profile 環境變數等內容。這個時候還是相當有信心的。。。沒問題。很簡單,很快上線結束,回酒店睡覺。。。。。。。。。大笑

18:20 將專案部署到tomcat7下,啟動服務,報了一堆錯誤,埠被佔了。沒事,小問題,改埠唄,之前都是用tomcat5,6。tomcat7也是第一次用,他們預設規定是用7,7就7啦,影響不大。改完埠,繼續啟動,還是報錯。那就檢視錯誤。。。。一堆莫名其妙的問題,服務啟動了,但是訪問服務,訪問不到。認真看了下,原來這個7是他們的閹割版的貓,我就懷疑這個貓是不是沒閹割乾淨。一直在我大腦徘徊。。。。吃飯啦。。。。。。害羞,那就先吃飯。。。。
19:00 吃完了,不能光我說他的貓有問題啊,得拿出證據。我把webapp下面,我的工程幹掉。接著啟動貓,啟動正常,繼續訪問服務,一樣是有問題,一樣不行。一段時間的探討,繼續給出理由吧,在webapp下面新建一個工程,新建WEB-INF ,拷貝web.xml,,新建inde.html.就是模擬一個最簡單的工程。。。繼續啟動,訪問,還是不行。哈哈哈。。。。。。。換隻貓來吧。。。。大笑
20:00 換來一隻貓,改完埠,先簡單跑起來,訪問服務,ok。啟動正常。接著把我們的工程放進去,重啟。。訪問。ok,成功啦。。。。心裡那個美啊
20:20 接著就做資料的初始化操作。。。你大爺的。。。。。出錯了。。。看資料庫,資料初始化成功了,但是儲存檔案的時候出錯了。。。這個時候閃過的一個想法就是,是不是sql指令碼有問題啊。。不可能啊,在測試環境上面,跑下,沒問題啊。檢視資料庫伺服器版本和測試環境會不會一樣,也是一樣的。。。幹啊。。。連線著試了好幾次,還是不行,今天人品tmd不行啊。。。。。冷靜下奧,,,去喝杯水。嘴巴幹啊。得意
21:00 在出現問題的時候,最重要的就是冷靜。。喝水啊!!!其實在喝水的過程中,雖然我一直看著窗外黑壓壓的一片,但是心裡一直在縷了。。。不著急,不要催,肯定哪裡搞錯了。10分鐘之後,坐下來,修改了jdbc.propertise配置檔案,將這個檔案配置錯誤,在測試環境做初始化,最後也是出現一樣的問題,資料初始化好了,但是儲存配置檔案出錯了。原因找到了。。。吼吼。。。解釋下原因:jdbc.propertise一開始裡面的配置檔案,是測試環境的,我一開始以為沒關係,以為他們這邊初始化資料是用A使用者進行初始化的,初始化成功之後,對B使用者進行授權,給B使用者許可權,最後使用的是B這個使用者,所以我開始想,反正還沒用到資料庫,沒關係,配置檔案裡面隨便配置下,等資料初始化好了,B使用者授權好了,再修改。成不想,在儲存配置檔案的時候,已經調到了資料庫,連線失敗,儲存檔案失敗。大爺的。。這個異常為什麼沒有拋呢。。。日誌裡面都沒看到。。哭。先解決問題吧。。。。
22:00 資料初始化成功了,看到了勝利的曙光了,後臺的部署太簡單了。10點了,睡意有點來了。。。。堅持下啊。解壓後臺服務系統(c寫的),修改,資料庫配置檔案,接著就是編譯啦。。這個沒事啦,make下而已。。。。oh。。no,編譯失敗。。。。看看啥子問題吧。沒bind許可權,那就賦權唄。繼續make,終於報出來了這個碉堡的問題:schema不對。。。。。。發火
這裡抱怨下啊:什麼鳥毛DB2啊,沒有資料還不能編譯,有資料了,還得有一大堆的許可權。最噁心的就是接下來的schema,你大爺的schema。。。。惱火啊。。。。
22:30 之前說了,資料庫是用A使用者初始化的,接著授權給B使用者。所以資料庫表的schema是A,而不是B。 這個就是後臺在編譯的時候遇到的問題。腫麼辦啊。。。db2 對我來說,完全不知道怎麼下手啊。。。找他們的DBA吧。
23:00 改初始化資料,修改下sql指令碼,把create table的指令碼加上schema B。 先做初始化,不對。。這樣子不夠。COMMENT 也得加上schema ,index也得加上。就這樣子來回倒騰,初始化完資料,12點了。。。困啊。平常這個時候,我媳婦早罵我,叫我早點睡覺了。
00:10 喝點水吧。。。真心累啊。這些運維的哥們真心好強啊。。晚上都不睡都可以。。。
00:20 繼續吧哥們。。。繼續make。。。。哭,哥啊。還是不行。。還是不行。。。腫麼辦啊。。。還是這個schema。又討論,又打電話。找他們領導談談,可不可以按測試環境那樣子,單獨為我們這個系統搞個使用者就得了啦,何必搞那麼麻煩啊。。。領導淡淡的說:安全問題。。。。。。神馬,神馬。。。。。。接著就到了1點了我開始緊張了。
01:00 那就在換個使用者做初始化吧。。。不用A使用者做初始化(A是管理員使用者)。指令碼發給他們DBA,他們自己做初始化,我們不管了。也不用我們程式帶的那個初始化方式了。。。哎啊哎啊。。。。等著,等著,就不知不覺到了2點了。。。他們領導走了,說:xx,今天又是上不了,就不要上了,質保測的是什麼問題啊,上線都不能上。系統沒上線,和質保什麼關係啊。。。忍著。
02:00 資料庫初始化好了。。就這麼著吧。。。趕緊make吧。。心想,一下應該ok了。。。。make。。。大哭。又是一個悲催的結果。又編譯不過去了。sqc裡面報錯了,嘿嘿,schema好像沒問題了。。。這個麻煩終於解決了。為毛sqc有問題。沒招了,打電話給同事,叫他起來看看什麼問題。。。
02:30 問題找到了,db2客戶端的版本不一樣。編譯依賴的庫不一樣。都這個點了。 不要鬧脾氣。上線要緊。重新裝個版本,no!!!運維的不裝了。那就改sqc吧。讓我同事一個個得改,改完繼續make,有錯繼續改。。。就這到了3點多了吧 。接著我基本上沒有時間概念了,有點模糊了。。。
03:30 終於make通過了。。。。。可是我頹了。那就啟動服務吧。。。
04:00 系統,驗證過程。。。。。基本沒問題了,心放下來了。。。。忽然,叫了我一聲,我心一抖,一顫。又有問題了。插入對方庫的一個sql出錯了。異常。那就看日誌吧。。。。報的code,我也不懂,就上網找。sql打出來。。。。依然我解決不了。sql沒問題。我再一次想到了db2的許可權。找他們的dba吧。。。找啊找啊找啊。。。4:30 了應該有了。困了不行。泡個咖啡。終於,他們找到了問題,他們的一次觸發器的問題。我根本沒心思聽了。。解決掉吧。。。求求你了。
05:00 這個問題解決了。系統也基本上都驗證過了。終端也驗證過了。。。。我現在就想躺下,睡覺。快6點了。我先撤了。。。。

就這樣子,在不斷的出問題,不斷解決問題的過程中,系統上線了。有史以來最悲催的一次上線。。。但是也是讓我最為深思,反省的一次上線。

必須給自己做一個正確的上線指導,必須制定一個正確的上線步驟,必須有一個非常有效的上線溝通。

1,去客戶現場測試的時候,測試環境搭建,必須記錄下linux伺服器的版本,型別。資料庫伺服器和客戶端版本,型別。應用伺服器版本。

2,系統使用者的許可權,資料庫使用者的許可權。資料庫使用者是否是獨立使用者。訪問對方資料的許可權。

3,正式環境是否什麼觸發器的控制。

總之:測試環境什麼樣的環境,正式環境也必須什麼樣的環境(基本不可能)。。。。有不一樣的地方,也要評估它的風險性。做到提早溝通。引以為戒。

上線本來是一件溫暖美好的事情,可這一切被我打破了,我的錯誤行為不配得到原諒,我造成的傷害難以彌補,但我想彌補,必須彌補。所以我回去倒頭就睡。。。睡到12點多起來,心裡擔心繫統有其他問題,手機開機了。。。害羞,我還是相當靠譜的。