1. 程式人生 > >Mysql + keepalived 實現雙主熱備讀寫分離

Mysql + keepalived 實現雙主熱備讀寫分離


架構圖

系統:CentOS6.4_X86_64
軟體版本:Mysql-5.6.12,Keepalived-1.2.7
環境簡介:
1.Master-A 192.168.1.168 (Mysql+Keepalived)
2.Master-B 192.168.1.169 (Mysql+Keepalived)
3.寫入VIP 192.168.100 (168主,169從)
4.讀取VIP 192.168.200 (169主,168從)
此處略過Mysql和Keepalived的安裝過程,請讀者自行查詢相關的安裝指導資料.

工作流程圖

複製實現原理(適用於Mysql 5.5及之前的版本):

MySQL支援單向,非同步複製,複製過程中一個伺服器充當主伺服器,而另外一個或多個其它伺服器充當從伺服器。

MySQL複製基於主伺服器在二進位制日誌中跟蹤所有對資料庫的更改(插入、更新、刪除等等),必須在主伺服器上啟用二進位制日誌。

MySQL使用3個執行緒來執行復制同步功能,其中兩個執行緒(Sql執行緒和IO執行緒)在從伺服器,另外一個執行緒(IO執行緒)在主伺服器。

當從伺服器發出start slave服務時,從伺服器建立一個I/O執行緒,以連線主伺服器並讓它傳送記錄在其二進位制日誌中的語句。

主伺服器建立Binlog Dump執行緒將二進位制日誌中的內容傳送到從伺服器。

從伺服器I/O執行緒讀取主伺服器Binlog Dump執行緒傳送的內容並將該資料拷貝到從伺服器資料目錄中的本地檔案中(中繼日誌),接收到的日誌內容依次寫入到 Slave 端的Relay Log檔案(mysql-relay-bin.xxxxxx)的最末端,並將讀取到的Master端的bin-log的檔名和位置記錄到master- info檔案中,以便在下一次讀取的時候能夠清楚的告訴Master“我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我”。SQL執行緒讀取中繼日誌並執行日誌中包含的更新。在從伺服器上,讀取和執行更新語句被分成兩個獨立的任務。

當從伺服器啟動時,其I/O執行緒可以很快地從主伺服器索取所有二進位制日誌內容,然後執行sql執行緒。

Mysql 5.6 特性

由於Mysql 5.6 引入了 GTID(Global Transaction ID),保證 Slave 在複製的時候不會重複執行相同的事務操作;其次,是用全域性事務 IDs 代替由檔名和物理偏移量組成的複製位點,定位 Slave 需要複製的 binlog 內容,在舊的 binlog 事件基礎上新增兩類事件

1.Previous_gtids_log_event 該事件之前的全域性事務 ID 集合
2.Gtid_log_event 標記之後的事務對應的全域性事務 ID

MySQL 5.6 的 binlog 檔案中,每個事務的開始不是 “BEGIN” ,而是 Gtid_log_event 事件。

優點:
1.使用 GTIDs 作為主備複製的位點,在寫 binlog 時用 Gtid_log_event 標記事務

2.主從複製不再基於master的binary logfile和logfile postition,從伺服器連線到主伺服器之後,把自己曾經獲取到的GTID(Retrieved_Gtid_Set)發給主伺服器,主伺服器把從伺服器缺少的GTID及對應的transactions發過去即可.

3.採用多個sql執行緒,每個sql執行緒處理不同的database,提高了併發效能,即使某database的某條語句暫時卡住,也不會影響到後續對其它的database進行操作.

配置Master-Master

一.建立同步使用者

分別在兩臺mysql上執行

1 2 mysql> grant replication slave on *.* to 'replicate'@'%' identified by '123456'; mysql> flush privileges;

二.修改my.cnf

修改 /etc/my.cnf 前最好做個備份

Master-A 的my.cnf配置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 binlog-format=ROW //二進位制日誌的格式,有row、statement和mixed幾種型別, log-slave-updates=true gtid-mode=on //啟用GTID enforce-gtid-consistency=true //啟用GTID master-info-repository=TABLE//預設是file,選擇table方式儲存 relay-log-info-repository=TABLE//預設是file,選擇table方式儲存 sync-master-info=1 //實時同步 slave-parallel-workers=2 //設定從伺服器的SQL執行緒數;0表示關閉多執行緒複製功能 binlog-checksum=CRC32 //日誌校驗 master-verify-checksum=1//啟用校驗 slave-sql-verify-checksum=1//啟用校驗 binlog-rows-query-log-events=1//只對row-based binlog有效 server-id=1

相關推薦

Mysql + keepalived 實現分離

架構圖 系統:CentOS6.4_X86_64 軟體版本:Mysql-5.6.12,Keepalived-1.2.7 環境簡介: 1.Master-A 192.168.1.168 (Mysql+Keepalived) 2.Ma

Mysql+Keepalived(vrrp_script)高可用

我們通常說的雙機熱備是指兩臺機器都在執行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管並且提供服務,而且切換的時間非常短。MySQL雙主複製,即互為Master-Slave(只有一個Master提供寫操作),可以實現資料庫伺服器的熱備,但是一個Master

