《數據生態--MySQL複製技術與生產實踐》新鮮出爐

  • 首先,先給咋們《數據生態--MySQL複製技術與生產實踐》這本書來爆個照,它大概長這樣!如需購買,可掃描文末的二維碼快速直達! html

  • 接下來,藉助這本書的對話窗口,我想向你們分享一些我在MySQL的學習成長之路上的一些體會與感想,但願或多或少對你們的學習和工做有所幫助!程序員

1. 寫這本書的出發點

  • 2019年11月,咱們出版了《千金良方——MySQL性能優化金字塔法則》一書。從那之後,身邊不斷有人問我一個問題:「寫技術類的書不怎麼賺錢,爲何還要寫?」剛開始,我還認真回答,但提問者聽到回答以後大多仍然表示不解,後來問的人多了,我索性回答:「爲了賺名氣!」這個答案簡單、粗暴、有效!的確,經過《千金良方——MySQL性能優化金字塔法則》一書,咱們小「賺」了些名氣,不過對於爲何寫書的問題,這不是個人所有答案。如今,借新書發售的機會,我將本身所有的想法寫出來,但願能完整、全面地回答這個問題。數據庫

督促本身有計劃地學習

  • 2018年12月,咱們有幸參加了電子工業出版社在北京舉辦的做譯者聚會。聚會上有兩位嘉賓的話令我印象深入:一位來自阿里的安全專家說,他已經出版十餘本書了;另外一位來自美團的某團隊負責人說,他規劃要寫十餘本書。「聽君一席話,勝讀十年書」,這徹底顛覆了我以前對於寫書這件事的見解。在此以前,我一直覺得,技術圖書是寫做者不斷沉澱工做中所學的知識,量變產生質變的產物。能寫出一本書,說明知識的積累已經達到必定厚度,很是不易。在那一刻,我才知道,原來寫書這件事,還能夠刻意規劃,也難怪大拿們可以作到連續數十載一年出一本新書!因而,從那時開始,咱們也開始嘗試有計劃地學習、有計劃地寫書。安全

化解繁重的工做和技能精進之間的矛盾

  • 在2018年12月的做譯者聚會以後不久,咱們再次受邀參加電子工業出版社在杭州舉辦的做譯者聚會。此次聚會上一位嘉賓的話又讓我獲益匪淺,他說「視野的高度決定了作事的高度」。後來,在他的影響下,我閱讀了吳軍博士的《見識》一書,其中「西瓜與芝麻」和「不作僞工做者」的故事使人印象深入。這讓我聯想到本身以及身邊的同事、朋友們,也何嘗不是常常作着撿芝麻的事情,沉迷於低效率勤奮而沒法自拔,但因爲工做時長問題,至關多的人缺乏精進的時間和精力。性能優化

  • 很多朋友曾經問過我,要如何從零開始學習MySQL,這些人中有剛出校園的實習生、有程序員,也有想從其餘數據庫開發轉向MySQL的。對於這一問題,我一時間也不知如何做答,但問的人多了,一來我很差意思老說本身也不知道如何學習MySQL,二來忽然發覺這或許是一個須要有人站出來解決的問題。因而我開始思考,站在MySQL小白的角度,想象須要如何解決他們提出的問題。服務器

  • 通過不斷的思考,我慢慢有了一些答案。例如,能夠嘗試着系統性地研究某個知識點,將其研究透徹,而後分享出來供你們一塊兒學習,以便幫助那些沒有足夠精力和時間精進的朋友們快速進步,讓那些可能走彎路的朋友們少走彎路。或許這就像吳軍博士在《文明之光》中所描述的那樣,當農耕文明發展到必定階段,賴以生存的食物再也不短缺的時候,就可以騰出一部分人力再也不從事農耕勞做,轉而專門從事知足新需求的工做,如此這般,人類文明即可以不斷向前進步。架構

系統性地學習和研究某個課題

  • 借用吳軍博士的話說,一本書能夠看做爲系統性學習和研究某個課題的答卷,就比如在大學裏寫論文同樣。它可以證實你學習和研究的課題是否有成效,讓你們均可以看見、分享你的學習和研究成果。app

