主從同步的原理:
1、主庫上面有一個IO線程,從庫上有一個IO線程和一個SQL線程,從庫中的IO線程負責從主庫讀取binlog,並寫入從庫的中繼日志;SQL線程負責讀取並執行中繼日志中的binlog,轉換sql語句后應用數據庫匯總
2、通信是:
從庫的IO線程給主庫發送同步請求,請求中包含用戶名密碼和binlog的文件名,pos點
主庫驗證成功后,發送從庫需要的binlog日志文件,和binlog文件中pos點
從庫的IO線程接收后,把binlog文件轉存到中繼日志的relay-log文件,並把binlog文件名和pos點記錄到master.info文件中,方便下次通信使用
從庫的SQl線程監測出relay-log文件后,把relay-log文件轉換為binlog文件在本地執行,並把relay-log文件名和pos點記錄到relay-log.info文件中
從庫再次發送下一輪的請求~~~
如果slave后面還掛有從庫則也要開啟binlog,並添加一個參數log-slave-updates