《MySQL入門到放棄-基礎》

介紹
MySQL是一個跨平臺的開源關係型數據庫管理系統,目前MySQL被普遍地應用在Internet上的中小型網站中。因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,許多中小型網站爲了下降網站整體擁有成本而選擇了MySQL做爲網站數據庫。隨着MySQL在互聯網上被普遍使用,在數據庫領域的地位爆炸式的提高,BAT等各互聯網的去IOE,大量的使用MySQL做爲核心數據庫,MySQL DBA的市場需求量日益劇增,好的MySQL DBA更是各個互聯網公司搶手的人才。愈來愈多的IT人才開始轉型作DBA,那麼做爲一個DBA,首先要明白做爲一個DBA的核心目標也是終極目標:保證數據庫管理系統的穩定性、安全性、完整性和高性能。mysql

MySQL DBA大概能夠分爲兩種:一種是開發DBA,一種是運維DBA,這裏說的MySQL DBA是指運維DBA。通常意義上的DBA指的是運維DBA,只是負責數據庫的運營和維護,包括數據庫的安裝、監控、備份、恢復等基本工做,而高級或資深 DBA職責比這個大得多,須要覆蓋產品從需求設計、測試到交付上線的整個生命週期,在此過程當中不只要負責數據庫管理系統的搭建和運維,更要參與到前期的數據庫設計,中期的數據庫測試和後期的數據庫容量管理和性能優化。面試

對於運維DBA來講,主要的職責爲如下幾點:sql

1) 監控:對數據庫服務運行的狀態進行實時的監控,包括數據庫會話、數據庫日誌、數據文件碎片、表空間監控、用戶訪問監控等,隨時發現數據庫服務的運行異常和資源消耗狀況;輸出重要的平常數據庫服務運行報表以評估數據庫服務總體運行情況,發現數據庫隱患;監控對於DBA來講是相當重要的,是DBA的第三隻眼 睛,利於監控能夠自動處理一些常規的故障,提早發現並解決潛在隱患,監控對於運維是必備的技能,若是你不懂監控,那麼你就不是一個稱職的運維人員;數據庫

2)備份:制定和實施數據庫備份計劃,災難出現時對數據庫信息進行恢復,維護適當介質上的存檔或者備份數據。對數據庫的備份策略要根據實際要求進行更改,數據的平常備份狀況進行監控。備份大概分爲兩種:一種是定時、計劃性的備份,包含全備和增量備份,經常使用的工具通常爲mysqldump以及xtrabackup爲表明的第三方備份工具;一種是執行DML時更新和刪除的備份,這種備份通常有如下幾種備份方式:一種爲create tablexxx_mmddhhmm select的方式備份到表中,一種是mysqldump加上條件作備份,還有一種是select into oufile等幾種方式,防止執行錯誤時能夠快速的恢復。在平常對數據庫的操做中,特別做爲一個DBA,永遠要給本身留一個後手,保證在須要進行數據恢復的時候能夠隨手拈來。安全

3)安全審計:爲不一樣的數據庫管理系統用戶規定不一樣的訪問權限,以保護數據庫不被未經受權的訪問和破壞。例如,容許一類用戶只能檢索數據,而另外一類用戶可能擁有更新數據和刪除記錄的權限。性能優化

4)故障處理:對數據庫服務出現的任何異常進行及時處理,儘量避免問題的擴大化甚至停止服務。這以前DBA須要針對各種服務異常,如機房/網絡故障、程序bug等問題制定處理的預案,問題出現時能夠自動或手動執行預案達到止損的目的。在故障處理中,DBA的反應相當重要,可能在分分鐘鐘的時間內,小的故障引起大的故障,對業務的影響更大,這個很是考驗DBA的應急能力和應變能力。對於常見的故障,好比鏈接數忽然增多、數據庫服務器空間的清理、主從同步延遲、CPU使用太高等,能夠和研發一塊兒制定相應的預案,而且和監控結合,當達到必定的閥值,使用相應的腳本自動處理,這樣在必定程度上減小DBA的工做量、提升故障處理效率,更重要的是能夠爲DBA爭取必定的時間,防止故障升級對業務帶來更大的影響。服務器

5)容量管理:包括數據庫規模擴張後的資源評估、擴容、機房遷移、流量調度等規劃和具體實施。網絡

