在MySQL資料庫中,支援單項、非同步複製。在複製過程中,一個伺服器充當主伺服器,而另外一台伺服器充當從伺服器。如所示。此時主伺服器會將更新資訊寫入到一個特定的二進位檔案中。並會維護檔案的一個索引用來追蹤記錄檔迴圈。這個日誌可以記錄並發送到從伺服器的更新中去。當一台從伺服器串連到主伺服器時,從伺服器會通知主服器從伺服器的記錄檔中讀取最後一次成功更新的位置。然後從伺服器會接收從那個時刻起發生的任何更新,然後鎖住並等到主伺服器通知新的更新。
這就是MySQL伺服器資料庫複寫原理的基本說明。作為資料庫管理員,對於這個原理只要有幾個基本的瞭解即可。
實惠一:實現伺服器負載平衡
通過伺服器複製功能,可以在主伺服器和從伺服器之間實現負載平衡。即可以通過在主伺服器和從伺服器之間切分處理客戶查詢的負荷,從而得到更好的客戶相應時間。通常情況下,資料庫管理員會有兩種思路。
一是在主伺服器上只實現資料的更新操作。包括資料記錄的更新、刪除、建立等等作業。而不關心資料的查詢作業。資料庫管理員將資料的查詢請求全部轉寄到從伺服器中。這在某些應用中會比較有用。如某些應用,像基金淨值預測的網站。其資料的更新都是有管理員更新的,即更新的使用者比較少。而查詢的使用者數量會非常的多。此時就可以設定一台主伺服器,專門用來資料的更新。同時設定多台從伺服器,用來負責使用者資訊的查詢。將資料更新與查詢分別放在不同的伺服器上進行,即可以提高資料的安全性,同時也縮短應用程式的回應時間、提高系統的效能。
二是在主伺服器上與從伺服器切分查詢的作業。在這種思路下,主伺服器不單單要完成資料的更新、刪除、插入等作業,同時也需要負擔一部分查詢作業。而從伺服器的話,只負責資料的查詢。當主伺服器比較忙時,部分查詢請求會自動發送到從伺服器重,以降低主伺服器的工作負載。當然,像修改資料、插入資料、刪除資料等語句仍然會發送到主伺服器中,以便主伺服器和從伺服器資料的同步。
要在資料庫之間實現負載的均衡,其關鍵點就是資料同步的時間。如果主伺服器與從伺服器之間資料的更新時間比較長,此時從主伺服器中查詢得到的資料就會同從從伺服器中得到的資料有差異。而如果同步的時間比較短,如實現同步複製,對網路頻寬、伺服器裝置等就有比較高的要求。
可見這個同步的時間選擇直接關係到其應用的效果。那麼這個同步的時間應該選擇多少呢?這沒有一個固定的答案。主要是看使用者的需要。如使用者對資料的及時性要求並不是很高,或者資料更新的頻率不是很高,那麼這個同步的時間可以稍微長一點。但是如果這個資料的及時性要求很高,如股票的價格等等,此時就需要能夠實現同步更新。所以具體要看企業實際的應用才能夠決定採用什麼樣的同步時間。
在採取這個應用時,需要注意MySQL資料庫的複製是單向的。即只能夠將資料從主伺服器複製到從伺服器,而不能夠將資料從從伺服器發生到主伺服器。這也就是說,資料庫管理員不能夠在從伺服器上更新資料,否則的話,就可能會與主伺服器上的資料產生衝突。預設情況下,系統會自動利用主伺服器上的資料來更新從伺服器上的資料。即在從伺服器上所做的任何更改,到時候都會失效。如果是使用者的請求,一般不用擔心。系統會自動判斷使用者的請求是查詢請求還是資料更新要求。並自動根據請求的類型轉寄到不同的伺服器上。主要是資料庫管理員,不要手痒痒,手動去更新從伺服器上的資料。否則的話,就會導致從伺服器與主伺服器之間資料的衝突。
實惠二:通過複製實現資料的異地備份
如所示,可以週期性將資料從主伺服器上複製到從伺服器上,這無疑是先了資料的異地備份。在傳統的備份體制下,是將資料備份在本地。此時備份作業與資料庫伺服器運行在同一台裝置上,當備份作業運行時就會影響到伺服器的正常運行。有時候會明顯的降低伺服器的效能。同時,將備份資料存放在本地,也不是很安全。如硬碟因為電壓等原因被損壞或者伺服器被失竊,此時由於備份檔案仍然存放在硬碟上,資料庫管理員無法使用備份檔案來恢複資料。這顯然會給企業帶來比較大的損失。
而如果使用複製來實現對資料的備份,就可以在從伺服器上對資料進行備份。此時不僅不會干擾主服務氣的正常運行,而且在備份過程中主伺服器可以繼續處理相關的更新作業。同時在資料複製的同時,也實現了對資料的異地備份。除非主伺服器和從伺服器的兩塊硬碟同時損壞了,否則的話資料庫管理員就可以在最短時間內恢複資料,減少企業的由此帶來的損失。
在通過這種方式進行異地備份時,主要需要注意如下二個細節:
一是資料更新的時間。如果要採取這種方式進行備份,那麼對於資料同步的時間,要小於等於資料備份的周期。只有如此,才能夠確保最新動向的資料被正確的備份。此時即使主伺服器出現了故障,使用者丟失的也只是最近一個備份周期的資料。
二是從伺服器上硬碟的空間。根據一般使用者的心態,從伺服器的配置往往比主伺服器要低。但是現在從伺服器要承擔起資料備份的任務,為此對於硬碟的空間要求就要比主伺服器要高。其不但要能夠儲存主伺服器上的資料,而且還要對其進行備份。為此一般要求,從伺服器上的儲存空間是主伺服器上的兩倍。否則的話,就容易出現磁碟空間不足而導致備份作業失敗。
實惠三:提高資料庫系統的可用性
資料庫複寫功能實現了主伺服器與從伺服器之間資料的同步,增加了資料庫系統的可用性。當主伺服器出現問題時,資料庫管理員可以馬上讓從伺服器作為主伺服器,用來資料的更新與查詢服務。然後回過頭來再仔細的檢查主伺服器的問題。此時一般資料庫管理員也會採用兩種手段。
一是主伺服器故障之後,雖然從伺服器取代了主伺服器的位置,但是對於主伺服器可以採取的操作仍然做了一些限制。如仍然只能夠進行資料的查詢,而不能夠進行資料的更新、刪除等操作。這主要是從資料的安全性考慮。如現在一些銀行系統的升級,在升級的過程中,只能夠查詢餘額而不能夠取錢。這是同樣的道理。
二是從伺服器真正變成了主伺服器。當從伺服器切換為主伺服器之後,其地位完全與原先的主伺服器相同。此時可以實現對資料的查詢、更新、刪除等操作。為此就需要做好資料的安全性工作。即資料的安全性原則,要與原先的主伺服器完全相同。否則的話,就可能會留下一定的安全隱患。
原文連結:http://publish.itpub.net/a2011/0303/1162/000001162464.shtml