程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL知識總結(四)復制的原理,mysql知識總結原理

MySQL知識總結(四)復制的原理,mysql知識總結原理

編輯:MySQL綜合教程

MySQL知識總結(四)復制的原理,mysql知識總結原理


1 復制概述

1.1、復制解決的問題

數據復制技術有以下一些特點:

(1) 數據分布

(2) 負載平衡(load balancing)

(3) 備份

(4) 高可用性(high availability)和容錯


1.2、復制如何工作

從高層來看,復制分成三步:

(1) master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件,binary log events);

(2) slave將master的binary log events拷貝到它的中繼日志(relay log);

(3) slave重做中繼日志中的事件,將改變反映它自己的數據。

下圖描述了這一過程:

           該過程的第一部分就是master記錄二進制日志。在每個事務更新數據完成之前,master在二進制日志記錄這些改變。MySQL將事務串行的寫入二進制日志,即使事務中的語句都是交叉執行的。在事件寫入二進制日志完成後,master通知存儲引擎提交事務。
下一步就是slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然後開始binlog dump process。Binlog dump process從master的二進制日志中讀取事件,如果已經跟上master,它會睡眠並等待master產生新的事件。I/O線程將這些事件寫入中繼日志。


        SQL slave thread處理該過程的最後一步。SQL線程從中繼日志讀取事件,更新slave的數據,使其與master中的數據一致。只要該線程與I/O線程保持一致,中繼日志通常會位於OS的緩存中,所以中繼日志的開銷很小。
此外,在master中也有一個工作線程:和其它MySQL的連接一樣,slave在master中打開一個連接也會使得master開始一個線程。復制過程有一個很重要的限制——復制在slave上是串行化的,也就是說master上的並行更新操作不能在slave上並行操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved