閱讀976 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【2017DTC精彩重現】Oracle和MySQL DBA的進階之路


這個是參考了朱贇[yūn]的一段話,我覺得已經很透徹形象了,畢竟在短短的幾十分鍾裏,你隻能得到一些思想上的建議和思路,落到實處還是得靠自己。而參考和借鑒的過程也是自己修行的過程。第二句我關於堅持,有的同學說堅持是習慣,有的說是毅力,本質上來說,還是堅持的態度,是堅持做一件事情,還是堅持把一件事情做好,兩者聽起來相似,實則有很大的差別。

ce183fad3906fd21b094c69ac7973a574220c166


我分了幾個層麵來做了一些解讀。在本文中會抽取重點列出一些來。

9dc998567483eb0fb8148cc921998a0b7106c76b


其實正如我開篇所說,目前國內的使用有兩個比較明顯的誤區,一個是把Oracle當做MySQL用,主要表現就是把Oracle當做免費版來用;另外一個是把MySQL當做Oracle來用,一些複雜的查詢,表關聯放在MySQL裏還想達到Oracle的性能標準,這個本身也是不合適的。找到自己最好的業務場景非常關鍵,不是為了上一個技術而用一個技術,結合不好,後期出了問題就很尷尬,本質來說不是某個技術方案不好,而是你沒用好。

對於Oracle DBA來說,學習MySQL的話學習周期會相對短一些,入門也比較快,但是如果要深入學習MySQL,還是很難的,因為有很多方麵都需要深入理解,深入的層次是在源碼級,可以做定製,而對於MySQL DBA來說火,學習Oracle的周期會比較長,因為很多方麵是MySQL不會關注,或者沒有的功能,如果要深入學習Oracle,還是得有很長時間的積累,Oracle的體係太大,備份恢複,性能優化,數據遷移能夠抓住幾個麵搞到精通就很不容易了,深度進階的層級基本是到了調試,內核的程度。這方麵國外其實做得很不錯,氛圍非常濃厚。

797fa06be62749997293540c528a2b81294745e8


對於Oracle和MySQL,還是需要了解下他們目前的位置,最新的DB-Engines的報告(DB-Engines最新11月數據庫排名)顯示前三甲穩穩的是關係型數據庫,而MySQL是作為開源數據庫的第一陣營出現的,當然這個排行榜不要過度解讀,本身隻是一個流行度的標識,就是你在搜索引擎中搜索的關鍵字,反映的一個熱度而已,絕非市場占有率。

Oracle目前最新的版本是開放的12.2.0.1.0,而12.2.0.2.0即是下一個版本18c.當前的版本中的變化更多是在CDB和IMO方麵。尤其是在CDB部分,自己逼著自己琢磨了一段時間,還沉澱了一些經驗和大家做了分享,而18c的亮點就在於自治了,本質上自治和自動化還是有一定的區別,可以簡單理解自治是自動化的延伸。而MySQL的改進一個重大標誌是在去年年底的MGR GA,本身從優化器層麵和複製方麵,MySQL是卯足了勁,現在MySQL 8.0的更新速度極快,到目前最新的是8.0.3,5.7版本是5.7.20

cd22d6992bf303c96760c1c43de8364b44dfbda0


想起來容易但是落實起來難,因為有很多的因素需要考慮,而不是簡單的找一個認為好的。比如MySQL的版本選型,到底用哪一個版本,5.5太舊,5.6相比5.7完善,5.7相對來說更加成熟,8.0又太新,那麼問題來了,5.7的版本該選擇5.7的具體哪個版本呢,這裏就有很多的門道了,最後我們選擇的是5.7.16作為基線版本,而分支選擇的是也有需要的考慮因素,細節也很多,原則就是從把正麵,反麵的考慮點都列出來,綜合評估。

對於Oracle的版本規劃整體而言要清晰很多,目前的主流業務還是11gR2為主,12cR1和12cR2有一個較長的時間間隔,很多DBA的印象中R2是穩定版本已根深蒂固,要改變這種思維估計在18c之後才會有大的改觀,毫無疑問,軟件選型目前都基本是企業版的。

5c66f1d2bdadc23ce7209a5835cb5855b4402c5b


關於高可用方案,其實是一個永恒的熱點話題,就是因為這是一把雙刃劍,如果保證數據不丟失,如果保證業務的可持續性,要做出一個100%完美的方案是一個理想狀態,但是至少可以朝著這個方向努力。

Oracle的數據架構是集中,本質上是集成共享,統一訪問,能夠達到數據強一致性,而MySQL的數據架構是複製,本質上是多個數據的副本,在數據的一致性方麵還是有很多事情要做,或者說完善。MySQL的架構方式明顯會限製它的集群規模,比如MGR是硬性限製是9個節點,而Oracle擴展節點來說還是相對容易的,因為本質數據是同一份,共享存儲。

阿裏的IOE架構陪伴他們走過了業務發展的黃金時期,也是在達到資源的使用瓶頸之後,他們全麵擁抱了分布式方案。從早期使用MySQL到後期再次引入MySQL,出發點已然不同。MySQL的高可用方案我列舉的是MHA,其實還有很多其他的方案,但是MHA目前是最流行的,經過的考驗也最多。

fa5ff0585709b69acea76e2543f2134163ca87f5

要搞明白MHA需要做很多的細致工作,我分析了MHA的代碼,發現裏麵的調用關係還是蠻複雜的,總是看起來不得要領,索性理了一份代碼關係圖,通過這種方式就能很快抓住重點了。中間的橙色框就是常用的一些命令和庫文件了。

08c6b2887ead9e2cb49518f8dcf44c304dc2abe9

當然還有一個很經典的Oracle遷移方案,我們後續有時間再細聊,裏麵的細節問題比較多。


關於進階的建議,本身會有很多的選擇。比如大數據,開發,架構等方向,或者做一個更專業,技能精神的專家或者一個很全麵的行業大咖。

b0f38fbc9de64cdbeb05b7e92846d1c9badf59c8

進階的思路總是一些建議,落實的時候會發現有一些落差,就如同下圖所示的這樣。

b299745b66ecc2abc7f5abf953a05d0f9fb3a0ec

這個圖怎麼理解呢,其實是一個知乎有名的遊戲,即100個人每個人手裏有1塊錢,大家隨機交換,最後每個人手裏剩下多少錢,經過真實的模擬,有一套理論。如果通過SQL來模擬,也是分分鍾搞定,可以看到,絕大多數人都是原地踏步,但是隻有極少數的人能夠走出這個圈子來。

1cb74bd13042b5931f1260c4a71b2369b83a3d53

所以大家要多多加油。走出思維的桎梏。


原文發布時間為:2017-11-22

本文作者:楊建榮

本文來自雲棲社區合作夥伴“數據和雲”,了解相關信息可以關注“數據和雲”微信公眾號

最後更新:2017-11-24 00:34:09

  上一篇:go  大咖|英特爾中國研究院院長宋繼強:我們是如何與李宇春打造全球第一支三維人臉特效的音樂視頻的
  下一篇:go  MSSQL · 最佳實踐 · SQL Server三種常見備份