我正在devise一个带有两个SQL服务器的SQL Server体系结构,并计划在两者之间实现数据库镜像。 我需要尽量减less服务器故障(不pipe原因)的数据丢失情况。 我正在研究没有自动故障转移的SQL Server 2008高安全模式。 只有一个操作数据库需要镜像,两个服务器将在同一个站点上。
在线文档指出,在这种模式下,当主服务器closures时,我可以强制镜像成为新的主体,但是有丢失数据的风险。 那么我的问题是,如果发生数据丢失(使其最小化),镜像的目的是什么?我能做些什么来消除(而不是最小化)这种损失? 有没有一种模式,主服务器在数据成功写入镜像之前不会提交数据?
此外,SQL服务器通常会被客户端应用程序访问,客户端应用程序将被configuration为按名称连接到某个服务器。 如果有数据库镜像,应该使用什么服务器名称来访问镜像,客户端是否应该知道镜像服务器的存在?
编辑:应支持以下scheme:
SQL Server 2008有两种操作模式:一种是高安全性模式,在这种模式下镜像是同步的:事务在被写入镜像之前不会被提交。 在该模式下,如果来自未提交的交易,则唯一可能丢失的数据。
第二种模式是高性能的。 在这种模式下,交易被尽快标记为委托人,而不用等待镜子。 即使主体和镜像之间的连接暂时中断,它也将允许系统继续工作,但是,如果执行手动故障切换,当然还会丢失所有尚未复制的事务。
有关详细信息,请参阅此链接: http : //technet.microsoft.com/en-us/library/ms189852.aspx
至于允许数据丢失的镜像设置点,权衡是性能。 也就是说,如果允许数据丢失,则客户端应用程序在被认为“完成”之前不必等待镜像伙伴提交事务。 而且,对于许多镜像拓扑来说,合作伙伴所处的地理区域与委托人不同。 所以延迟可以是不重要的。 交易在委托人排队,并在可能时交付。 但是这种交付是asynchronous的。