1. 程式人生 > 其它 >CASE20210625 - MYSQL架構及主從複製原理

CASE20210625 - MYSQL架構及主從複製原理

1.MySQL及主從複製

1.1MySQL邏輯架構及原理

1.2主從複製前提

前提確認:

  1. 主伺服器一定要開啟二進位制日誌;
  2. 至少準備兩臺伺服器或者兩個例項;
  3. 從伺服器需要一次資料初始化;(如果都是新搭建不用初始化;如果執行一段時間,可以通過將主庫資料恢復到從庫)
  4. 主庫必須要有對從庫複製請求的使用者;
  5. 從庫必須要求relay-log設定,存放從主控傳送來的二進位制日誌;
  6. 第一次,從庫需要change master to去連線主庫;
  7. change master 資訊需要存放到master.info 中;
  8. 從庫如何知道主庫發生了變化?通過relay-log.info記錄的已經用過的relay-log資訊;
  9. 主從複製過程中的執行緒;
    主庫binlog dump thread:負責響應從庫IO thread請求;
    從庫IO thread:負責連線主庫,請求binlog,接收binlog並寫入relay-log;
    從庫sql thread:負責執行relay-log中的事件;

1.3主從複製框架圖和原理

主從複製原理:

1.從庫通過手工執行change master to 語句連線主庫,提供連結使用者條件(user/password/port/ip),並且記錄主庫二進位制日誌的起始位置(file名、position號);
2.從庫的IO執行緒和主庫的dump執行緒建立連線;
3.從庫根據change master to提供file名和position號,IO執行緒向主庫發起binlog請求;
4.主庫dump執行緒根據從庫請求,將本地binlog以events方式發給從庫IO執行緒;
5.從庫IO執行緒接收binlog events,並放到本地relay-log中,傳送過來的資訊,會記錄到master.info中;
6.從庫sql執行緒應用relay-log,並把應用過的記錄到relay-log.info,預設情況下,已經應用過的relay會自動被清理purge;
以上為一次完整主從複製,一旦主從執行起來,就不需要手工執行change master to,因為資訊都會被存到master.info中