mysql 主從複製原理

来源:http://www.cnblogs.com/Aiapple/archive/2016/08/21/5792939.html
-Advertisement-
Play Games

主從形式 mysql主從複製 靈活 一主一從 主主複製 一主多從 擴展系統讀取的性能,因為讀是在從庫讀取的; 多主一從 5.7開始支持 聯級複製 用途及條件 mysql主從複製用途 實時災備,用於故障切換 讀寫分離,提供查詢服務 備份,避免影響業務 主從部署必要條件: 主庫開啟binlog日誌(設置 ...


主從形式
  mysql主從複製 靈活
  • 一主一從
  • 主主複製
  • 一主多從---擴展系統讀取的性能,因為讀是在從庫讀取的;
  • 多主一從---5.7開始支持
  • 聯級複製---
    用途及條件
  mysql主從複製用途
  • 實時災備,用於故障切換
  • 讀寫分離,提供查詢服務
  • 備份,避免影響業務
  主從部署必要條件:
  • 主庫開啟binlog日誌(設置log-bin參數)
  • 主從server-id不同
  • 從庫伺服器能連通主庫
  主從原理
mysql主從複製原理  

 

從庫生成兩個線程,一個I/O線程,一個SQL線程;   i/o線程去請求主庫 的binlog,並將得到的binlog日誌寫到relay log(中繼日誌) 文件中; 主庫會生成一個 log dump 線程,用來給從庫 i/o線程傳binlog;   SQL 線程,會讀取relay log文件中的日誌,並解析成具體操作,來實現主從的操作一致,而最終數據一致;   問題及解決方法
  mysql主從複製存在的問題:
  • 主庫宕機後,數據可能丟失
  • 從庫只有一個sql Thread,主庫寫壓力大,複製很可能延時
  解決方法:
  • 半同步複製---解決數據丟失的問題
  • 並行複製----解決從庫複製延遲的問題
  半同步複製
  mysql semi-sync(半同步複製) 半同步複製:
  • 5.5集成到mysql,以插件的形式存在,需要單獨安裝
  • 確保事務提交後binlog至少傳輸到一個從庫
  • 不保證從庫應用完這個事務的binlog
  • 性能有一定的降低,響應時間會更長
  • 網路異常或從庫宕機,卡主主庫,直到超時或從庫恢復
  主從複製--非同步複製原理

 

半同步複製原理:  

 

並行複製
  mysql並行複製
  • 社區版5.6中新增
  • 並行是指從庫多線程apply binlog
  • 庫級別並行應用binlog,同一個庫數據更改還是串列的(5.7版並行複製基於事務組)
設置
set global slave_parallel_workers=10;
設置sql線程數為10     其他
  部分數據複製 主庫添加參數:
binlog_do_db=db1
binlog_ignore_db=db1
binlog_ignore_db=db2
或從庫添加參數
replicate_do_db=db1
replicate_ignore_db=db1
replicate_do_table=db1.t1
replicate_wild_do_table=db%.%
replicate_wild_ignore_table=db1.%
  聯級複製(常用) A->B->C B中添加參數:
log_slave_updates
B將把A的binlog記錄到自己的binlog日誌中

 

複製的監控:
show  slave status \G

 

複製出錯處理 常見:1062(主鍵衝突),1032(記錄不存在) 解決:
  • 手動處理
  • 跳過複製錯誤:set global sql_slave_skip_counter=1
      總結
 
  • 主從形式
    • 一主一從
    • 一主多從--擴展系統讀取性能
    • 多主一從--5.7開始支持
    • 主主複製
    • 聯級複製
  • 用途:實時災備的故障切換,讀寫分離,備份
  • 原理
    • 主:log dump線程傳binlog;
      • i/o線程接受讀取binlog,並寫入relay log文件
      • sql線程從relay log 文件中讀取binlog並持久化
  • 問題及解決
    • 主庫宕機後,數據丟失
      • 半同步複製
    • 主庫寫壓力大,因從庫只有一個sql 線程來持久化,複製可能延遲
      • 並行複製
  • 半同步複製:
    • 原理
      • 事務在主庫寫完binlog後需要從庫返回一個已接受,才放回給客戶端;
    • 5.5集成到mysql,以插件的形式存在,需要單獨安裝
    • 確保事務提交後binlog至少傳輸到一個從庫
    • 不保證從庫應用完成這個事務的binlog
    • 性能有一定的降低
    • 網路異常或從庫宕機,卡主庫,直到超時或從庫恢復
  • 並行複製
    • 原理:從庫多線程apply binlog
    • 在社區5.6中新增
    • 庫級別並行應用binlog,同一個庫數據更改還是串列的
    • 5.7版本並行複製基於事務組
  • 部分數據複製
  • 聯級複製(常用)
    • A->B->C
    • B中添加參數log_slave_updates
    • B將把A的binlog記錄到自己的binlog日誌中
  • 複製的監控
    • show slave status
  • 複製出錯處理
    • 常見:1062(主鍵衝突),1032(記錄不存在)
    • 解決:
      • 手動處理
      • 跳過複製錯誤:set global sql_slave_skip_counter=1
  • mysql主從複製是mysql高可用性,高性能(負載均衡)的基礎
  • 簡單,靈活,部署方式多樣,可以根據不同業務場景部署不同複製結構
  • 複製過程中應該時刻監控複製狀態,複製出錯或延時可能給系統造成影響
  • mysql主從複製目前也存在一些問題,可以根據需要部署複製增強功能
   
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前提 本文僅討論SQL Server查詢時, 對於非複合統計信息,也即每個欄位的統計信息只包含當前列的數據分佈的情況下, 在用多個欄位進行組合查詢的時候,如何根據統計信息去預估行數的。 利用不同欄位的統計信息做數據行數預估的演算法原理,以及SQL Server 2012和SQL Server 2014 ...
  • 一、前言 從20世紀90年代數字化醫院概念提出到至今的20多年時間,數字化醫院(Digital Hospital)在國內各大醫院飛速的普及推廣發展,並取得驕人成績。不但有數字化醫院管理信息系統(HIS)、影像存檔和通信系統(PACS)、電子病歷系統(EMR)和區域醫療衛生服務(GMIS)等成功實施與 ...
  • 昨天一個pgp加密盤壞了,東西全丟了。。。,我的筆記啊!我咋怎麼2呢。。 備份個腳本吧,方便以後手機查看,話說我都快忘記帳號密碼了 備註:腳步恢復時只能恢復到備份前的狀態,如果需要恢復到當前狀態,還需配合binlog,睡覺就這樣 ...
  • 非同步主從複製 主從部署步驟: 備份還原 使用mysqldump或者xtrabackup 把主庫現有基礎數據還原到從庫 授權 grant replication slave on *.* 給從庫一個複製binlog的賬號 配置複製,並啟動 從庫上配置複製信息,並指向master 查看主從複製信息 sh ...
  • 基於Centos7安裝過程中常用工具及操作技術總結回顧。 操作技巧: tab鍵,命令自動補全 xshell 預設: Ctrl + Insert (複製) Shift + Insert (粘貼) systemctl 服務操作命令: systemctl start postfix.service 動一個 ...
  • 聲明:此文是我學習MongoDB一周以來的經驗總結。一來給自己做一個備份,二來給和我一樣剛接觸MongoDB的小白分享一下,有什麼問題,給位請多擔待。 1、MongoDB安裝及配置 (1)下載: mongodb官網 https://www.mongodb.com/download-center 進入 ...
  • RAID技術 Redundant Array of Independent Disks由獨立的磁碟組成的具有冗餘特性的陣列。有兩個特性:陣列:需要很多磁碟來組成冗餘:允許某塊磁碟損壞之後,數據仍然可用目前,單塊磁碟容量只有幾T,對於現代應用程式來說遠遠不夠。為了提供容量更大的磁碟,發明瞭RAID技術... ...
  • client 向 Active NN 發送寫請求時,NN為這些數據分配DN地址,HDFS文件塊副本的放置對於系統整體的可靠性和性能有關鍵性影響。一個簡單但非優化的副本放置策略是,把副本分別放在不同機架,甚至不同IDC,這樣可以防止整個機架、甚至整個IDC崩潰帶來的錯誤,但是這樣文件寫必須在多個機架之 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...