復(fù)制是將一組數(shù)據(jù)從一個數(shù)據(jù)源拷貝到多個數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個存儲站點上的有效方式。使用復(fù)制技術(shù),我們可以將一份數(shù)據(jù)發(fā)布到多臺服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限許可的范圍內(nèi)共享這份數(shù)據(jù)。
SQL Server復(fù)制技術(shù)可以確保分布在不同地點的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性,為實現(xiàn)數(shù)據(jù)庫讀寫分離,高可用等都提供了不錯的解決方案。SQL Server 主要采用出版物、訂閱的方式來處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個分發(fā)數(shù)據(jù)庫,可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。

SQL Server允許在不同的數(shù)據(jù)庫如 Oracle或Access之間進行數(shù)據(jù)復(fù)制。
SQL Server復(fù)制操作的前提條件是SQL Server代理服務(wù)必須已經(jīng)啟動。
一個分發(fā)服務(wù)器支持多個發(fā)布服務(wù)器,就像一個報刊亭可以同時出售多個出版社發(fā)行的雜志一樣。同理,分發(fā)服務(wù)器也可以和發(fā)布服務(wù)器是同一個實例,這就像直銷一樣。
配置復(fù)制就沒有數(shù)據(jù)庫鏡像和Always On的要求那么高,只需要兩臺服務(wù)器能通過TCP進行通訊即可,兩臺服務(wù)器的操作系統(tǒng)和SQL Server版本都可以不完全一致,而且兩臺服務(wù)器也不需要加入域。但是復(fù)制訂閱主要是針對數(shù)據(jù)表而不能像鏡像和Always On那樣配置整個數(shù)據(jù)庫。
事務(wù)復(fù)制
在第一次設(shè)置好事務(wù)復(fù)制后,發(fā)布的表、存儲過程等將會被鏡像,之后每次對于發(fā)布服務(wù)器所做的改動都會以日志的方式傳送到訂閱服務(wù)器,使得發(fā)布服務(wù)器和訂閱服務(wù)器幾乎可以保持同步。因此,可以看出事務(wù)復(fù)制的特點是:
1.發(fā)布服務(wù)器和訂閱服務(wù)器內(nèi)容基本可以同步
2.訂閱服務(wù)器也支持請求訂閱,可以不用一直和分發(fā)服務(wù)器保持連接,定期查看其是否有可用更新即可。
3.適用于要求實時性的環(huán)境。
特點
相比較其它高可用性技術(shù)而言,復(fù)制有如下好處:
復(fù)制是對象級別
復(fù)制可以工作在簡單恢復(fù)模式下
可以擁有無限多個訂閱,并考慮請求訂閱,將Distribution Agent的負載Offload到訂閱服務(wù)器
復(fù)制允許在訂閱端進行更新,沒有其它高可用性技術(shù)可以做到這一點
在故障轉(zhuǎn)移的時候,不需要Redo或Rollback日志,只需要將應(yīng)用重定向到訂閱節(jié)點
但同樣,復(fù)制也有其自身局限性,比如:
復(fù)制建立、調(diào)錯都相對比較復(fù)雜
復(fù)制是對象級別(沒錯,基于不同的場景)
分發(fā)庫上不能建立鏡像,因此分發(fā)庫有可能成為Single-Point-Of-Failure
復(fù)制很容易影響發(fā)布服務(wù)器的性能
不能進行熱備,這意味著就不能進行故障檢測和故障排除
對于復(fù)制來說,故障轉(zhuǎn)移容易,想轉(zhuǎn)移回來就比較麻煩,因此這種情況下可以考慮P2P復(fù)制
但不得不說,復(fù)制的確是非常的強大,“想復(fù)制什么復(fù)制什么,想復(fù)制多遠復(fù)制多遠,想怎么復(fù)制就怎么復(fù)制,想復(fù)制的多復(fù)雜就多復(fù)雜”。