一:MySQL複製:
MySQL複製簡介:
將master伺服器中主要資料庫的ddl和dml操作通過二進位日誌傳到slaves伺服器上,然後在master伺服器上將這些記錄檔重新執行,從而使得slave伺服器和master伺服器上的資料資訊保持同步。
Mysql複製的原理:
將資料分布到多個系統上去,是通過將Mysql的某一台master主機的資料複製到其它(slave)主機上,並重新執行一遍來實現的;
複製過程中一個伺服器充當master伺服器,而一台或多台其它伺服器充當slave伺服器。master伺服器將更新寫入二進位記錄檔,並維護檔案的一個索引以追蹤記錄檔迴圈。
這些日誌可以記錄發送到slave伺服器的更新。當一個slaves伺服器串連master伺服器時,它通知master伺服器從伺服器在日誌中讀取的最後一次成功更新的位置。slave伺服器接收從那時起發生的任何更新,然後封鎖並等待master伺服器通知新的更新。
推薦閱讀:
生產環境MySQL主主同步主鍵衝突處理
MySQL + KeepAlived + LVS 單點寫入主主同步高可用架構實驗
MySQL 主主同步配置
CentOS 6.3下MySQL主從複製筆記
mysql複製的優點:
在slave伺服器上執行查詢操作,降低master伺服器的訪問壓力
當master伺服器上出現了問題可以切換到slave伺服器上,不會造成訪問中斷等問題
在slave伺服器上進行備份,以避免備份期間影響master伺服器的服務使用及日常訪問
Mysql自身的複製功能:是構建大型、高效能應用程式的基礎。
mysql支援的複製類型:
基於語句的複製:在主伺服器上執行的SQL語句,在從伺服器上執行同樣的語句。MySQL預設採用基於語句的複製,效率比較高。一旦發現沒法精確複製時,會自動選著基於行的複製。
基於行的複製:把改變的內容複寫過去,而不是把命令在從伺服器上執行一遍. 從mysql5.0開始支援
混合類型的複製::預設採用基於語句的複製,一旦發現基於語句的無法精確的複製時,就會採用基於行的複製。
MySQL複製技術的特點:
資料分布 (Data distribution )
備份(Backups)
Server Load Balancer(load balancing)
高可用性和容錯性 High availability and failover
複製的工作過程:
master將改變記錄到二進位日誌(binary log)中(這些記錄叫做二進位日誌事件,binary log events);
slave將master的binary log events拷貝到它的中繼日誌(relay log);
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從線程)處理該過程的最後一步。SQL線程從中繼日誌讀取事件,並重放其中的事件而更新slave的資料,使其與master中的資料一致。只要該線程與I/O線程保持一致,中繼日誌通常會位於OS的緩衝中,所以中繼日誌的開銷很小。
接下來請看第2頁: