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

使用場景

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

常見問題及解決方案

  • 複製延遲mysql

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

運行原理

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

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服務器vim

    [root] # vim /etc/my.cnf

    修改以下內容:centos

    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 slave@192.168.20.99 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主從複製運行原理及配置

相關文章
相關標籤/搜索