1. 程式人生 > >mysql 主從複製原理

mysql 主從複製原理

原文連結:https://www.cnblogs.com/Aiapple/p/5792939.html

主從形式 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主從複製目前也存在一些問題,可以根據需要部署複製增強功能

相關推薦

MySQL主從複製原理、半同步操作步驟及原理

1.1 企業Linux運維場景資料同步方案 1.1.1 檔案級別的異機同步方案 1、scp/sftp/nc 命令可以實現遠端資料同步。  2、搭建ftp/http/svn/nfs 伺服器,然後在客戶端上也可以把資料同步到伺服器。  3、搭建sa

MySQL主從複製原理及搭建全過程】

目錄 準備工作 主從複製原理 開始搭建主從複製 本文將使用mariaDB資料庫實現主從複製,其步驟與MySQL資料庫無差異。 MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,採用GPL授權許可。 開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將M

MySQL 主從複製原理及建立過程

前言 mysql 是我工作中常用的資料庫,不過僅限於 SQL 操作,通過阿里雲的 RDS 可以快速生成一個例項,對於其原理並不甚瞭解,所以閒暇之餘瞭解了一下,並記錄下來,與大家共享、交流。 目錄 一、MySQL複製技術 1. 複製的

Mysql主從複製原理

Mysql主從叢集可以保證從節點和主節點資料一致,這個是通過基於Binary Log的主從複製非同步實現的。 複製原理 複製過程 主節點將自己所有的寫操作記錄在自己的Binary Log中,主節點維護一個IO執行緒 從節點維護一個IO執行緒,定期向主節點

mysql 主從複製原理

原文連結:https://www.cnblogs.com/Aiapple/p/5792939.html 主從形式 mysql主從複製 靈活 一主一從主主複製一主多從---擴充套件系統讀取的效能,因為讀是在從庫讀取的;多主一從---5.7開始支援聯級複製---  

MySQL主從複製原理與實操

一、引言 在工作中,對資料庫的資料進行備份是毫無疑問的事情,而資料庫的備份方式又分好多種(此處就不做介紹),最基本的就是一主一從,從機需要不斷的讀取主機的資料二進位制日誌記錄來備份主機的資料,這是資料庫主從複製的第一個應用場景。主從複製的第二個應用場景就是在分散式的系統中,一個數據庫

運維必須要懂的MySQL主從複製原理

為什麼要做主從複製? 1、在業務複雜的系統中,有這麼一個情景,有一句sql語句需要鎖表,導致暫時不能使用讀的服務,那麼就很影響執行中的業務,使用主從複製,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現了鎖表的情景,通過讀從庫也可以保證業務的正常運作。 2、做資料的熱備

mysql主從複製原理詳解

master將改變記錄到二進位制日誌中binlog,slave將master的binlog拷貝到自己的中繼日誌中,然後執行一遍sql語句就達到同步了 一個伺服器當主庫,另一個或多個伺服器當從庫,主

mysql主從複製原理和注意事項

mysql主從複製大體分3個步驟: 在主庫上把更新的資料寫入到二進位制日誌binglog檔案裡面;備庫把主庫的二進位制日誌複製到自己的relay_log中;備庫讀取relay_log並將裡面的資料重放到資料庫。 上述步驟在主從之間涉及到3個執行緒,a:主庫上面的資料寫入

mysql主從複製原理及實踐

Mysql主從複製原理及實踐 mysql主從框架       MySQL主從架構是MySQL叢集中最基本也是最常用的一種架構部署,能夠滿足很多業務需求,常見的有一主一從或者一主多從。可以防止單一主機的資料丟失,提高資料的安全性,務上可以實現讀寫分離,可以把一些讀操作在從伺服器上執行,減小主伺服器的負擔。 主從

MySQL 主從複製原理不再難

上篇我們分析過 Binlog 日誌的作用以及儲存原理,感興趣的可以翻閱: [一文帶你瞭解 Binlog 日誌](https://www.cnblogs.com/rickiyang/p/13841811.html) Binlog 日誌主要作用是資料恢復和主從複製。本身就是二進位制格式的日誌檔案,網路傳輸無需

MySQL(13)---MYSQL主從複製原理

# MYSQL主從複製原理 最近在做專案的時候,因為部署了 **MYSQL主從複製** 所以在這裡記錄下整個過程。這裡一共會分兩篇部落格來寫: ``` 1、Mysql主從複製原理 2、docker部署Mysql主從複製實戰 ``` 這篇只寫MYSQL主從複製原理。 ## 一、概述 #### 1

MySQL(4):主從複製原理

1、主從複製概述   MySQL主從複製也可以稱為MySQL主從同步,它是構建資料庫高可用叢集架構的基礎。它通過將一臺主機的資料複製到其他一臺或多臺主機上,並重新應用relay log中的SQL語句來實現複製功能。MySQL支援單向、雙向、鏈式級聯、非同步複製,5.5版本之後加入的半同步複製,5.6版本之後

MySQL主從複製-GTID原理

一、MySQL 主從複製原理闡述 Mysql主從複製:簡單來說就是Mysql 同步,Ab 複製等,主從複製是單向的,只能從 Master 複製到 Slave 上,延時基本上是毫秒級別的(排除網路延遲等問題)。一組複製結構中可以有多個Slave,對於 Master一般場景推薦只有一個,【根據您的業務進行調配,

mysql主從複製配置 & 工作原理

目錄 MySQL主從複製的基本工作原理 複製模式 複製如何工作 主從複製配置 建立賬號 配置主庫和從庫 啟動複製 擴充套件-配置GTID主從複製 參考 MySQL主從複製的基本工作原理 MySQL支援兩種複製方法:

MySQL系列連載之主從複製原理

導讀 如果您在本文遇到任何問題或疑問請到QQ群中與我們交流。也可在下方進行評論。我將在第一時間和您進行交流,共同學習。 QQ群:201777608、526871767、1689067(加群時註明:運維派) Mysql 複製(Replication) 1、Mysql 複製作用 負載平衡(load b

MySQL主從複製非同步原理以及搭建

MySQL主從複製的原理:   1、首先,MySQL主庫在事務提交時會把資料變更作為時間events記錄在二進位制日誌檔案binlog中;MySQL主庫上的sync_binlog引數控制Binlog日誌以什麼樣的方式重新整理到磁碟上。   2、主庫推送二進位制日誌檔案Binlog中的事件到從庫的中繼日誌R

MySQL主從複製半同步複製原理及搭建

在MySQL5.5之前的版本中,MySQL的複製是非同步複製,主庫和從庫的資料之間存在一定的延遲,比如網路故障等各種原因,這樣子容易存在隱患就是:當在主庫寫入一個事務成功後並提交了,但是由於從庫延遲沒有及時得到主庫推送的Binlog日誌時,主庫突然宕機了,那麼此時從庫就可能損失這個事務,從而造成主從不一致的狀

MySQL 主從複製原理

1.主從複製配置a. 環境:CentOS7.4,IP地址分別是主庫:192.168.11.146,從庫:192.168.11.238,主庫版本應低於或等於從庫版本,這裡用的都是MySQL 8.0.13b.主庫配置/etc/my.cnf檔案 [mysqld] #一般配置選項user=mysqlport=33

MySQL 主從複製原理和配置

工作原理圖: 主從複製的原理: 分為同步複製和非同步複製,實際複製架構中大部分為非同步複製。 複製的基本過程如下: 1).Slave上面的IO程序連線上Master,並請求從指定日誌檔案的指定位置(或者從最開始的日誌)之後的日誌內容; 2).Master接收