应用维护:SQL Server 2008高可用性
博客园 发表于:12年09月05日 10:48 [原创] DOIT.com.cn
数据库镜像
数据库镜像与日志传送非常相似,即事务日志记录是从源数据库发送到目标数据库。不过,和基于文件复制的事务日志不同的是,单独的日志记录是基于事务发送的。尽管数据库镜像也是一个数据库级别的冗余解决方案,但它依赖于服务间不断通信来维护事务完整性。数据库镜像还提供了一个在配置了另外一个见证服务器时自动并且几乎瞬时故障转移的额外好处。数据库镜像的配置是通过在驻留主体数据库的服务器和主流镜像数据库的服务器之间建立合作关系完成的。两者之间的通信通过使用SQL Server端点建立和维护,而不是使用文件系统作为维护两个服务器之间的一致性方法。日志传送和数据库镜像的另外一个主要区别是,数据库镜像限制每个数据库智能有一个主题服务器和一个镜像服务器。
数据库镜像配置中的3个服务器角色如下:主体服务器、镜像服务器、见证服务器(可选)。在使用数据库镜像时,客户端请求无法直接访问镜像数据库,因为它一直处于恢复事务日志记录的状态下。但是,可以通过创建镜像数据库的数据库快照配置间接访问。还要注意,数据库镜像不能与启用了FILESTREAM 存储的数据库一起使用。
客户端重定向:数据库镜像的优势之一是如果主体数据库出现故障,客户端可以被自动重定向到镜像服务器。然而,自动重定向不是基于服务器的功能。通过添加Failover Partner属性,可以将客户端的联接字符串配置为与镜像的数据库一起工作,如果联接Server属性标识的服务器失败,那么它会尝试连接由 Failover Partner属性标识的数据库,反之亦然,如果联接故障转移伙伴不可用,就会尝试连接原服务器
Server=AughtEight;Failover Partner=Dagobah;Database=AdventureWorks2008
数据库镜像模式:数据库可以被配置为使用高性能模式、不支持自动故障转移的高安全性模式以及支持故障转移的高安全性模式。高性能模式使用异步处理,当主体服务器把事务日志记录发送到镜像服务器之后,会立刻向客户端应用程序发送一个事务成功的确认,但是不会等待镜像服务器确认接收日志记录。在高性能模式下,不存在自动故障转移也不需要见证服务器,因为主题服务器出现故障时仍然会要求强制执行镜像服务器上的数据库服务。一旦原来的主主体服务器恢复服务,它会配置自身为镜像服务器,但是镜像会话仍然会处于SUSPENDED状态,除非管理员明确要求恢复。不支持自动故障转移的高安全性模式中,在镜像服务器确认收到了相应的事务日志记录之前,主体服务器不会给客户端发送事务成功的确认消息。该模式中没有自动故障转移,也没有见证服务器,主体数据库出现故障后要求手动强制见证服务器上的服务器提升其主体。在镜像服务器出现故障的情况下,客户端仍然可以使用主体服务器,但是镜像会话会处于断开连接的状态。支持自动故障转移的高安全性模式中,见证服务器用于提供自动故障转移。见证服务器不直接参与镜像过程,而是作为两个服务器之间的监督员,只要三个参与此模式的服务器中有两个能够保证连接性,那么数据库就会对客户端请求可用。当两个服务器就镜像会话的状态取得一致时,这就被叫做仲裁,如果镜像或主体服务器丢失了仲裁,镜像配置也会相应的改变。
使用SQL Server Management Studio配置数据库镜像:打开数据库属性-镜像页面,或者从任务-镜像菜单打开这个页面,单击配置安全性按钮启动向导,要求为主体、镜像和见证服务器端点提供联接选项。单击下一步进入下一页面,向导会询问是否要配置一个见证服务器;向导的下一页面要求标识在这个向导里要配置的服务器,您需要检查所有参与的服务器,包括见证服务器(如果使用了的话)。进入下一页面,配置主体服务器的选项;接下来需要为镜像服务器配置同样的信息,注意,挡在每个服务器上创建端点时,必须有在端点上创建和配置安全性的适当权限;如果配置了见证服务器,下一页面要求为见证服务器提供服务器名称和端点配置,其中需要注意一点,即如果同一物理服务器上有多个角色,那么端口号必须butong.youyu数据库镜像起作用的条件中并不要求所有的及其都采用相同的配置,甚至不要求他们是同一个域中的成员,所以向导允许为每个服务器指定账户信息。输入这些信息后,就可以通过向导的摘要页面查看配置。如果对设置感到满意,可以单击完成按钮来创建端点,如有必要,应用合适的权限。在完成向导后,SQL Server会提示立刻开始镜像还是延迟镜像。如果确定配置是正确的,并且镜像服务器和主体服务器时一致的,那么就可以单击按钮开始镜像。
在主体服务器和镜像服务器上执行此语句会创建可用于镜像的同样的端点。如果只是测试镜像,并且没有使用一个单独的物理服务器,那么只要这些端点使用不同的端口号,就可以安装另一个实例来镜像数据库。在使用一个见证服务器时,在见证实例上执行下列命令来创建合适的端点:
- -- Create Witness Endpoint
- USE Master;
- GO
- CREATE ENDPOINT WitnessEndPoint
- STATE = STARTED
- AS TCP ( LISTENER_PORT = 5024 )
- FOR DATABASE_MIRRORING (ROLE=WITNESS)
- GO