MySQL主從原理及配置詳解

2022-09-26 12:42:31 字數 3260 閱讀 8255

mysql主從配置及原理,供大家參考,具體內容如下

一、環境選擇:

1.centos 6.5

2.mysql 5.7

二、什麼是mysql主從複製

mysql主從複製是其最重要的功能之一。主從複製是指一台伺服器充當主資料庫伺服器,另一台或多台伺服器充當從資料庫伺服器,主伺服器中的資料自動複製到從伺服器之中。對於多級複製,資料庫伺服器即可充當主機,也可充當從機。mysql主從複製的基礎是主伺服器對資料庫修改記錄二進位制日誌,從伺服器通過主伺服器的二進位制日誌自動執行更新。

三、mysql主從複製的型別

1.基於語句的複製

主伺服器上面執行的語句在從伺服器上面再執行一遍,在mysql-3.23版本以後支援。

缺點:時間上可能不完全同步造成偏差,執行語句的使用者也可能是不同乙個使用者。

2.基於行的複製

把主伺服器上面改編後的內容直接複製過去,而不關心到底改變該內容是由哪條語句引發的,在mysql-5.0版本以後引入。

缺點:比如乙個工資表中有一萬個使用者,我們把每個使用者的工資+1000,那麼基於行的複製則要複製一萬行的內容,由此造成的開銷比較大,而基於語句的複製僅僅一條語句就可以了。

3.混合型別的複製

mysql預設使用基於語句的複製,當基於程式設計客棧語句的複製會引發問題的時候就會使用基於行的複製,mysql會自動進行選擇。

在mysql主從複製架構中,讀操作可以在所有的伺服器上面進行,而寫操作只能在主伺服器上面進行。主從複製架構雖然給讀操作提供了擴充套件,可如果寫操作也比較多的話(多台從伺服器還要從主伺服器上面同步資料),單主模型的複製中主伺服器勢必會成為效能瓶頸。

四、原理

1.主從(master-sl**e)

主伺服器上面的任何修改都會儲存在二進位制日誌binary lo裡面,從伺服器上面啟動乙個i/o thread(實際上就是乙個主伺服器的客戶端程序),連線到主伺服器上面請求讀取二進位制日誌,然後把讀取到的二進位制日誌寫到本地的乙個realy log裡面。從伺服器上面開啟乙個sql thread定時檢查realy log,如果發現有更改立即把更改的內容在本機上面執行一遍。

2.主從從(master-sl**e-sl**e)

一主多從的話,這時主庫既要負責寫又要負責為幾個從庫提供二進位制日誌。此時可以稍做調整,將二進位制日誌只給某一從,這一從再開啟二進位制日誌並將自己的二進位制日誌再發給其它從。或者是乾脆這個從不記錄只負責將二進位制日誌**給其它從,這樣架構起來效能可能要好得多,而且資料之間的延時應該也稍微要好一些。

【注意】

1.在老版本的mysql中,主從複製的sl**e段並不是由兩個程序完成的,而是由乙個程序完成的,之後就出現了很多風險和效能的相關問題。具體有以下問題:

1.乙個程序會使複製bin-log日誌和解析日誌並在自身執行的過程成為乙個序列的過程,效能受到了一定的限制,非同步複製的延遲也會比較長。

2. sl**e端從master端獲取bin-log過來之後,需要接著解析日誌內容,然後在自身執行。在這個過程中,master端可能又產生了大量變化並新增了大量的日誌。如果在這個階段master端的儲存出現了無法修復的錯誤,那麼在這個階段所產生的所有變更都將永遠無法找回。如果在sl**e端的壓力比較大的時候,這個過程的時間可能會比較長。

五、mysql主從複製的過程

1.兩種情況:同步複製和非同步複製,生產環境中大多數採用非同步複製。

2. 複製的基本過程:

1.sl**e上面的i/o程序連線上master,並請求從指定檔案的指定位置(或者從最開始的日誌)之後的日誌內容。

2.master接收到來自sl**e的io程序的請求後,負責複製的io程序會根據請求資訊讀取日誌指定位置之後的日誌資訊,返回給sl**e的io程序。返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊已經到master端的bin-log檔案的名稱以及bin-lvhswcwog的位置。

3.sl**e的io程序接收到資訊後,將接收到的日誌內容依次新增到sl**e端的relay-log檔案的最末端,並將讀取到的master端的 bin-log的檔名和位置記錄到master-info檔案中,以便在下一次讀取的時候能夠清楚的告訴master「我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我」。

4.sl**e的sql程序檢測到relay-log中新增加了內容後,會馬程式設計客棧上解析relay-log的內容成為在master端真實執行時候的那些可執行的內容,並在自身執行。

六、配置:

1.首先明確兩種情況:

1.兩台相互獨立的伺服器或虛擬機器。

2.兩台通過模板建立的虛擬機器。

2.下面對兩台伺服器進行命名,分別為:mysql主伺服器,mysql從伺服器。

3.主從伺服器分別進行如下操作:

1.mysql版本一致

2.初始化表

4.修改mysql主伺服器和mysql從伺服器:

vim /etc/my.cnf

[mysqld]

log-bin=取任意名稱 //啟用二進位制日誌

server-id=任意取數字 //伺服器唯一id,預設值是1,一般設定為ip位址的最後一段數字

5.若是第一種情況,直接重啟兩台伺服器;若是第二種情況,還需將兩台伺服器的auto.cnf檔案重新命名為auto.cnf.bak,然後重啟mysql服務。

6.在mysql主伺服器上建立賬戶並授權sl**e

grant replication sl**e on *.* to '使用者名稱'@'%' identified by '任意密碼';

7.查詢mysql主伺服器的狀態

show master status;

8.配置mysql從伺服器

change master to

master_host='mysql主伺服器ip位址',

master_user='之前在mysql主伺服器上面建立的使用者名稱',

master_password='之前建立的密碼',

master_log_file='mysql主伺服器狀態中的二進位制檔名',

master_log_pos='mysql主伺服器狀態中的position值';

9.啟用sl**e

start sl**e;

10.檢視mysql從伺服器的狀態

show sl**e status\g

檢視sl**e_io_running: yes //此狀態必須yes

sl**e_sql_running: yes //此狀態必須yes

全變yes說明主從配置成功,當mysql主伺服器有更新變化時,從伺服器會根據具體配置做相應的同步。

本文標題: mysql主從原理及配置詳解

本文位址: /shujuku/mysql/223286.html

mysql主從原理及配置

一 mysql集群架構 1 一主一從 2 雙主 3 一主多從 擴充套件mysql的讀效能 4 多主一從 5.7開始支援 5 聯機複製 關係圖 二 配置主從用途及條件 2.1用途 1 保障可用性,故障切換。2 提高效能,讀寫分離,讀在從庫。3 容災備份。2.2條件 1 主庫開啟bin log,並正確配...

MySQL主從延遲現象及原理分析詳解

一 現象 凌晨對線上一張表新增索引,表資料量太大 1億 資料,資料量50g以上 造成主從延遲幾個小時,各個依賴從庫的系統無法查詢資料,最終影響業務。現在就梳理下主從延遲的原理。二 原理 根據 mysql 官方文件 mysql replication implementation details 中的...

mysql主從配置

根據之前的二進位制免編譯安裝mysql 安裝倆臺mysql做好基礎配置 配置網路,關閉selinux 關閉防火牆 1.mysql主配置 vim etc my.cnf 還需要新增一條 log bin liwei basedir usr local mysql datadir data mysql po...