SqlServer雙機熱備,大體上可以通過發布訂閱,日志傳送,數據庫鏡像來實現。
1,發布--訂閱
是最早最簡單的方案,但需要注意發布的時候,發布進程必須對快照目錄有訪問權限,這個問題可以從“查看快照代理狀態”看到相關提示。
在查看代理日志的時候,有可能發現代理未運行,錯誤提示:進程無法在“WIN-XXX”上執行“sp_replcmds”。
此時應該執行下面的命令:
USE [發布的數據庫]
EXEC sp_changedbowner 'sa';
這里要求在配置代理安全性的時候,日志讀取器代理--安全設置--連接到發布服務器,使用 sa 賬號登陸
2,日志傳送
可以參考下面的資料: ? SQL Server 雙機熱備1(based on log shipping) ? http://blog.csdn.net/isoftk/article/details/1914175 ? 采用日志傳送的方式實現
3,數據庫鏡像
使用數據庫鏡像,可以做到數據庫高可用,具體參考下面幾篇文章:
1),windows_server2008+SQL_server2008雙機熱備實例 ? http://www.doc88.com/p-2052060058186.html ? 采用故障轉移群集實現
2),數據庫鏡像概述 ? https://msdn.microsoft.com/zh-cn/library/ms189852(v=SQL.90).aspx ? 采用鏡像實現備份
3),數據庫鏡像部署 ? http://www.doc88.com/p-690922020761.html ? http://liulike.blog.51cto.com/1355103/339183
注意:如果不使用Windows域賬號,在開始鏡像的時候,絕大多數情況下都會出現 1418號錯誤,按照網上有關方法操作,也難以成功。
4,使用SqlServer 2012的 AlwaysOn 功能
AlwaysOn功能是最新的SQLSERVER高可用技術(HA),它實際上還是依賴于數據庫鏡像,詳細請參考下面資料: ? http://wenku.baidu.com/link?url=BX-Io-x-3n-SGmQELT14iTuJoW_6sv9VveGvUE4yu2cHvSdhmU8lGVTki2_F2xIGmO-Dt7QWYaWBS8sokscOEhDVkQienmhrLMEkzuAsQMK&qq-pf-to=pcqq.group
5,雙機熱備的數據訪問
如果成功實現了雙機熱備,做到了HA,當主數據庫服務器宕機后,有人會說,兩個數據庫,IP地址都不一樣,怎么寫連接代碼呢?難道出現故障后要手動更改代碼嗎?
有2種方案:
1)用zookeeper監測,主機掛掉,自動會切換到備用機上。應用程序訪問zookeeper提供的虛擬地址。
2)其實使用ADO.NET或者SQL Native Client能夠自動連接到故障轉移后的伙伴,連接字符串如下所示: ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A; 這樣設置之后,客戶端就可以自動切換數據庫了
方案 2)請詳細參考 http://www.cnblogs.com/lhws/p/3772110.html
?