鍛鍊寫做能力

  • 寫做是一項技能,須要反覆地刻意練習,而寫書的過程一般是一個高要求、長週期的寫做過程,這是一個很是好的練習機會。框架

2. 掌握正確的學習和研究方法

  • 要系統性地學習和研究一個課題,按照由淺入深的順序,咱們能夠將學習和研究的過程大體分爲以下三個階段:性能

第一階段:總體認識

  • 當面對一個複雜課題時,能夠先從總體上搞清楚它的知識體系組成框架,搞清楚知識體系中各個組成部分(知識模塊)的大體脈絡,從而對一個複雜課題從全局上創建起一個初步認知,以便爲下一階段選擇什麼樣的知識模塊進行深刻研究作好鋪墊。

第二階段:逐一深刻

  • 基於第一階段的總體認識,能夠優先選擇一些工做中須要用到的知識模塊、或者感興趣的知識模塊,做爲一個個的子課題逐一進行深刻的系統性研究。

第三階段:迴歸總體

  • 因爲人的精力有限,在第二階段,深刻研究各個部分期間,一些知識模塊可能會被淡忘,所以,須要迴歸總體,結合本身的驗證與理解,造成穩固的知識體系。

  • 在學習和研究過程當中要勤動手記錄,後續可整理爲博客文章,積累到必定數量以後亦可整理爲圖書,持續積累,直到造成完善的知識體系爲止,往後可供本身與他人反覆複用。

  • 2019年11月出版的《千金良方——MySQL性能優化金字塔法則》,能夠認爲是咱們在第二階段中對一個子課題(關於MySQL性能優化)的答卷,而本書也能夠認爲是咱們對另外一個子課題題(關於MySQL主從複製)的答卷。對於MySQL來講,主從複製是一個很是重要的知識模塊,並且,據我所知,還有很是多從事MySQL相關工做的同行們,對MySQL主從複製的原理、應用場景等知識掌握得並不夠全面,甚至對其只知其一;不知其二的人也不在少數。所以,在本書中,咱們將其做爲重點展開介紹。不過,很抱歉的是,在學習和研究的第一階段中,咱們缺乏相似的成果,但咱們正在積極籌備中,在不久的未來會爲廣大的讀者朋友們交上一份滿意的「答卷」!

3. MySQL的數據生態

  • MySQL的二進制日誌記錄了一個數據庫實例內數據的變動,這些內容是按照時間的前後順序記錄的。根據具體的二進制日誌格式選項設置,能夠記錄數據庫實例內執行的原始SQL語句文本,也能夠記錄數據庫實例內執行SQL時產生的數據變動的行記錄值。二進制日誌能夠知足相似以下一些應用場景:

MySQL Server執行崩潰以後的恢復時,做爲事務的協調者

  • 一個未完成提交的事務,在MySQL Server執行崩潰以後的恢復時,會在二進制日誌中檢查是否存在對應的內容,若是存在,則事務能夠從新執行提交,若是不存在(或沒有啓用二進制日誌記錄功能),則必須回滾事務,將該事務修改的記錄進行回滾。

在不一樣實例間進行數據同步(主從複製、組複製)

  • 主庫中的數據變動被記錄到二進制日誌中,而後主庫將二進制日誌發送給從庫,從庫使用這些二進制日誌進行回放,模擬主庫中執行的操做,從而實現主從之間的數據同步。

數據異地容災

  • 能夠在異地數據中心增長一臺服務器,將其配置爲新的從庫,從主庫中獲取二進制日誌進行回放,達到數據異地容災的目的;也能夠由應用程序模擬一個從庫,從主庫中獲取二進制日誌,進行解析、處理,而後將數據存放在容災專用的系統中。

數據被誤刪除後的恢復(一般被稱爲"數據閃回")

  • 一般,對於未提交的事務,事務的ACID特性可以保證數據的一致性,直接使用事務提供的回滾功能便可實現對誤刪除數據的恢復,不受事務控制的修改語句除外,由於不受事務控制的語句修改的數據沒法執行回滾。但事務一旦完成提交,則沒法再對數據進行回滾,這時能夠對二進制日誌中記錄的值與條件進行反轉,生成新的SQL語句(要求二進制日誌以row格式記錄,必須記錄全鏡像,且只支持增/刪/改語句的反向操做),而後從新在數據庫實例中執行新的SQL語句,從而恢復被誤刪除的數據。

