MySQL主從複製原理、半同步操作步驟及原理
1.1 企業Linux運維場景資料同步方案
1.1.1 檔案級別的異機同步方案
1、scp/sftp/nc 命令可以實現遠端資料同步。
2、搭建ftp/http/svn/nfs 伺服器,然後在客戶端上也可以把資料同步到伺服器。
3、搭建samba檔案共享服務,然後在客戶端上也可以把資料同步到伺服器。
http://taokey.blog.51cto.com/4633273/1203553
4、利用rsync/csync2/union等均可以實現資料同步 提示:union可實現雙同步,csync2可實現多機同步。
以上檔案同步方式如果結合定時任何或者inotify,sersync等功能,可以實現定時以及定時的資料同步。
5、檔案級別也可以利用mysql,mongodb等軟體作為容器實現。
6、程式向兩個伺服器同時寫入資料,雙寫就是一個同步機制 特點:簡單、方便、效率和檔案系統級別要差一點,但是同步的節點可以提供訪問。 軟體的自身同步機制(mysql,oracle,mongdb,ttserver,redis....)檔案放到資料庫,同步到從庫,再把檔案拿出來。
7、DRBD檔案系統級別(基於塊裝置複製,直接複製block)
1.1.2 檔案系統級別的異機同步方案
1、drbd基於檔案系統同步,相當於網路RAID1,可以同步幾乎任何業務資料。mysql資料庫的官方推薦drbd同步資料,所有單點服務例如:NFS、MFS(DRBD)MySQL等都可以用drbd做複製,效率很高,缺點:備機服務不可用
2、資料庫同步方案:
a.自身同步機制: mysql replication,mysql主從複製(邏輯的SQL重寫)物理複製方法<===drbd(從庫不提供讀寫) oracle dataguard(物理的磁碟塊,邏輯的SQL語句重寫)9i從庫不提供腹瀉的,11g的從庫實現了readonly
b.第三方drbd,參考URL Heartbeat+DRBD+MySQL高可用架構方案與實施過程細節
http://oldboy.blog.51cto.com/2561410/1240412
1.2 MySQL主從複製
MySQL的主從複製方案,和上述檔案及檔案系統級別同步是類似的,都輸資料的傳輸。只不過MySQL無需藉助第三方工具,而是其自帶的同步複製功能,另外一點,MySQL的主從複製並不是從硬碟給上檔案直接同步,而是邏輯的binlog日誌同步到本地的應用執行的過程
提示:官方說主從不要超過9臺,推薦不超過5臺。
1、單向主從複製邏輯圖
2、雙向主主同步邏輯圖,此架構可以在Master1端或Master2端進行資料寫入
3、線性級聯單向雙主同步邏輯圖,此架構只能在Master1端進行資料寫入
4、環狀級聯單向多主同步邏輯圖,任何一個點都可以寫入資料
5、環狀級聯單向多主多從同步邏輯圖,此架構只能在任意一個Master端進行資料寫入
MySQL官方的同步架構圖
工作中第一種方案和第二種方案最常用
1.3 MySQL主從複製原理介紹
MySQL的主從複製是一個非同步的複製過程(雖然一般情況下感覺是實時的),資料將從一個Mysql資料庫(我們稱之為Master)複製到另一個Mysql資料庫(我們稱之為Slave),在Master與Slave之間實現整個主從複製的過程是由三個執行緒參與完成的。其中有兩個執行緒(SQL執行緒和IO執行緒)在Slave端,另一個執行緒(I/O執行緒)在Master端。
要實現MySQL的主從複製,首先必須開啟Master端的binlog記錄功能,否則就無法實現。因為整個複製過程實際上就是Slave從aster端獲取binlog日誌,然後再在Slave上以相同順序執行獲取的binlog日誌中的記錄的各種SQL操作
畫圖:
1)在Slave 伺服器上執行sart slave命令開啟主從複製開關,開始進行主從複製。
2)此時,Slave伺服器的IO執行緒會通過在master上已經授權的複製使用者許可權請求連線master伺服器,並請求從執行binlog日誌檔案的指定位置(日誌檔名和位置就是在配置主從複製服務時執行change
master命令指定的)之後開始傳送binlog日誌內容
3)Master伺服器接收到來自Slave伺服器的IO執行緒的請求後,其上負責複製的IO執行緒會根據Slave伺服器的IO執行緒請求的資訊分批讀取指定binlog日誌檔案指定位置之後的binlog日誌資訊,然後返回給Slave端的IO執行緒。返回的資訊中除了binlog日誌內容外,還有在Master伺服器端記錄的IO執行緒。返回的資訊中除了binlog中的下一個指定更新位置。
4)當Slave伺服器的IO執行緒獲取到Master伺服器上IO執行緒傳送的日誌內容、日誌檔案及位置點後,會將binlog日誌內容依次寫到Slave端自身的Relay Log(即中繼日誌)檔案(Mysql-relay-bin.xxx)的最末端,並將新的binlog檔名和位置記錄到master-info檔案中,以便下一次讀取master端新binlog日誌時能告訴Master伺服器從新binlog日誌的指定檔案及位置開始讀取新的binlog日誌內容
5)Slave伺服器端的SQL執行緒會實時檢測本地Relay Log 中IO執行緒新增的日誌內容,然後及時把Relay LOG 檔案中的內容解析成sql語句,並在自身Slave伺服器上按解析SQL語句的位置順序執行應用這樣sql語句,並在relay-log.info中記錄當前應用中繼日誌的檔名和位置點
主從複製條件
1、開啟Binlog功能
2、主庫要建立賬號
3、從庫要配置master.info(CHANGE MASTER to...相當於配置密碼檔案和Master的相關資訊)
4、start slave 開啟複製功能
知識點
1.3個執行緒,主庫IO,從庫IO和SQL及作用
2.master.info(從庫)作用
3.relay-log 作用
4.非同步複製
5.binlog作用(如果需要級聯需要開啟Binlog)
小結:
主從複製是非同步的邏輯的SQL語句級的複製
複製時,主庫有一個I/O執行緒,從庫有兩個執行緒,I/O和SQL執行緒
實現主從複製的必要條件是主庫要開啟記錄binlog功能
作為複製的所有Mysql節點的server-id都不能相同
binlog檔案只記錄對資料庫有更改的SQL語句(來自主庫內容的變更),不記錄任何查詢(select,show)語句
1.4 環境搭建
我們準備的是多例項,一臺伺服器開啟3個服務埠不同
環境準備:
[[email protected] 3307]# netstat -lntup|grep 330
tcp 000.0.0.0:33060.0.0.0:* LISTEN 3074/mysqld
tcp 000.0.0.0:33070.0.0.0:* LISTEN 33364/mysqld
tcp 000.0.0.0:33080.0.0.0:* LISTEN 34084/mysqld
主庫開啟Binlog功能
[[email protected] 3307]# grep log-bin /data/3306/my.cnf
log-bin =/data/3306/mysql-bin
設定server-id,此處ID不可以相同否則最後出現IO錯誤
[[email protected] 3307]# grep server-id /data/3306/my.cnf
server-id =1
[[email protected] 3307]# grep server-id /data/3307/my.cnf
server-id =3
[[email protected] 3307]# grep server-id /data/3308/my.cnf
server-id =2
========================================================
[[email protected] 3307]# grep server-id /data/{3306,3307,3308}/my.cnf
/data/3306/my.cnf:server-id =1
/
相關推薦
MySQL主從複製原理、半同步操作步驟及原理
1.1 企業Linux運維場景資料同步方案 1.1.1 檔案級別的異機同步方案 1、scp/sftp/nc 命令可以實現遠端資料同步。 2、搭建ftp/http/svn/nfs 伺服器,然後在客戶端上也可以把資料同步到伺服器。 3、搭建sa
mysql 主從複製 基於gtid的同步複製,並行複製,半同步複製
一、mysql 主從複製 1.主從形式 mysql主從複製 靈活 一主一從 主主複製 一主多從---擴充套件系統讀取的效能,因為讀是在從庫讀取的; 多主一從---5.7開始支援 聯級複製--- 2.主從複製的用途及部署條件 mysql主從複製用途 實時災備,
Mysql 主從復制之半同步復制(基於gtid)
半同步復制 server-id作用Mysql主從復制mysql主從復制原理:從庫有兩個線程IO線程和SQL線程1.從庫的IO線程向主庫的主進程發送請求,主庫驗證從庫,交給主庫IO線程負責數據傳輸;2.主庫IO線程對比從庫發送過來的master.info裏的信息,將binlog文件信息,偏移量和binlog文件
MySQL主從復制和半同步復制
MySQL主從復制MySQL主從復制和半同步復制 主從復制原理 1、主從復制主要是基於二進制日誌(binlog)進行的,二進制日誌記錄的是一個個完整的事件。 2、把主服務器的二進制日誌拿到從服務器再運行一遍。 3、復制過程: 1,slave端的IO線程連上master端,請求 2,master端返回給s
mysql 主從複製優化、並行複製
實驗環境: server2 為 server3 的 master server3 為 server1 的 master 即server1、2、3的身份如下: server2:master server3:master / slave
MySQL主從複製半同步複製原理及搭建
在MySQL5.5之前的版本中,MySQL的複製是非同步複製,主庫和從庫的資料之間存在一定的延遲,比如網路故障等各種原因,這樣子容易存在隱患就是:當在主庫寫入一個事務成功後並提交了,但是由於從庫延遲沒有及時得到主庫推送的Binlog日誌時,主庫突然宕機了,那麼此時從庫就可能損失這個事務,從而造成主從不一致的狀
mysql主從複製,基於GTID的主從、半同步複製、並行複製
環境: 實驗環境: rhel6.5 , selinux和iptables均為disabled狀態,mysql均為5.7.17,或者slave比master版本高 實驗主機: 172.25.254.2 server2:master 172.25.254.3 server3:s
Mysql主從複製、半同步複製、並行複製
一、主從複製 1.主從複製原理 MySQL之間資料複製的基礎是二進位制日誌檔案(binary log file)。一臺MySQL資料庫一旦啟用二進位制日誌後,其作為master,它的資料庫中所有操作都會以“事件”的方式記錄在二進位制日誌中,其他資料庫作為
MySQL主從複製,並行複製,半同步複製和組複製
主從複製 主從複製過程存在三個執行緒,Master端的I/O執行緒,Slave的I/O執行緒與SQL執行緒。Master端需要開啟binlog日誌,Slave端需要開啟relaylog。 1、Slave端的I/O讀取master.info檔案,獲取binlog檔名和位置點,然後向Mast
mysql主從複製,基於GTID主從複製,並行複製,半同步複製
複製方式: 主–從複製(A-B一主一從或者A-BC一主多從) 基於GTID複製 非同步複製 半同步複製 複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句 主從複製的原理其實就是把主伺服器上的bin日
配置mysql5.5主從複製、半同步複製、主主複製
mysql主伺服器 192.168.8.40 mysql從伺服器 192.168.8.41 全新配置過程(主和從資料庫都沒有資料): 主從複製主伺服器設定: 1.改server-id 2.啟用二進位制日誌 # mkdir /data/b
MySQL複製(非同步方式、半同步方式、GTID)總結
這是之前做的筆記,整體有些凌亂,後續有時間再整理一下格式!!!! 非同步複製:在主節點寫入日誌即返回成功,預設情況下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的複製功能是非
MySQL5.7主從複製,基於GTID主從複製、半同步、組複製、全同步解析
一、主從複製 1.環境 系統:redhat6.5 防火牆:保持關閉 selinux=disabled mysql主機:server1 172.25.32.4/24 mysql從機:server2 172.25.32.5/24 2.MySQL
MYSQL 完全備份、主從復制、級聯復制、半同步
-a 不返回 數據庫分離 rm -rf 是否 sin ice 備份數據庫 var mysql 完全備份 1,啟用二進制日誌,並於數據庫分離,單獨存放 vim /etc/my.cnf 添加 log_bin=/data/bin/mysql
+++++++DNS基本工作原理、DNS正反向解析及主從同步
博客 運維 linux dns基礎工作原理bind Berkerley Information Name DomainDNS Domain Name ServerTCP/UDP 53UDP 53 無連接協議,域名解析TCP 53 面向連接協議,區域傳送歷史IANA統一名字,自己hosts中維護(%
Mysql實現數據庫主從復制、主主復制、半同步復制
mysql 數據庫復制 主主復制 主從復制 半同步復制 --------------Mysql實現數據庫主從復制架構----------------一、環境準備:centos系統服務器2臺、一臺用戶做Mysql主服務器,一臺用於做Mysql從服務器,配置好yum源、防火墻關閉、各節點時鐘服
複習電商筆記-19-mysql主從複製接受和操作
第五天:MySQL主從複製+Amoeba讀寫分離 思考: 序號 知識點 型別 難度係數 掌握程度
44、mysql主從複製實戰
主從複製的配置 軟體版本 1.雙方的MySQL要一致 2.如果不一致:主的要低於從的 從哪兒開始複製: 1.都從0開始 2.主伺服器已經執行一段時間,並且存在不小的資料集:把主伺服器備份,然後在從伺服器恢復,從主伺服器上備份處的位置開始複製 配置過程: 主伺服器: 1.改s
45、mysql主從複製應用擴充套件
mysql主從複製應用擴充套件 1.主從伺服器的時間要同步(NTP) 建立一個時間伺服器 */5 * * * * /user/sbin/ntpdate ntpserver &> /dev/null 2.如何限制從伺服器只讀(配置在mysqld中) 在從伺服器上啟動read
mysql主從複製實現資料庫同步
1、Introduction 相信看過這篇文章的童鞋,都摩拳擦掌,躍躍一試了吧? 今天我們就來一次mysql主從同步實戰! 2、環境說明 os:ubuntu16.04 mysql:5.7.17 下面的實戰演練,都是基於上面的環境。當然,其他環境也大同小異。