MySQL 8.0.2複製新特性(翻譯)

來源:互聯網
上載者:User

標籤:引入   日誌   一個   記錄   for   全面   自動   更改   inno   

譯者:知數堂星耀隊

MySQL 8.0.2複製新特性

MySQL 8 正在變得原來越好,而且這也在我們MySQL複製研發團隊引起了一陣熱潮。我們一直致力於全面提升MySQL複製,通過引入新的和一些有趣的功能。此外,我們還聽取了社區的建議和反饋。因此,我們很榮幸能夠與你一同見證最新版本(MySQL 8.0.2)的裡程碑式的發布,為此我們總結了其中的一些值得注意的變化。跟隨我們下面的部落格,我們將會分享這些新功能的一些見解。

我們對MySQL 組複製進行了加強,主要有以下幾個方面:
  • 不允許對離開組的成員變更:每當群組成員離開群組,離開的成員將會自動化佈建super_read_only,這可以防止DBA,使用者或路由器/代理/Server Load Balancer等帶來的的意外更改。除了預設離開組複製的成員不能夠進行修改以外,也可以從剛加入開始就開始禁止寫入,我們也可以在伺服器啟動時設定super_read_only參數並啟動組複製外掛程式。一旦組複製動成功,他會自動調整super_read_only的值。在多主模式下,所有的節點都將不會設定super_read_only參數 ;在單主的模式下,除了主節點以外,其他的節點都會設定super_read_only為ON 。如果很不幸,你的組複製啟動失敗了的話,super_read_only參數將不會被設定,將不能進行任何寫入操作。這些最新的變化同樣適用於MySQL 5.7.19和MySQL 8.0.2。所有的這些,有很大部分是因為我們聽取了社區的反饋然後進行開發和加強。--在此 感謝Kenny Gryp
  • 可以在Performance Schema 中查看更多資訊:在Performance Schema現存的表中,對相關的統計資訊的可讀性進行了加強。“replication_group_members” 和 “replication_group_member_stats” 表也做了相關拓展,現在可以清楚的看到群組成員的角色資訊,群組成員版本和事物計數器(本地/遠程)
  • 通過分配權重來指定主庫的選舉:使用者可以通過指定群組成員的權重來控制主庫的選舉,當現有的主節點退出組複製,權重最高的節點就會被提升為主節點。
  • 流量控制機制加了一些微調項:使用者現在可以更精細的調節流量控制組件。可以定義每個成員的最小配額,整個組的最小提交配額,流程式控制制視窗等等。

MySQL 8.0.1 已經在MySQL複製核心架構添加了很多令人信服的功能。而MySQL 8.0.2在此基礎上又有很大的提升,主要如下:

  • 增強對接收器(IO)線程的管理,即使磁碟已滿:此功能提高了接收器和其他線程之間的內部協調效率,減少彼此的爭用。對於終端使用者來說,這意味著在磁碟變滿並且接收器線程阻塞的情況下,它不再阻塞監視操作,例如SHOW SLAVE STATUS。它還引入了一個新的線程狀態(接收器線程正在等待磁碟空間資源),此外,當磁碟已滿的時候,而且你並不能通過釋放磁碟空間使接收器線程繼續沒有完成的工作,這個時候你可以手動停掉它,一般情況下不會有什麼問題。但是如果當時有一個寫入的事物被清除掉了,而且relay log 也不是在一致的狀態下,當接收器線程輪詢relay log並且在等待磁碟空間可用時,你就要特別的留心。
  • binary log中記錄更多的中繼資料資訊:將事物長度添加到全域交易記錄事件。這可以對我們未來的最佳化工作有很大的協助,而且也提高了binary log的可讀性。

如果你在研究MySQL複製的內部機制與原理,我們將很高興與你一起分享我們做了一些清理工作,並為我們的基礎組件添加了一個有趣的服務:

  • 群組成員事件可以傳播到內部其他組件。通過利用新的基礎服務架構,組複製外掛程式現在可以通知伺服器中的其他組件關於成員關聯的事件。例如,通知群組成員的角色改變仲裁丟失等。其他的組件可以對這個資訊作出反饋,並且使用者也可以自己開發組件用來記錄和檢測這些事件。
  • 從XCom(標準的Paxos實現,能嚴格保證正確性)的內部結構中刪除節點上的冗餘資訊:我們在XCom的結構中刪除了一些冗餘資訊,這使它變得更加簡單,更少的出現錯誤,更容易監控那些節點加入或者離開叢集,同時它會在系統中保留以前的資訊。
  • 對XCom核心和新編碼風格進行了幾項改進:我們已經修複了XCom的幾個BUG,重新格式化了代碼,使它符合Google的編碼準則,如果你恰巧是一個開發人員,並且再看我們Paxos實現的原始碼,你會發現改版後的代碼將會更加容易閱讀和理解。
  • 移除了一些老舊版本binary log轉換的原始碼:這個清理工作我們清除了一些老版本My資料庫產的的binary logs轉化為新版本能夠識別的一些代碼(現在僅支援MySQL5.0以及以上版本)。

還有一件有意思的事情,我們已經在MySQL 8.0.2中更改了以下複製預設值:

  • 複製的中繼資料資訊預設以INNODB系統資料表來儲存:這將使MySQL複製功能變得更加強大,在複製崩潰並且自動回復時候能夠使用INNODB事物的特性來保證恢複到指定位置的正確性。此外,新功能還要求將中繼資料以表的形式儲存(比如組複製和多源複製),它與MySQL 8的新的資料字典保持一致。
  • 基於行資料的雜湊掃描被預設開啟:這也許並不是一個被廣泛認同的做法,但是當從庫有一些沒有主鍵約束的表的時候效能會有提高。在這種情況下,使用基於行的複製時,此更改會最大程度降低效能損失,因為它會減少更新所有行所需的表掃描數(slave_rows_search_algorithms參數預設TABLE_SCAN,INDEX_SCAN,HASH_SCAN)。
  • transaction-write-set-extraction參數會預設開啟:使用寫集提取,為使用者啟動組複製或在主伺服器上使用基於WRITESET的依賴關係對master進行跟蹤。
  • 預設開啟Binary log 到期時間:expire-logs-days預設設定為30(30天)

如你所知,我們一直很忙。事實上,MySQL 8.0.2 Milestone Release已經發布了。在複製方面,我們非常高興看到許多有趣的功能被加入進來。

接下來將會有專門的部落格來介紹說明這些功能。你也可以自己下載進行測試(),我們需要留意的是MySQL 8.0.2還是DMR版本,並沒有GA,使用它需要自己承擔風險。另外不要忘記,我們歡迎而且很期望得到你們的反饋。您可以通過錯誤報表,功能報告,複製郵件清單或僅對這個(或後續的)博文發表評論來給予我們反饋。MySQL 8將會越來越好,越來越精彩。

MySQL 8.0.2複製新特性(翻譯)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.