數據庫環境:SQL SERVER 2005 +
1、Replication,我們常用的是Transactional Replication。可以支持單向和雙向的數據同步。工作在Table Level。由於基於transaction,(內部使用了類似Snapshot鏈出改變頁的方法),他的同步單位較小,在實踐中,往往只需要幾分鍾的時間就可以得到最新的數據。缺點,雖然允許Replication Schema Change,但是對於真正的DDL修改的時候有時需要手動的進行修改。容易出現數據同步問題,而且復雜的查詢可能導致Replication的性能並導致數據同步問題
2、Log Shipping。基於Backup/Restore。換而言之,它實際是自動的log backup傳輸到遠程,然后恢復的。正如Restore備份數據庫的時候數據庫會處於單用戶狀態,在restore的時候,所有的當前用戶鏈接會被斷開,當然可以配置等待所有操作完成。沒有數據不同步的問題。
3、Databaes Mirroring。只是在考MSITS的時候涉及過這個技術,沒有實際用過。同步的數據庫處於不可用狀態,但是可以通過snapshot進行訪問。snapshot的數目不被限制,但是不得不選擇不同的名字。這對於數據庫查詢比較麻煩。沒有數據不同步的問題。
Replication 最大的優點在於數據同步的迅速,用戶不會感覺到變化,用戶查詢不會被數據的更新影響。
Logshipping 的優點則在於簡單易用,容錯性高。但用戶被經常打斷。
Databaes Mirroring 數據庫鏡像對可用性的提高程度遠遠大於先前使用 Microsoft SQL Server 對可用性的提高,並為故障轉移群集或日志傳送提供了易於管理的替代或補充。同步數據庫鏡像會話時,數據庫鏡像提供了熱備用服務器,可支持在已提交事務不丟 失數據的情況下進行快速故障轉移。在一般的鏡像會話期間,如果生產服務器出現故障,客戶端應用程序可以通過重新連接到備用服務器來快速進行恢復。
下面借一個圖來說明各個特點:
復制(Replication) | 日志傳送(Log Shipping) | 鏡像(Mirroring) | 故障轉移集群(Failover Clustering) | |
標准版/企業版 | YES | YES | 標准版僅支持同步模式 | 標准版僅2節點 |
節點數 | 1:N | 1:N | 1:1 | 取決於操作系統節點數上限 |
粒度 | 表 | 數據庫 | 數據庫 | 實例 |
恢復模式 | Full/Simple | Full/Bulk_logged | Full | ALL |
是否監視主庫故障 | NO 監視器只監視同步狀態, 不監視publication server failure |
NO monitor server只監視backup/retore status 不監視primary server failure |
Witness,可監視主庫故障 | YES |
是否自動故障轉移 | NO(warm standby) | NO(warm standby) | YES(hot standby), 如果沒有witness則不能自動,為warm standby |
YES |
延遲 | 取決於Log Reader Agent & Distribution Agent | 取決於Log backup/restore頻率 | 同步/異步模式 | 只有一份數據 |
同步方式 | 從distributor分發,可推送,可讀取 | 通過數據庫備份文件的copy/restore | Log stream | 只有一份數據 |
從庫是否可以訪問 | subscription可讀寫, 但默認寫不會被回傳到Publication |
可設置secondary server為standby模式,只讀 | mirrored db可通過snapshot只讀 | 只有一份數據 |
應用場景 | 讀寫分離 | 讀寫分離,溫備 | 讀寫分離,溫備/熱備 | 服務器/操作系統/應用軟件的備份 |