MySQL主從複製架構及原理
一、簡介
在實際生產中,數據的重要性不言而喻,因此考慮到數據的重要性比如單點故障導致後端資料庫奔潰,或者後端資料庫訪問壓力過大等,mysql資料庫做主從非常有必要,減輕後端資料庫壓力,主伺服器負責讀寫,從伺服器只負責讀,這樣一來即保證了數據的可靠性,同時提高伺服器的高可用。
MySQL主從複製架構如圖:
MySQL主從複製原理:
master伺服器將數據的改變記錄二進位日誌,當master上的數據發生改變時,則將其改變寫入二進位日誌中,salve伺服器會在一定時間間隔內對master二進位日誌進行探測其是否發生改變,如果發生改變,則開始一個I/OThread請求master二進位事件,同時主節點為每個I/O線程啟動一個dump線程,用於向其發送二進位事件,並保存至從節點本地的中繼日誌中,從節點將啟動SQL線程從中繼日誌中讀取二進位日誌,在本地重放,使得其數據和主節點的保持一致,最後I/OThread和SQLThread將進入睡眠狀態,等待下一次被喚醒。
二、主從複製配置實現
要求:
1、雙方mysql版本需一致,如不一致,只要主節點低於從節點
2、兩節點間時間需同步
配置:
主伺服器配置如下:
1、修改/etc/my.cnf配置文件
log-bin=/mydata/data/binlogs/master-bin
2、創建此目錄並修改屬組屬主為mysql
mkdir /mydata/binlogs/
chown -R mysql.mysql /mydata/binlogs/
3、授權用戶
grant replication slave,replication client on *.* to 'repluser'@'10.1.10.%' identified by 'pass';
flush privileges;
從伺服器配置如下:
1、修改/etc/my.cnf配置文件,注釋二進位日誌,開啟中繼日誌,修改server-id和主節點不一致
server-id=11
relay-log=/mydata/relaylogs/relay-bin
2、創建其目錄並授予此目錄的屬主、屬組為mysql
mkdir /mydata/relaylogs/
chown -R mysql.mysql /mydata/relaylogs/
3、連接主伺服器
change master to master_host='10.1.10.1',master_user='repluser',master_password='pass';
完成上訴配置過程即可各自啟動mysql伺服器,且在從伺服器上啟動I/O,SQL線程,例如:start slave
測試兩數據可數據是否能同步,則可在主庫上插入數據在從庫上查看是否存在,注意:從庫只能讀,而不能寫
三、實戰:主從不同步時,如何進行數據同步至一致
描述:當主伺服器已經運行一段時間,並且存在不小的數據時,則需把主伺服器備份,然後在從伺服器恢復,從備份時所在的位置開始複製。
1、將主伺服器上的數據做完全備份
2、在從伺服器上導入主服務上的完全備份,在導入時關閉I/O和SQL線程
總結:此實戰中最為關鍵主要有兩步主伺服器上鎖表做完全備份,並滾動日誌,從伺服器上進行半道恢復.
文章來源:馬哥教育
官方微信:馬哥linux運維
TAG:馬哥Linux |
※理解MySQL架構
※MySQL主從複製實踐
※MYSQL M-S主從架構
※MySQL資料庫主從複製
※MySQL主從複製模式與複製過濾
※MySQL主從(MS)、主主(MM)複製
※MySQL主從複製使用方法
※基於 Docker 搭建 MySQL 主從複製
※MySQL 程序管理
※MySQL集群架構:MHA+MySQL-PROXY+LVS實現MySQL集群架構高可用等
※MySQL-體系結構簡介
※MySQL內部開發人員如何看待MySQL組複製?
※MySQL簡介與啟動MySql
※MySQL操作之DCL
※MySQL 的編程
※MySQL 安裝
※MySQL查詢執行
※Oracle MySQL雲服務入門系列1:創建MySQL實例
※Oracle MySQL雲服務入門系列3:MySQL實例生命周期管理
※《MySQL雲資料庫架構設計與實踐》主題分享