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
本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/p/5197586.html,如需转载请自行联系原作者