這篇的由來也是因為前幾天發生了一段對話, 讓我想到過去發生(在別人身上 :p)過的慘痛經驗, 就想寫成一篇來分享一下. 畢竟我不是像 Joe Chang & Bryan Yao 這麼專業的顧問, 也常自哂是個沒讀什麼書的粗人, 沒辦法很系統化的去描述大框架的概念, 也只能想到什麼寫什麼了. (這100%是硬要牽拖的友情廣告贊助, Joe/Bryan請留一支黑牌給我當廣告費)
事情是, 某公司用的MySQL Database大概是因為Loading太高, 常常出現一些靈異現象: 當機也就罷了, 常常重啟之後這個Table壞那個Table少資料, 更可怕的是有時候Table會消失. 每次碰到這種麻煩, MIS/網管只好能修則修, 不能修只好倒備份回去. 可是每次倒備份都會有一段時間的資料消失, 甚至是好幾個DB之間相互參照的部份會有資料同步問題, 所以只好讓Programmer去寫一些檢查資料同步與完整性的工具, 然後讓備份更頻繁, 去降低發生時的損傷.
剛開始也只是電話裡口頭給一些可能的解決方案跟方向, 也請他們做過分析最佳化了Schema, 但是也只是稍微改善, 並沒有完全排除這個問題. 直到他們老闆終於首肯讓我進他們系統看看時, 已經是個AQPS(avg queries per second)超過20k的超可怕DB Host了, 當下我只好建議他們往Cluster方向走, 然後有了之前那堆MySQL架構的step by step. (話說到這, Jason你欠我的大餐哩? XD)
當下他們也就從善如流花了一些錢買新設備, 做好了Cluster, 但是顧及線上服務還在走, 他們有計劃的一點一點把東西從舊的搬到新的Cluster去, 悲慘的事情於焉發生, 這時他們備份系統用的磁帶櫃掛了, 暫時沒辦法維持原本的double daily backup, 只能weekly, 而他們心想, 反正已經搬走了30%的loading, 應該不會這麼衰在修好前又掛了吧! 所以就說莫非定律一定在這種莫非的時候發生, 真的突然掛了.
他們雖然也就照以前的災難復原SOP去做, 但是這次備份的間隔有點大, 實在會被罵的太用力, 而他們的DBA也很坦白的說無能為力, 可能得去跟Oracle買MySQL的Consult Service看他們能不能從壞掉的Datafile裡頭救, 於是他們還是找上我.
當我Remote連上去, 看到那些壞的徹底的datafile也是感到很絕望, 但是卻同時看到希望: 他們還有著整整兩個月份量的Binary Log都沒Purge掉, 這真是太神奇了傑克! 所以就確認他們備份的時間, 把那個時間後的Binary Log用mybinlog工具倒出來, 再一股腦的倒回去, 系統也就順利的回到掛掉的瞬間.
這個故事要說的是, 當你覺得你很熟悉一個系統或工具或語言時, 可能還遠遠不夠, 而決定你是「物有所值」或是「物超所值」的關鍵是專業度.
韓國笑片我的老婆是老大(My Wife Is a Gangster)裡頭有個爆笑對話但是正好切題.
流氓A: 你知道小混混跟流氓的差別是什麼?
流氓B: ….(疑惑)
流氓A: 笨蛋, 是專業度!
剛剛那個案例裡, 那家公司並非草包, 技術人員們也各各身懷絕技, 但是他們敗在以為自己太熟悉系統而忘記永遠要知其所以然, 所以縱然有這麼好的身手跟技術, 卻不知道其實早就有Binary Log及解開Binary Log的工具可以幫助我們做Data Restore. 如果他們能相信自己不夠專業, 而認真的閱讀手冊, 看mailing list, 而不是自滿於管理過20k AQPS的大型(其實這種規模大概只能算中型)DBMS而覺得自己已經夠專業, 那麼他們不但可以更快更安穩的解決他們碰到的問題, 更可以提高自己在老闆眼中的身價.
我們也常常看到履歷表中, 求職者洋洋灑灑寫了一堆自己會的東西, 甚至會有人寫精通, 但是我卻總是很迷惑於「究竟是多精通?」, 每次Interview後又總是失望, 可能只是下載過幾個Linux Distro然後照著鳥哥的文件一步一步弄了一些常用的service, 就寫上精通. 或者是只是唸書上計概學過一些VB寫過「Mini-Calc」程式作業然後就寫上精通. 這又是另外一種不夠專業的典型.
身為一個技術人員, 專業是必須的, 一樣當你覺得自己夠專業了, 其實就斷絕了自己邁向專業的可能.
喔對了, 當流氓也是一樣的! XD
我朋友認為我有資訊焦慮症,因為我總認為我會得還不夠..別人會的我都還不會!但我覺得資訊人員真的是這樣..永遠沒有滿的一天!!
我有一個想法!想開個網站!想跟先生請教!不知道方便不方便!