SqlServer双机热备技术实践笔记
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构