標籤:
【http://www.jb51.net/article/50053.htm】 MySQL 資料庫的高可用性架構: 叢集,讀寫分離,主備。而後面兩種都是通過複製來實現的。下面將簡單介紹複製的原理及配置,以及一些常見的問題。 【優點】1、 如果主伺服器出現問題, 可以快速切換到從伺服器提供的服務
2、 可以在從伺服器上執行查詢操作, 降低主伺服器的訪問壓力
3、 可以在從伺服器上執行備份, 以避免備份期間影響主伺服器的服務
注意一般只有更新不頻繁的資料或者對即時性要求不高的資料可以通過從伺服器查詢, 即時性要求高的資料仍然需要從主要資料庫獲得。
【複製的原理】
MySQL 複製基於主伺服器在二進位日誌中跟蹤所有對資料庫的更改(更新、刪除等等)。
每個從伺服器從主伺服器接收主伺服器已經記錄到其二進位日誌的儲存的更新,以便從伺服器可以對其資料拷貝執行相同的更新。
將主伺服器的資料拷貝到從伺服器的一個途徑是使用LOAD DATA FROM MASTER語句。請注意LOAD DATA FROM MASTER目前只在所有表使用MyISAM儲存引擎的主伺服器上工作。並且,該語句將獲得全域讀鎖定。
MySQL 使用3個線程來執行複製功能,其中1個在主伺服器上,另兩個在從伺服器上。當發出START SLAVE時,從伺服器建立一個I/O線程,以串連主伺服器並讓它發送記錄在其二進位日誌中的語句。
主伺服器建立一個線程將二進位日誌中的內容發送到從伺服器。該線程可以識別為主伺服器上SHOW PROCESSLIST的輸出中的Binlog Dump線程。
從伺服器I/O線程讀取主伺服器Binlog Dump線程發送的內容並將該資料拷貝到從伺服器資料目錄中的本地檔案中,即中繼日誌。
第3個線程是SQL線程,是從伺服器建立用於讀取中繼日誌並執行日誌中包含的更新。
有多個從伺服器的主伺服器建立為每個當前串連的從伺服器建立一個線程;每個從伺服器有自己的I/O和SQL線程。
【配置slave的擴充選項】
master_host=db-master.mycompany.com
master_port=3306
master_user=rep
master_password=freitag
master_connect_retry=60 (若master宕機或者slave串連斷開,slave會定期嘗試串連到master上,重試的間隔由該選項來控制,預設值是60秒。)
report_host=db-slave.mycompany.com
slave_net_timeout=3600 (slave預設會在3600秒後,若還沒收到來自master的資料,則會當作網路斷開的情況來處理。)
【MySQL高可用性大殺器之MHA】
提到MySQL高可用性,很多人會想到MySQL Cluster,亦或者Heartbeat+DRBD,不過這些方案的複雜性常常讓人望而卻步,與之相對,利用MySQL複製實現高可用性則顯得容易很多。http://blogread.cn/it/article/4677?f=wb
【Mysql主從複製(master-slave)實際操作案例】
http://www.jb51.net/article/51517.htm
MySQL主從複製的原理及配置