MYSQL的主從複製知識點整理
當單臺MYSQL伺服器無法滿足當前網站流量時的優化方案。需要搭建mysql叢集技術。
一、功能:
當向主伺服器插入|修改|刪除資料時,資料會自動同步到從伺服器。
注意:主從複製是單向的,只能主 -> 從
分為兩種型別:發射型(一主多從):一般使用在:備份、讀寫分離。
環形(多主多從):一般使用:當主伺服器壓力大時、跨地區的網站實現資料同步
在環形結構中,如果同時向三臺伺服器的同一表插入記錄會出現“ID衝突的問題”。
解決辦法:讓三臺伺服器生成不同的ID;
第一臺:1,4,7...
第二臺:2,5,8..
第三臺:3,6,9...
這個可以MYSQL的配置檔案中設定:
二、主從的原理(利用了bin日誌)
Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句(insert,update,delete,ALTER TABLE,grant等等)。主從複製的原理其實就是把主伺服器上的BIN日誌複製到從伺服器上執行一遍,這樣從伺服器上的資料就和主伺服器上的資料相同了。
擴充套件:mysql中的日誌:
查詢日誌錯誤日誌 Bin日誌
慢日誌:你可以設定一個時間閥值,如0.5秒,那麼將來所以執行時間超過這個值的SQL語句就會被記錄下來。這樣我們就可以把慢的SQL語句記錄下來,專門進行優化。
用途:可以快速定位到網站中比較拖網站的SQL,然後可以優化:建索引,快取這個SQL的結果。
三、實際的配置
把windows系統的MYSQL做為主伺服器,LINUX下的做為從伺服器。
主伺服器:
1. 開啟bin日誌
修改mysql的配置檔案:my.ini新增:
為伺服器指定一個server-id(主從伺服器的ID值不能重複)
如果是環形的伺服器需要新增以下項:
log-slave-updates = on // 如果是環形多伺服器,要設定這一項,
在主伺服器上為從伺服器建立一個用來同步資料的賬號
登入MYSQL
執行一個SQL:
建立了一個只有REPLICATION SLAVE許可權的賬號:使用者名稱:slave密碼:1234
在主伺服器執行SQL檢視主伺服器當前bin日誌的狀態
注意:每次修改資料時這兩個值都會改變,所以在查看了這兩個值之後,不要操作主伺服器、直接到從伺服器配置完成之後,否則這個值對應不上會同步失敗。
從伺服器(linux):
開啟bin日誌
修改配置檔案/etc/my.cnf
設定一個server-id:
3. 如果是環形的伺服器需要新增以下項:
log-slave-updates = on // 如果是環形多伺服器,要設定這一項,
4.在從伺服器上執行SQL語句配置主伺服器的地址:
登入MYSQL:
設定從伺服器並啟動複製功能
5.執行SQL查詢從伺服器的狀態是否配置成功:
如果是兩個YES那麼程式碼成功!完成!
說明:在配置成功之前,主伺服器上的資料不會自動到從伺服器上來。所以需要在配置之前先把主伺服器上的所有資料先手動的導到從伺服器上來,然後配置完主從之後,資料以後就同步了。
應用場合:
從伺服器做為資料的備份伺服器。當伺服器壓力比較大時可以使用主從伺服器實現讀、寫分離來分流減輕伺服器的壓力。跨地域網站的優化
製作一個留言板的功能,考慮到不同地域優化的架構思路?
以上就是關於MYSQL主從複製的全部原理知識點,感謝大家的學習和對我們的支援。