天天看點

Mysql 主從複制

1. 主從複制原理:

  slave(從mysql資料庫)通過I/O線程讀取Master(主mysql資料庫),讀取binary log events 并寫入中繼日志(relay log),slave 執行中繼日志中事件,将中繼日志中日志記錄一條條執行到本地存儲,進而通過這兩個線程主從資料同步

2.步驟

  1)準備2台機器(master:192.168.56.101;slave:192.168.56.102)

   2)在master主機

    2.1 修改C:\ProgramData\MySQL\MySQL Server 8.0\my.ini檔案(這個檔案一般都在這個位置,修改完此檔案都需要重新開機mysql服務)

      修改:server-id=1(這裡的id值需與slave中相應位置不同,表明不同服務)

      修改:log-bin="WIN-PO1I559INRE-bin"(這裡填寫路徑,開啟了binlog機制同時配置log-bin日志路徑在相對路徑WIN-PO1I559INRE-bin下)

      (binlog_format=mixed--兩種方式混合

      binlog-do-db = testdb --做主從同步的資料庫名

      binlog-ignore-db = mysql --指定同步的資料庫

      binlog-ignore-db = performance_schema --指定忽略的資料庫

      binlog-ignore-db = information_schema)這幾個配置可做更細節的配置

      重新開機mysql:   net restart mysql可以在services頁面手動重新開機mysql服務),重新開機後即可看到在如下路徑新增了***-bin.00002,這就是日志檔案

    2.2 在master主機上,為slave配置使用者名,密碼,同時賦予slave權限

      建立使用者:create user 'repl'@'192.168.56.102' identified by '!@34QWer';(其中192.168.56.102是slave的ip位址,這樣在slave主機中就可以通過repl通路master上的日志檔案了)

      配置設定權限:grant replication slave on *.* to 'repl'@'192.168.56.102';

      讓建立使用者配置設定權限生效需要執行:flush privileges;

  3)在slave主機

    3.1 修改C:\ProgramData\MySQL\MySQL Server 8.0\my.ini檔案(這個檔案一般都在這個位置,修改完此檔案都需要重新開機mysql服務)

      修改:server-id=2(不能與master的server-id一樣)

      修改:如果log-bin也被配置上了需要手動注釋上,這裡不需要配置

      重新開機mysql: 可以在services頁面手動重新開機mysql服務

    3.2 開始配置slave能夠拿到想要監聽的master日志檔案(bin-log),執行以下指令

      執行stop slave 先停止同步操作;

      在修改slave主機的master為我們想要監聽的master這裡是(192.168.56.101):

        CHANGE MASTER TO MASTER_HOST='192.168.56.101', MASTER_USER='repl', MASTER_PASSWORD='!@34QWer', MASTER_LOG_FILE='WIN-PO1I559INRE-bin.000004', MASTER_LOG_POS=1098;

        (192.168.56.101:主機master位址,repl:master主機上配置設定的使用者,master-log-file:master上的日志檔案名稱可通過在master主機上執行show master status 檢視到日志檔案名稱和下面一個變量postion值)

      配置完成後,執行start slave 開始同步操作。

  4)驗證是否配置成功

    在slave機器上執行:show slave status;

    發現這兩個字段是yes;

    在master機器上執行:show processlist;看到下面内容

     最後在測試一下,即可判斷主從複制做好!

  5)可能出現的錯誤

    當執行show slave status;後 其中Slave_IO_Running 為running時,說明沒有配置成功,處理,具體參考

    https://cloud.tencent.com/info/3ce6fb6c2d65bd337b37e591b46a3557.html

參考:連結: https://pan.baidu.com/s/1IFzijJLI_zJedi8t1otxdQ 提取碼: v1ve

不虛度光陰,享受生命裡的每一天!

繼續閱讀