異構數據庫之間的數據流轉

  • 二進制日誌中記錄的是數據的邏輯變動,能夠從中提取出數據的純文本和字段的順序,而後經過應用程序作一些處理,數據就能夠在異構數據庫之間流轉,這一點是其餘大多數數據庫軟件不具有的特性。

  • 二進制日誌獨有的特性造成了MySQL數據流動的與循環的基石,在不一樣應用場景下造成了獨特的「數據生態」,這也是本書名字的由來。

4. 讀者對象

  • 不管你是MySQL的初學者、數據庫架構師及其相關開發人員、非MySQL數據庫DBA,仍是中高級的MySQL DBA,認真閱讀此書,我相信或多或少都能有所收穫。

    • 若是你是MySQL的初學者、MySQL相關開發人員、非MySQL數據庫的DBA,能夠從頭開始完整學習MySQL的複製技術。

    • 若是你是數據庫架構師、中高級MySQL DBA,能夠藉助本書對MySQL複製技術查漏補缺、掃除盲點。

5. 如何閱讀本書

  • 全書分爲「基礎篇」、「方案篇」、「參考篇」,其中:

    • 「基礎篇」對MySQL主從複製技術的用途、概念、基本原理以及演進等進行了全方位的介紹。

    • 「方案篇」對MySQL主從複製技術在生產中的應用場景、複製拓撲的生命管理週期、高可用切換與主庫故障轉移等進行了全方位的介紹。

    • 「參考篇」對MySQL二進制日誌的基本組成結構、常見的複製對象在主從複製拓撲中的流轉過程等進行了全方位的介紹。

  • 對於初學者、MySQL相關開發人員、非MySQL數據庫的DBA,若是時間充足,建議從頭至尾依次學習。

  • 對於數據庫架構師、中高級MySQL DBA,須要進行查漏補缺、掃除知識盲點,或者在工做上須要查閱資料以快速解決問題,則能夠經過目錄快速查找所需內容。

  • 若是你具有必定MySQL源碼閱讀能力,或者想要挑戰更高難度,能夠結合簡書平臺高鵬的專欄《深刻理解主從原理32講》進行學習。對該專欄中的內容,高鵬也進行了整理,並出版爲《深刻理解MySQL主從原理》一書,有須要的讀者朋友可自行購買。

6. 致謝

  • 首先,很是感謝給本書做序的大拿:葉金榮老師、熊軍、徐軼韜。感謝撰寫封底推薦語的大拿:林曉斌(丁奇)、高鵬(八怪)、溫正湖、楊奇龍、熊中哲、李春。感謝他們的承認與支持!

  • 其次,很是感謝給本書校稿的朋友們:劉雲、董紅禹、高鵬。感謝他們的任勞任怨,反覆咀嚼文字,努力尋找書稿中的紕漏,幫助提高閱讀體驗!

  • 再次,很是感謝參與本書命名討論的朋友們:李春、董紅禹、徐婷、杜蓉、符隆美、孫黎!

  • 最後,很是感謝幫忙爲本書推廣宣傳的葉金榮老師、楊奇龍、田帥萌,以及大力配合咱們推進圖書出版事宜的電子工業出版社編輯符隆美,以及社裏其餘負責內容審覈、校對、排版的編輯們!

7. 購買連接信息

* 購買鏈

  https://item.jd.com/12743119.html

  戳文末「閱讀原文」亦可直達

* 購買二維碼:

做者介紹

    羅小波:《千金良方——MySQL性能優化金字塔法則》做者之一。

熟悉MySQL體系結構,擅長數據庫的總體調優,喜愛專研開源技術,並熱衷於開源技術的推廣,在線上線下作過屢次公開的數據庫專題分享,發表過近100篇數據庫相關的研究文章。現任 ScaleFlux staff application enginner

    沈剛:熟悉 MySQL 數據庫運行機制,豐富的數據庫及複製架構故障診斷、性能調優、數據庫備份恢復及遷移經驗,爲銀行、證券以及互聯網用戶提供數據庫方面架構設計、故障診斷、性能調優等服務,現任 PingCAP TiDB 技術支持工程師

相關文章
相關標籤/搜索