一、主從同步的原因
為了減輕服務器處理海量並發訪問所產生的性能問題,其中最主流的方案之一就是讀寫分離。
二、MySQL主從同步流程圖
三、主從庫如何同步
1、 Master主服務器將對數據的操作記錄到二進制日志中(Binary log),MySQL將事務串行(交叉執行)的寫入二進制日志;
2、Slave從服務器將二進制日志(Binary log)copy到中繼日志當中(Relay log)。首先,slave開始一個工作線程——I/O線程。
- slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接;
- 開始binlog dump process;
- 如果binlog dump process已經跟上master,它會睡眠並等待master產生新的事件。
- I/O線程將這些事件寫入中繼日志;
- SQL slave thread(SQL從線程)從中繼日志讀取事件,並重放其中的事件而更新slave的數據,使其與master中的數據一致
四、為什么需要中繼日志(Relay log)
由於網絡等原因,Binary log不可能一口氣存到 I/O thread中,所以Relay log中用來緩存Binary log的事件。(Relay log存儲在從服務器slave緩存中,開銷比較小)
五、需要注意的點
- master和slave連接,slave會在master中打開一個連接,使得master也開始一個線程;
- 復制在slave上是串行化的,即master上的並行更新操作不能在slave上並行操作
六、主從同步優點
- 主庫寫,從庫讀,降低服務器壓力;
- 在從主服務器進行備份,避免備份期間影響主服務器服務,保證數據安全;
- 當主服務器出現問題時,可以切換到從服務器,提高性能
七、主從同步數據庫設置
1、連接上MySQL
2、在主服務器Master中做相關配置
設置server-id,log-bin,log-bin-index
重啟主服務器數據庫
show master status
創建repl賬戶並賦給權限,並刷新
3、從服務器進行相關配置
修改配置文件
設置server-id,relay-log-index,relay-log
重啟從服務器數據庫
進行設置
start slave
show slave status (/G,將內容豎向顯示)
4、驗證
主庫File和position與從庫一致,則證明主從同步了
5、(附加)數據庫可設置一個用來遠程訪問的賬戶(%代表遠程訪問)