mysql主從複製運行原理及配置

使用場景

  • 主數據庫服務器故障後,可切換到從數據庫繼續工作
  • 不影響主數據庫的性能的工作,比如在從數據庫作備份、數據統計等工作

常見問題及解決方案

  • 複製延遲

    可以利用同步複製機制(Semi-sync)解決,但是影響性能,當主機寫入時,確認更新已經同步到備機之後,再返回寫操作成功。
    主從架構是一種高可用的解決方案,並不是處理高併發的,處理高併發可利用redis緩存來解決。

運行原理

從一個mysql instance(master)複製到另一個mysql instance(slave)的過程我們稱之爲mysql主從複製。在mysql複製的過程中,主要由3個線程完成sql線程和IO線程在slave,另一個IO線程在matser。

mysql複製的基本過程如下:

  1. slave上的IO線程連接master,請求日誌文件指定位置或者最開始的位置之後的日誌內容
  2. master接收請求,並通過負責複製的IO線程根據請求的信息讀取日誌文件內容,將日誌信息和master端的Binary Log文件的名稱以及在Binary Log中的位置返回給slave的IO線程
  3. slaveIO線程接收到信息後,將日誌內容寫到Relay Log文件最末尾,並將master端的bin-log的文件名和位置記錄到master-info文件中。下次請求時可告知master需要請求的位置
  4. slave的sql線程檢測到Relay Log文件新增後,執行此日誌文件的sql語句

實施環境

 系統環境:centos7
 MySQL版本:5.7.17
 主服務器(master)IP:192.168.20.101
 從服務器(slave)IP:192.168.20.99

配置

  • 配置master服務器

    [root] # vim /etc/my.cnf

    修改如下內容:

    server-id=101 #設置服務器唯一的id,默認是1
    log-bin=mysql-bin #啓用二進制日誌

  • 配置slave服務器

    [root] # vim /etc/my.cnf

    修改如下內容:

    server-id=99 #設置服務器唯一的id,默認是1
    replicate-do-db=cto #只同步cto庫
    slave-skip-errors=all #忽略因複製出現的所有錯誤

  • 重啓主從mysql服務

    [root] # service mysqld restart
  • 在master上給slave授權

    [root] # >grant replication slave on *.* to [email protected] identified by "123456789";

    mysql主從複製運行原理及配置

  • 查看master上數據庫狀態

    [root] # >show master status;

    mysql主從複製運行原理及配置

    • 在slave執行sql語句的同步
    [root] # >change master to master_host='192.168.20.101', master_user='slave', master_password=rd='123456789', master_log_file='mysql-bin.000001', master_log_pos=442;

    mysql主從複製運行原理及配置

  • 開啓salve同步
[root] # >start slave;

mysql主從複製運行原理及配置

  • 查看slave同步狀態
[root] # >show slave status \G;

mysql主從複製運行原理及配置

  • 檢驗
    主(master)
    mysql主從複製運行原理及配置

    從(slave)
    mysql主從複製運行原理及配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章