MySQL 8.0.2複製新特性(翻譯)

来源:http://www.cnblogs.com/shengdimaya/archive/2017/09/11/7493842.html
-Advertisement-
Play Games

譯者:知數堂星耀隊 MySQL 8.0.2複製新特性 MySQL 8 正在變得原來越好,而且這也在我們MySQL複製研發團隊引起了一陣熱潮。我們一直致力於全面提升MySQL複製,通過引入新的和一些有趣的功能。此外,我們還聽取了社區的建議和反饋。因此,我們很榮幸能夠與你一同見證最新版本(MySQL 8 ...


譯者:知數堂星耀隊

MySQL 8.0.2複製新特性

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

我們對MySQL 組複製進行了加強,主要有以下幾個方面:

  • 不允許對離開組的成員進行更改:每當組成員離開群組,離開的成員將會自動設置super_read_only,這可以防止DBA,用戶或路由器/代理/負載平衡等帶來的的意外更改。除了預設離開組複製的成員不能夠進行修改以外,也可以從剛加入開始就開始禁止寫入,我們也可以在伺服器啟動時設置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將會越來越好,越來越精彩。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.註釋: html的註釋:<!--我是註釋--> CSS的註釋:/*我是註釋*/ JS的註釋://我是註釋 2.變數: 變數要先聲明再賦值,如下: var mychar; mychar="javascript"; var mynum = 6; 變數可以重覆賦值,如下: var mychar; my ...
  • 任務 1.在第27行處補充完整,實現當點擊"全選"按鈕時,將選中所有的覆選項。 提示:document.getElementsByTagName("input")獲取的是所有input標簽,包括覆選項和按鈕,所以要判斷是否是覆選項,如是選中。 2.在第33行處補充完整,實現當點擊"全不選"按鈕時,將 ...
  • JavaScript正則表達式入門 ===================== 常常用戶在一個網頁里登錄註冊帳號時,要輸入用戶名、手機號、郵箱地址、設置密碼等項目。而對於用戶輸入的用戶名是否規範,輸入的是否是郵箱地址、密碼強度如何等等都可以通過一 正則表達式 制定相應的規則來驗證校檢,來實現一個非常 ...
  • 前面的話 本文將通過多種方式實現紋理文本的效果 背景裁切 對於實現紋理文本的效果,腦海中最直接能想到的辦法可能是背景裁切background-clip 使用線性漸變來填充文本背景 下麵使用一張楓葉的背景,來製作紋理文本 當然了,放一張動態gif圖,也是沒問題的 如果想要讓填充動起來,可以通過anim ...
  • 在學習微信小程式開發過程中,一部分的難點是前端邏輯的處理,也就是對前端JS的代碼編輯;一部分的難點是前端界面的設計展示;本篇隨筆基於一個豆瓣電影介面的小程式開源項目進行重新調整,把其中遇到的相關難點和改進的地方進行討論介紹,希望給大家提供一個參考的思路,本篇隨筆是基於前人小程式的項目基礎上進行的改進... ...
  • 所謂的iOS 國際化,就是根據系統不同的語言自動切換。 首先,如圖: 所謂的iOS 國際化,就是根據系統不同的語言自動切換。 首先,如圖: 1.png 1.png 創建一個.strings文件,以“Localizable.strings”為文件名: 2.png 創建完之後,在XCode的右邊勾選自己 ...
  • 轉載請註明出處: 在Android中可以調用自帶的瀏覽器,或者指定一個瀏覽器來打開一個鏈接。只需要傳入一個uri,可以是鏈接地址。 啟動android預設瀏覽器 在Android程式中我們可以通過發送隱式Intent來啟動系統預設的瀏覽器。如果手機本身安裝了多個瀏覽器而又沒有設置預設瀏覽器的話,系統 ...
  • 以下的測試數據根據環境的不同所耗費的時間有所不同,例如我在騰訊雲上的測試,以及在本機的測試速度相差三倍。但當環境因素一樣的時候,優化sql能夠帶來顯著的提升。 測試表數據:3百萬條數據,12個欄位,存儲引擎:myisam 1 確定搜索一條記錄的時候,加上limit 1 ,以此讓游標查到第一條結果時停 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...