学习SQLSERVER2005高可用性数据库镜像的一些心得

前一段时间在微软TechNet上看了一个SQLSERVER2005数据库的一个教程,里面都是一些牛人讲的关于SQLSERVER2005的方方面面,非常不错。坐下来听吧,讲的真不错。帮助很大。

有一节是讲高可用性数据库镜像的,单位的SQLserver数据库正好准备优化并且领导提出要一个高可用性的方案,正好对路唉,原来准备用异地群集的,咨询了一些朋友,异地群集的成本非常高昂。正好看看这个“数据库镜像”好像是挺好的功能,看看可不可以用上。

牛可老师讲的不错,我也是越听越爱听,这个技术不正是我想要用的吗!!!真是打盹就碰上枕头,好事呀~!

听完课,决心自己动手开始实验,下载了牛可老师的演示文件,将脚本文件准备好。哈哈,开始动手了。

在一台机器上安装了Virtual Server 2005,创建了三个服务器,一个是DC,一个是主数据库,一个是见证服务器。因为准备远程镜像测试,所以在另外一台机器上也同样安装了Virtual Server 2005,创建了一台服务器作为数据库镜像服务器。

按照教程的指示,将三台测试用的Sqlserver服务器加入DC域,准备工作做好了,从公司正在使用的数据库中做了一个备份,准备用这个数据进行测试。

首先在主数据库上对备份进行了完整的恢复,准备做镜像使用。

然后就是按照教程的指示,对主数据库进行完整备份,准备在镜像数据库恢复使用。

将完整备份拷贝到镜像数据库,按照教程的指示恢复备用。

然后在主数据库服务器,镜像数据库服务器,见证服务器上分别创建镜像端口,分配权限等等。均按照牛可老师的教程来做的,一切也都指示正常,没有发生错误。

准备工作做好了,开始镜像数据库。

第一步应该是在镜像数据库上指定主数据库服务器为镜像伙伴,SQL指令执行后,提示正常完成,没有错误。

第二步应该是在主数据库服务器上指定镜像数据库服务器为镜像伙伴,SQL命令执行后,开始出问题了,总是报告“消息 1418,级别 16,状态 1,第 1 行 服务器网络地址 "TCP://机器名或IP地址:端口号" 无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行。”。

头大如斗,有啥办法呢,开查吧!!!

先是上网google了一下,看看有没有人有同样的问题。

哈哈,衰人无数,都和我一样死在这里。

答案也无数,各种各样的回答,琳琅满目呀。开练吧!!!

依照各种高人的提示,检查了无数的可能性,网络,端口,防火墙,域环境,域帐号,服务帐号,SQL角色,命令行方式,图形化方式。飞机大炮,小刀橡皮,全招呼上了!!!

要说微软还是厉害,所有的招数招呼上去,人家就是一句话:“消息 1418,级别 16,状态 1,第 1 行 服务器网络地址 "TCP://机器名或IP地址:端口号" 无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行。”,坚贞不屈呀!!!

继续Google,一牛人说用一台机器上三个SQLSERVER2005服务器实例可以实验成功!!!,我晕,一台机器上3个SQLSERVER2005实例,那的多好的机器呀。

人家牛人说了,干吧!!!

亏得是虚拟机呀,还好用的是差异硬盘,三下五除二装好了服务器,开始疯狂的安装3个SQLSERVER2005服务器实例。装完了,装完了,装完了。为什么3个装完了,不是3个服务器实例吗?

导入数据,创建镜像端口,等等,将上次测试的SQL脚本带入,运行。我的娘啊,这句话已经融化在血液中,铭刻在脑海里。“TCP://机器名或IP地址:端口号" 无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行。”。

我靠,Fuck,八个雅鹿。我现在有些明白那些刑讯逼供的为什么会暴跳如雷了。

我晕倒了,我不干了,我累了,我睡了,我放弃了,我休息了。

休息了两天,什么都不想,技术上的一律不想。哈哈,老板以为我疯了,天天翘着脚,比他还牛。

第三天,正翘着脚,就像一休哥的电灯泡一样,当的一声脑子里转过了一个想法,最早实验的时候,新建的数据库,实验是成功的。所以才用自己的数据库实验的,没理由吗,不会问题就出现在这里吧。

说干就干,在一台机器3个服务器实例的虚拟机上就开始了疯狂的操作。哈哈哈哈哈哈,成功了。我靠,什么原因呢,不管它,我也想不明白,这个问题留给高人去解释吧!!!

赶紧转到三台服务器的测试环境中,用实际的数据库名等建立了一个空数据库,然后依照步骤,开始进行镜像实验,成功了。

爽。然后就是常规的一些操作,将原有的数据库结构创建进新的数据库中,最后是导入数据。因为是镜像环境,感觉上受网络的影响比较大,尤其是大数据量操作的时候。

总之是测试成功,测试的结果也符合我们的需要,下一步就是准备部署在生产环境中了。

 

总结一下吧:

具体的故障原因我不清楚,但是可以肯定的说,如果你要是信了那句错误信息的话,那就是和我一样去绕弯路吧。

简单的解决办法:创建一个新的空的数据库,然后在这个数据库上进行数据库镜像操作。等镜像操作成功后,在创建表,视图,存储过程等,最后导入数据。就可以得到一个数据库镜像的环境了。

区区不才,一点粗浅之见,望各位高人斧正。另外有高人知道具体的错误原因吗!!!我是查不出来了,有高人知道的话,讲一些给大家,善莫大焉!!!

你可能感兴趣的:(学习SQLSERVER2005高可用性数据库镜像的一些心得)