第三篇――第二部分――第五文配置SQLServer镜像――域环境SQLServer镜像日常维护(一)

2014-11-24 09:55:53 · 作者: · 浏览: 0

本文接上面两篇搭建镜像的文章:

第三篇——第二部分——第三文 配置SQL Server镜像——域环境:http://blog.csdn.net/dba_huangzj/article/details/28904503

在搭建的过程中,可能你会遇到比较多的问题,下面介绍一些常见的问题及解决方案,另外把主要精力放到对镜像搭建后的日常维护中。而对镜像的监控及优化,会在下一篇文章中介绍:http://blog.csdn.net/dba_huangzj/article/details/26846203 。

原文出处:http://blog.csdn.net/dba_huangzj/article/details/30484925 (黄钊吉的博客)

第一部分:常见的配置问题及解决方案:

在配置过程中,可能会有一系列的问题,特别是初次搭建。另外,很多正式环境并不能理想化配置,所以这一部分会列出一些常见的、本人搭建过程中也会遇到的一些问题,希望对读者处理镜像有所帮助。

常见的问题主要集中在三类:数据库还原问题、事务日志问题和通信问题。

数据库还原问题:

前面几篇文章中反复提醒,当还原数据库到镜像服务器时,需要使用NORECOVERY选项,如果没有使用这个选项,会返回Error 1416错误:

TITLE: Database Properties    
------------------------------ 
An error occurred while starting mirroring. 
------------------------------    
ADDITIONAL INFORMATION: 
Alter failed for Database 'TestDB'.  (Microsoft.SqlServer.Smo) 
For help, click: http://go.microsoft.com/fwlink ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1539+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Alter+Database&LinkId=20476
------------------------------ 
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 
------------------------------ 
Database "TestDB" is not configured for database mirroring. (Microsoft SQL Server, Error: 1416) 
For help, click: http://go.microsoft.com/fwlink ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=1416&LinkId=20476
------------------------------    
BUTTONS: 
OK    
------------------------------

截图如下:

image


当出现这种情况时,对于大库就比较痛苦了,你必须使用NORECOVERY选项重新还原。 说白了,你刚才的还原已经没用了。并且为了追上主体服务器的进度,还需要还原一系列的日志备份,注意日志备份同样需要使用NORECOVERY选项。只要其中一个没用到NORECOVERY,必须从头开始。

事务日志问题:

事务日志的问题,是前面说过的在搭建镜像前,要停用所有相关库的日志备份作业的原因之一。如果在开始镜像前没有还原事务日志到镜像服务器上,或者在镜像服务器上已经还原了完整备份之后,又在主体服务器上进行了日志备份,却没有把备份文件同步到镜像服务器时,会出现下面两类错误:

Error 1412 - The remote copy of database has not been rolled forward to a point in time that is encompassed in the local copy of the database log.这种情况是发生在做了一次完整备份,并把备份文件还原到镜像库中,然后还没开始镜像配置时又在主体服务器做了一次日志备份导致的,解决这种问题,只需要把日志文件重新还原到镜像数据库即可。image 这种情况较为少见,通常出现在配置镜像过程中,常规的备份作业还在运行,打断了原有的日志链。无论是哪种报错,保证在主体服务器的备份种类及次数都应该和镜像库还原过程中一样,并且禁用主体库的常规备份以免影响日志链。

通信问题:

相对于前面两种问题,通信问题是最难解决的,因为问题可能会有很多种,也可能是很多因素导致同一个报错。另外,由于涉及2台甚至3台服务器,所以问题的侦测难度更大。常见的通信报错有下面3中:

Error 1418 - The server network address can not be reached or does not exist. Check the network address name and that the ports for the local and remote endpoints are operational. Error 1486 - Database Mirroring Transport is disabled in the endpoint configuration. Error 1456 - The ALTER DATABASE command could not be sent to the remote server instance . The database mirroring configuration was not changed. Verify that the server is connected, and try again.

对于Error 1456这个错误:是针对见证服务器和其中一个伙伴服务器的通信错误。另外Error 1418是针对镜像环境中的伙伴服务器之间的通信问题。对于Error 1486,可以看专门的文档:MSSQLSERVER_1418:http://msdn.microsoft.com/zh-cn/library/aa337361.aspx

针对上面三种错误,常规步骤如下:

确保SQL Server不是使用Local System 账号运行。必须使用Network Service或者域账号运行,除非使用证书验证。 尝试Telnet每个需要用到的端口,如果不行,可能需要配置防火墙。 查询sys.database_mirroring_endpoints目录视图,确保镜像环境中的每个端点的 加密和授权方式一致。 查询sys.tcp_endpoints目录视图,确保数据库镜像端点已经启动,如果没启动,可以使用下面语句实现:
ALTER ENDPOINT 端点名 STATE=STARTED 

小结:

根据本人经历,配置过程的问题很多时候是没