6)數據庫性能優化:產品對外提供服務最重要的一點是用戶體驗,用戶體驗中很是重要的是產品的可用性和響應速度。而如何用最合理的資源支持產品提供高可用和高速度的用戶體驗,這也是DBA的重要職責。在多年的DBA生涯中,我的對數據庫故障的總結爲:80%的甚至更高的故障來自變態的SQL語句,10%左右的來自數據庫架構方面設計的不合理,10%左右的來自硬件、OS層面。那麼基本的優化重點就就是對SQL的優化,這個須要給研發人員進行MySQL開發規範進行培訓,制定嚴格的SQL准入規則,審覈每一條上線的SQL語句,在SQL源頭上堵住大部分,而後就是對慢SQL的監控分析,按期的發給研發進行整改,並督促研發在限定的時間內整改。這部分的工做較爲繁瑣平淡,可是執行好了,能夠杜絕不少沒必要要的故障,保證業務的高效、穩定運行,這一部分工做很是考驗DBA的基礎理論知識,考驗DBA的責任性和工做的毅力。數據結構

個 人認爲,一個好的DBA所須要具有的基本技能包含:理解數據備份/恢復與災難恢復、DBA經常使用工具集的使用、知道如何快速尋找答案、知道如何監控和優化數 據庫性能、儘量實現自動化、容量監控與規劃、索引設計、數據庫設計、數據庫安全性、持續不斷地學習和研究新版本、能夠單獨的編寫獨立的或者系統的功能腳本。這些技能基本涵蓋MySQL基礎理論知識、OS層面知識、硬件知識、網絡知識、代碼編寫能力、架構設計規劃能力、監控、運維理念、運維自動化等。所以,作一個DBA,不單純的數據庫層面的,基本知識涵蓋不少層面,所以能夠說DBA綜合知識極高的複合型專業人才。架構

性格決定命運,態度決定一切,DBA也是這樣,性格決定高度,態度決定層次。有些DBA作了不少年,依然是邊緣人,成不了技術中堅,歸根到底可能與自己的性格有關,不思進取,工做不主動,說多少作多少,作事邋遢,不上心,能湊合就湊合,時間觀念不強等,有一部分人認爲公司一個月給我1000塊的工資,我幹嗎去幹1001塊的活?只要不出人爲事故就行,天災人禍自認倒黴,這樣的性格在我的職業生涯中不會有突出的成就。遇到過有些DBA都出書了,理論等技能確定是沒問題的,可是作事毛糙,考慮問題時不全面,時不時的出點小事故,有時候作事總以爲過得去就行,面試的時候給人的印象多是極好的,但是工做起來就能看出問題了,每在一個公司作DBA業務呆的時間都不長,畢竟羣衆的眼睛是雪亮的,每一個公司、每一個領導都是須要能幹活、能把活幹漂亮的人。一個優秀的DBA,我心中的DBA應該是具備完美主義的人,應該具有的硬性素質包含工做認真細緻,勤于思考,良好的溝通能力、具備團隊合做精神,自我驅動能力或者說工做主動性強,堅韌的意志力和沉着的心態,好奇心和自信心強等;基本技能是基礎,DBA必備的,只是基礎而已,若是談優秀的話,那麼良好的性格和態度決定你能夠在職業生涯中能走多遠。

大道理你們都懂,真正能實實在在落實到實際的很少,也正是這些爲數很少的人,成爲業內的中堅,所謂的大牛!最後想說的是,各個行業中沒有最牛,只有更牛,學無止境,在學習和實踐中完善、強化本身的各方面能力,不斷的提高本身。踏踏實實作事,堂堂正正作人,改變不了別人,盡最大的努力,作最好的本身!!
基礎概念

  1. 數據庫是按照數據結構來組織、存儲和管理數據的倉庫;
  2. 關係型數據庫: 創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據;
  3. RDBMS 即關係數據庫管理系統(Relational Database Management System)的特色:
    • 數據以表格的形式出現;
    • 每行爲各類記錄名稱
    • 每列爲記錄名稱所對應的數據域
    • 許多行和列組成一張表單
    • 若干的表單組成database
      RDBMS 術語
    • 數據庫: 數據庫是一些關聯表的集合;
    • 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格;
    • 列: 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據;
    • 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據;
    • 冗餘:存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性;
    • 主鍵:主鍵是惟一的。一個數據表中只能包含一個主鍵。你可使用主鍵來查詢數據;
    • 外鍵:外鍵用於關聯兩個表;
    • 複合鍵:複合鍵(組合鍵)將多個列做爲一個索引鍵,通常用於複合索引;
    • 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。相似於書籍的目錄;
    • 參照完整性: 參照的完整性要求關係中不容許引用不存在的實體。與實體完整性是關係模型必須知足的完整性約束條件,目的是保證數據的一致性。
相關文章
相關標籤/搜索