keepalived實現

lin fire per 安裝 arp index 正常 綁定 type   keepalived的作用是檢測後端TCP服務的狀態,如果有一臺提供TCP服務的後端節點死機,或者工作出現故障,keepalived會及時檢測到,並將有故障的節點從系統中剔除,當提供TCP服務的節

使用keepalived實現

figure 設置 dha boa message mtu hat 並不是 pid 通常說的雙機熱備是指兩臺機器都在運行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管並且提供服務,而且切換的時間非常短。下面來以keepalived

mysql主從配置實現一從分離

配置文件 狀態 main ado man datadir lai community more 主從介紹 定義 Mysql主從又叫Replication、AB復制。簡單講就是A與B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,實現數據實時同步 mysql主從是

Nginx+keepalived實現負載均衡(模式)

nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali

Mysql+Keepalived高可用操作步驟詳細解析

eve 腳本 server設置 not find 實驗 本地ip help oracle 查看 mysql+keepalived雙主熱備高可用的介紹: 我們通常說的雙機熱備是指兩臺機器都在運行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上

mysql複製-mysql實現

雙主熱備架構圖。 1.slave開啟binlog 開啟3308埠資料的配置,新加 log-bin  、 binlog_format 和log_slave_updates  配置項。 [email protected]:[/usr/local/data/

nginx(四) nginx+keepalived 實現+模型的高可用負載均衡代理服務

nginx(四) nginx+keepalived 實現主備+雙主熱備模型的高可用負載均衡代理服務        在前面《nginx配置:反向代理 負載均衡 後端健康檢查 快取》等幾篇文章中,我們配置了nginx的反向代理負載均衡WEB叢集,而在《keepalived

解決Nginx + Keepalived主從+自動切換,實現負載均衡及高可用

解決Nginx + Keepalived主從雙機熱備+自動切換,實現負載均衡及高可用 IP 伺服器 服務 192.168.1.10 lb-node1 Nginx、kee

Mysql架構搭建

背景知識: 在mysql主從架構篇我詳細介紹了主從架構的搭建,傳送門。主從架構的原理就是主節點將所有的修改事件記錄到binlog中,然後從節點將主節點binlog中的事件拷貝到自己的中繼日誌(relay log)中,從節點再重做中繼日誌將修改反映成自己的資料。 主從架構資料是單向的,

搭建MySql資料庫的主從及實現(資料庫的高可用)

1. 用的CentOS7,因為CentOS7自帶mariadb,所以首先解除安裝mariadb.不解除安裝安裝mysql會有衝突,以前安裝過mysql也要解除安裝 2. 解除安裝mariadb                     執行命令(會列出所有的mariad

centos7中MySQL5.7+keepalived

mysql主主備份原理:複製過程中一個伺服器充當主伺服器,另一個或多個充當從伺服器,主伺服器將更新寫入二進位制日誌,並維護日誌檔案的一個索引以跟中日誌迴圈。當一個從伺服器連線到主伺服器時,它通知主伺服器上次更新的位置,從伺服器就接收主伺服器從那時起發生的變更,然後封鎖並等待主

keepalived + rsync +inotify-tools實現

## 1.需求 實現資料交換系統的主備自動切換功能,當資料交換的master主機故障,網路故障以及資料交換mysql服務出現故障時,能自動切換到備機執行。 ## 2.實現思路 採用keepalived+rsync+ inotify雙backup模式,並設定不搶佔資源。當ma

Mycat+Mysql主從復制實現

偏移 官方 搭建 jdk1 stat 普通用戶 系統 sch 支持 Mycat+Mysql主從復制實現雙機熱備 一、mysql主從配置原理 雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持

keepalived+nginx+負載均衡

ethernet auth 超時任務 collision boot .rpm ocl bnl host keepalived+nginx雙機熱備+負載均衡最近因業務擴展,需要將當前的apache 轉為nginx(web), 再在web前端放置nginx(負載均衡)。同時結合

Linux學習總結(五十四)keepalived+lvs 負載均衡架構

DR LVS keepalived+lvs 一 LVS IP tunnel 模式介紹 IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標為一個IP地址的數據報文能被封裝和轉發到另一個IP地址。IP隧道技術亦稱為IP封裝技術(IP encapsulatio

Haproxy+Keepalived)搭建高可用web架構

ise mark 高可用web keepalive email protocol rip 火墻 詳情 1、目的搭建web高可用架構,用haproxy作為前段負載均衡分攤後端web服務器壓力,Keepalived保證haproxy的存活(雙機熱備:一臺haproxy掛了,自動

兩臺Linux完美實現

兩臺Linux完美實現雙機熱備 2012年09月22日 18:57:30 閱讀數:1844 http://www.51testing.com/html/06/n-186706-4.html 一直想做基於linux的雙機熱備,一直沒有時間和機會。一直以為只要做雙機熱備的實驗就必須兩臺機

keepalived)深度解析

以下內容為親自研究得出的結果: 雙機熱備切換時間: 主機interval*主機fail+檢測時間(檢測指令碼執行時間)與備機interval*備機rise+檢測時間(檢測指令碼執行時間)中較大的那個