CASE20210625 - MYSQL架構及主從複製原理
阿新 • • 發佈:2021-06-25
1.MySQL及主從複製
1.1MySQL邏輯架構及原理
1.2主從複製前提
前提確認:
- 主伺服器一定要開啟二進位制日誌;
- 至少準備兩臺伺服器或者兩個例項;
- 從伺服器需要一次資料初始化;(如果都是新搭建不用初始化;如果執行一段時間,可以通過將主庫資料恢復到從庫)
- 主庫必須要有對從庫複製請求的使用者;
- 從庫必須要求relay-log設定,存放從主控傳送來的二進位制日誌;
- 第一次,從庫需要change master to去連線主庫;
- change master 資訊需要存放到master.info 中;
- 從庫如何知道主庫發生了變化?通過relay-log.info記錄的已經用過的relay-log資訊;
- 主從複製過程中的執行緒;
主庫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中