以優化之名

2021-06-07 18:55:07 字數 2696 閱讀 2670

以優化之名

儲存優化導致表空間誤刪除案例

一人蛇先成,引酒且飲之,乃左手持卮,右手畫蛇曰:「吾能為之足!」為蛇足者,終亡其酒。

——《戰國策•齊二》

嘉招欲復杯中淥,麗唱仍添錦上花。

——宋•王安石《即事》

寧錦上添花,勿畫蛇添足。

在很多資料災難中,我們看到很多原本是可有可無的操作,或者是錦上添花的工作,最後卻由於處置不當、準備不足或認知不夠,導致了資料災難,當事人後悔不迭。

所謂資料無小事,在和資料打交道時,我們一定要謹而慎之,切勿一失足而至追悔莫及。

災難描述

2023年12月31日,我們接到乙個緊急的資料救援請求。據粗略了解,事情大致是這樣的。

1.      年底,開發商幫助使用者進行資料庫效能優化。

2.      優化內容之一是儲存優化。

3.      儲存優化的方法是進行表空間重建。

4.      開放商先刪除表空間(成功),然後重建表空間(失敗)。

5.      使用者發現刪除的表空間中的資料未備份。

6.      災難形成。

對於這則案例,如果資料庫不進行優化,那麼穩定執行的問題還是不大的。然而,準備不足的這些維護操作,則使資料庫徹底陷入了癱瘓的困境。

同樣在2023年底,我們還遇到了另外一則完全類似的案例,情形大致如下。

1.      客戶資料庫的安全性要求極高。

2.      客戶要定期接受上級單位的例行檢查。

3.      為了滿足安全評估要求,客戶決定對系統進行全新重構。

4.      在匯出備份之後,將主機格式化並重建資料庫。

5.      在重建後恢復時發現,匯出的備份檔案有錯誤,無法匯入資料庫中。

6.      災難形成。

現場分析發現,匯出檔案大小是正確的,但是通過十六進製制模式檢視發現檔案末尾全是空白,沒有資料,推測可能是通過行動硬碟備份時出現了問題,未正常退出或插拔行動硬碟導致資料損失。這個匯出檔案是不足以用來恢復了。後來通過儲存級別的恢復,在格式化後的硬碟上找到了之前的歷史備份,最終總算恢復了大部分資料。

有時乙個良好的設想因為執行不當可能成為災難的源頭,然而在完成了基本的保障之後,無為而治在有些情況下卻能保證資料庫的安全穩定執行,折騰是資料災難之源。

案例警示

這兩個資料災難帶給了我們如下教訓。

1.      在任何破壞性操作之前,必須嚴格驗證備份的有效性

這裡所說的破壞性操作包括刪除表空間、資料檔案、資料表等。

嚴格驗證備份的有效性,如果可能,應該進一步演進到,操作之前進行全面有效的備份。有時候不要相信別人傳達的諸如已經備份、存在備份、有人備份之類的資訊,因為不同方式的備份可能不適合你的操作恢復,別人的備份也可能存在你所不知道的問題,一旦需要的資料未成功備份,災難就會出現。

所以,重要的環節需要親自確認,避免傳遞錯誤帶來的不確定性。

2.      在可能情況下保留多份備份介質

很多事實顯示,有時候單純乙份備份是不可靠的,磁帶、行動硬碟等介質的備份更不可靠。所以,如果可能,對於重要資料的備份,最好保留多份介質,尤其是要對原有環境進行破壞、遷移、重構等情況時。

通常的備份策略,還應當結合物理備份和邏輯備份、表結構備份等來實施。對於極其重要的核心表,要保持經常性備份,多乙份備份就多乙份安全。

3.      避免使用無法把握的新技術

前述案例的客戶使用了自動儲存管理技術(oracle asm)。asm使用裸裝置,這造成了使用者無法直接看到資料檔案,也就無從直接進行檔案級別的複製備份,因而增加了備份的複雜性和難度。

顯然使用者和開發商運維人員都不能夠深入了解這一技術。從這個意義上說,並非先進的技術就適合任何環境,好的技術要和好的運維結合起來才能為使用者創造價值。客戶在選擇oracle資料庫的同時,必須要同時接受因此而可能支付的執行維護成本。

當然,系統架構人員也應當從使用者的實際出發,為使用者建議適合的系統架構,只有真正適合使用者的技術才是最好的技術。

4.      必須有人能夠把握技術全域性

在這個案例中,顯然沒有人能夠從整體方案上把握全域性。如果在核心的資料運維中沒有人能把握全域性,那麼任何操作都應當極其慎重,或者乾脆選擇放棄進行破壞性資料維護操作。

典型地,如果沒有回退方案,任何破壞性的資料操作都不應當進行。

5.      制訂方案並且按照方案的步驟執行

重要的維護工作應當制訂方案,並且列出明確的操作步驟和命令。這些步驟和命令應當是通過測試驗證的。在執行過程中,遵循方案的步驟來進行相關操作,一旦遇到異常必須停下來進行分析或者回退。

嚴格對資料負責,不因主觀的重要和非重要判斷行事。

6.      資料庫維護操作應當通過命令列完成,避免使用圖形化工具

雖然圖形化工具會為工作帶來便利,但是其背後隱藏著不確定性和風險。通常使用者很難確定圖形後面預設和非預設的選項,任何乙個錯誤的勾選都可能使情況變得複雜。

鑑於已經有很多使用者在圖形工具上遭遇挫折,我們建議使用者通過命令列完成對資料庫的維護操作,比如使用sql*plus工具。命令行會迫使你明確所發出的每乙個指令,無形中可減少風險的出現。

明確工具的風險和用途,這也是對dba的乙個專業素質要求。

充足的資料備份和良好的維護計畫是資料安全的守護者,在資料運維中要時刻注意。

本文節選自《oracle dba手記4:資料安全警示錄》一書

蓋國強著

電子工業出版社出版

圖書詳細資訊:

以鳥獸之名

我們連家鄉都回不去了,只能在夢裡回去。所以我就想著,如果能寫出點什麼,我這一生多少也算有了一點意義。當我們在談家鄉的時候,我們究竟在談什麼?通常如果被問你的家鄉是 我們會回答我來自xx 地名 這是家鄉的第一層意義,家鄉是生你養你的地方的指代 第二層則是有你的親人所在的地方,就是你的家鄉 第三層意義則...

以實戰之名盡兵法之意

從大海到水滴 以實戰之名盡兵法之意 從大海到水滴,以之戰之名盡兵法之意。小草記zac老師 網路營銷實戰密碼 題記 早就該寫個東西紀念下zac老師的書了。子曰 獨樂樂不如眾樂樂。將這本書推薦給其他對網路營銷感興趣的朋友,即幫了朋友,也傳播了網路營銷。雖然也推薦給了不少蘇州網路營銷這個小圈子的朋友看,但...

B 以貳之名(新生賽)

b.以貳之名 description 眾所周知,dv學長和tyy學長是關係非常好的 他們經常以 兒子 互稱。有一天dv學長給tyy學長出了一道題,如果tyy學長解出了這道題就可以擁有一半的糖果,否則dv學長將吃掉所有的糖果。tyy學長非常想吃到糖果,你能幫幫她嘛?具體來說 現在有從2到n這n 1個的...