Mysql有關複製
Chapter 6. Replication in MySQL
6.1. Introduction to Replication
Mysql 3.23以上版本支援單向複製,一個伺服器作為主伺服器,一個或者多個其他的伺服器作為從伺服器。
主伺服器寫更新到二進位制的日誌檔案,日誌迴圈紀錄,保持一個索引。從伺服器通知主伺服器它最後成功更新的日誌點,取得這點之後的所有更新並同步,然後等待主伺服器通知新的更新。
從伺服器也可以作為主伺服器,如果你建立鏈狀的複製。注意,如果你使用複製,則所有的更新應該在主伺服器上執行,否則會出現主從之間的資料衝突。
單向複製特點:
² 如果主伺服器有問題,可以切換到從伺服器
² 可以在從伺服器上執行查詢操作,降低主伺服器的負載。
² 可以在從伺服器上執行備份,以避免影響主伺服器。
6.2. Replication Implementation Overview
複製是基於主伺服器的二進位制日誌,所以必須開啟二進位制日誌。(這裡和oracle的歸檔機制很類似)
從伺服器接受主伺服器的日誌並更新以保持和主伺服器的同步。
從伺服器必須在主伺服器啟動二進位制日誌以後開始建立,否則不能同步。
可以使用LOAD DATA FROM MASTER語法拷貝主資料庫德資料,這個命令在4.0.0以後提供,而且只可以針對MYISAM型別的表。這個命令執行的時候,在表上建立一個全域性的讀鎖,所以在資料傳輸到從伺服器時,不能執行更新操作。
推薦在傳輸的資料集比較小或者主資料庫可以接受比較長時間的鎖定的前提下使用這個語法。
LOAD DATA FROM MASTER的速度隨系統的不同而不同,但是粗略統計是1秒鐘1M資料,如果你的主從伺服器作業系統大致等同於700M奔騰100M網路卡,則應該接近於這個值。
在從伺服器按照主伺服器建立以後,從伺服器會連線到主伺服器並等待更新,如果和主伺服器的連線出現問題,會週期性的重試,重試的時間間隔由引數--master-connect-retry設定,預設是60秒。
當前需要更新那個日誌以及更新了哪些日誌都記錄在從伺服器中,不會記錄在主伺服器中。
6.3. Replication Implementation Details
複製通過三個程式來實現,一個在主伺服器上執行,兩個在從伺服器上執行。當執行了START SLAVE命令以後,從伺服器建立了一個I/O執行緒,這個執行緒連線到主伺服器,請求二進位制的日誌檔案。主伺服器建立一個執行緒傳送檔案到從伺服器,如果你在主伺服器上使用SHOW PROCESSLIST顯示程式,則Binlog Dump就是這個執行緒。從伺服器讀主伺服器的Binlog Dump執行緒傳送的內容,拷貝到一個叫relay logs的目錄。第三個執行緒是sql執行緒,是在從伺服器上讀relay logs並且更新內容的。
一個主伺服器可以對應多個從伺服器,在主伺服器上啟動一個執行緒對應從伺服器,每個從伺服器上都啟動自己的I/O和sql執行緒。
在4.0.2之前的版本中,複製只包括兩個執行緒,在主從伺服器上各一個,從伺服器上的拷貝和執行是一個執行緒,不需要寫relay logs。
那麼把拷貝和執行拆成兩個單獨得任務的好處是拷貝和執行的速度是不同的,這和oracle是類似的,拷貝和執行的程式是分開的,互相沒有影響。
我們可以在主伺服器上看到的程式:
mysql> show processlist G
*************************** 1. row ***************************
Id: 19
User: root
Host: localhost
db: lisa_db
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 23
User: repl
Host: *:32796
db: NULL
Command: Binlog Dump
Time: 449
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
2 rows in set (0.00 sec)
我們可以在從伺服器上看到的程式:
mysql> show processlist G
*************************** 1. row ***************************
Id: 8
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 9
User: system user
Host:
db: NULL
Command: Connect
Time: 486
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 10
User: system user
Host:
db: NULL
Command: Connect
Time: 486
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
3 rows in set (0.00 sec)
6.3.1. Replication Master Thread States
以下列出的是常見的主伺服器Binlog Dump執行緒的狀態,如果看不到這個程式,則複製沒有執行。
• Sending binlog event to slave
• Finished reading one binlog; switching to next binlog
• Has sent all binlog to slave; waiting for binlog to be updated
• Waiting to finalize termination
6.3.2. Replication Slave I/O Thread States
以下列出的是常見的從伺服器I/O執行緒的狀態,從4.1.1開始,這個狀態也可以通過SHOW SLAVE STATUS命令的Slave_IO_State列顯示。
• Connecting to master
• Checking master version
• Registering slave on master
• Requesting binlog dump
• Waiting to reconnect after a failed binlog dump request
• Reconnecting after a failed binlog dump request
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/51862/viewspace-180646/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- MySQL複製MySql
- MySQL 複製MySql
- mysql複製--主從複製配置MySql
- MySQL入門--MySQL複製技術之主從複製MySql
- MySQL入門--MySQL複製技術之主主複製MySql
- MySQL 8 複製(三)——延遲複製與部分複製MySql
- MySQL 8 複製(一)——非同步複製MySql非同步
- MySQL 8 複製(二)——半同步複製MySql
- MySQL主從複製_複製過濾MySql
- MySQL 組複製MySql
- MySQL表複製MySql
- MySQL複製FAQMySql
- MySQL主從複製、半同步複製和主主複製MySql
- MySQL 複製全解析 Part 11 使用xtrabackup建立MySQL複製MySql
- MySQL的主從複製與MySQL的主主複製MySql
- MySQL 8 複製(四)——GTID與複製MySql
- MySQL 8 複製(五)——配置GTID複製MySql
- MySQL主從複製之GTID複製MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL主從複製與主主複製MySql
- 關於不同的MySQL複製解決方案概述MySql
- MySQL主從複製、半同步複製和主主複製概述MySql
- MySQL 多源複製MySql
- mysql 併發複製MySql
- mysql複製基礎MySql
- mysql:sql as 複製表MySql
- MySQL 半同步複製MySql
- MySQL半同步複製MySql
- 如何清除MySQL複製MySql
- MySQL GTID複製MySql
- MySQL 主從複製MySql
- 17mysql複製MySql
- MySQL 主主複製MySql
- MySQL中的複製MySql
- 【MySql】主從複製MySql
- mysql複製原理圖MySql