復(fù)制是將一組數(shù)據(jù)從一個數(shù)據(jù)源拷貝到多個數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個存儲站點(diǎn)上的有效方式。使用復(fù)制技術(shù),我們可以將一份數(shù)據(jù)發(fā)布到多臺服務(wù)器上莺丑,從而使不同的服務(wù)器用戶都可以在權(quán)限許可的范圍內(nèi)共享這份數(shù)據(jù)。
SQL Server復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動同步更新墩蔓,從而保證數(shù)據(jù)的一致性梢莽,為實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,高可用等都提供了不錯的解決方案奸披。SQL Server 主要采用出版物昏名、訂閱的方式來處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器阵面,負(fù)責(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之間進(jìn)行數(shù)據(jù)復(fù)制镇饮。
SQL Server復(fù)制操作的前提條件是SQL Server代理服務(wù)必須已經(jīng)啟動蜓竹。
一個分發(fā)服務(wù)器支持多個發(fā)布服務(wù)器,就像一個報刊亭可以同時出售多個出版社發(fā)行的雜志一樣储藐。同理梅肤,分發(fā)服務(wù)器也可以和發(fā)布服務(wù)器是同一個實(shí)例,這就像直銷一樣邑茄。
配置復(fù)制就沒有數(shù)據(jù)庫鏡像和Always On的要求那么高,只需要兩臺服務(wù)器能通過TCP進(jìn)行通訊即可俊啼,兩臺服務(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ù)制的特點(diǎn)是:
1.發(fā)布服務(wù)器和訂閱服務(wù)器內(nèi)容基本可以同步
2.訂閱服務(wù)器也支持請求訂閱,可以不用一直和分發(fā)服務(wù)器保持連接洲尊,定期查看其是否有可用更新即可。
3.適用于要求實(shí)時性的環(huán)境奈偏。
特點(diǎn)
相比較其它高可用性技術(shù)而言坞嘀,復(fù)制有如下好處:
復(fù)制是對象級別
復(fù)制可以工作在簡單恢復(fù)模式下
可以擁有無限多個訂閱,并考慮請求訂閱惊来,將Distribution Agent的負(fù)載Offload到訂閱服務(wù)器
復(fù)制允許在訂閱端進(jìn)行更新丽涩,沒有其它高可用性技術(shù)可以做到這一點(diǎn)
在故障轉(zhuǎn)移的時候,不需要Redo或Rollback日志裁蚁,只需要將應(yīng)用重定向到訂閱節(jié)點(diǎn)
但同樣矢渊,復(fù)制也有其自身局限性,比如:
復(fù)制建立枉证、調(diào)錯都相對比較復(fù)雜
復(fù)制是對象級別(沒錯矮男,基于不同的場景)
分發(fā)庫上不能建立鏡像,因此分發(fā)庫有可能成為Single-Point-Of-Failure
復(fù)制很容易影響發(fā)布服務(wù)器的性能
不能進(jìn)行熱備刽严,這意味著就不能進(jìn)行故障檢測和故障排除
對于復(fù)制來說昂灵,故障轉(zhuǎn)移容易避凝,想轉(zhuǎn)移回來就比較麻煩,因此這種情況下可以考慮P2P復(fù)制
但不得不說眨补,復(fù)制的確是非常的強(qiáng)大管削,“想復(fù)制什么復(fù)制什么,想復(fù)制多遠(yuǎn)復(fù)制多遠(yuǎn)撑螺,想怎么復(fù)制就怎么復(fù)制含思,想復(fù)制的多復(fù)雜就多復(fù)雜”。