sql Server数据库镜像部署
‘数据库镜像’是sqlServer数据库功能最强的一种热备份方法,也是环境要求最高的一种。其配置环节比较麻烦,本人新手研究了三天,中途遇到了许多问题,希望其他第一次做这个部署的同行不要像我这样走许多弯路。
的端口。本文中介绍数据库镜 像需要打开的端口是TCP-1433和TCP-5022端口。
备份该数据库,两次:完整备份及事物日志备份Test.bak(sql-1)
在‘选项’中,勾选‘覆盖现有数据库’,同时选择‘不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。(RESTOREWITH norECOVERY)’。
为了方便,取消选择‘见证服务器实例选项’,可以在今后添加。点击‘下一步’
四.测试手动故障转移(sql-1)
在sql-1上选择Test数据库,右键-‘任务’-‘镜像’,在弹出窗口中点击‘故障转移’。
sql镜像部署‘错误1418’处理及证书验证
sql镜像部署能很好的应对服务器数据库崩溃甚至整个服务器数据被破坏的情况。如何部署在我的上一篇文章中,只要不出错很快就能操作完成,但是这种几率很小。我分享一下我第一次部署中遇到的各种问题,主要针对1418错误。
右键点击【计算机】选择属性,选择计算机名称tab,点击【其他】按钮,将DNS尾码设置成相同的值,如test.com,电脑名称若为primary,则完整的电脑名称就为primary.test.com,将镜像server的DNS尾码设置成相同值,需要重启计算机
解决方式:用记事本修改系统盘下WINDOWS/system32/drivers/etc下面的文件hosts(可能需要修改hosts的权限),在该文件下加入主体及镜像地址的IP及对应的电脑名称,格式如下:
#127.0.0.1 localhost——#号代表注释了,后面不要加
192.168.0.101 primary.test.com
192.168.0.102 mirror.test.com
注意,在两台server上都要加,如果还有见证server,见证server上也要加入,就会有3条
也许中文版的sql提示会是中文的,我的是英文版。这个错误的主要意思是‘正在在访问xpstar.dll,但是没有用户可以对其进行操作’,OK,修改xpstar.dll的权限。
操作:找到xpstar.dll这个文件,我这儿在C:\ProgramFiles\Microsoft sqlServer\MSsql10.MSsqlSERVER\MSsql\Binn目录下,修改它的权限,我把它上面的‘当前用户和组’都设为了完全控制,操作完成后还会提示xplog70.dll也要修改,xplog70在相同目录下。我在两台服务器上都做了修改(一劳永逸,不知道有无副作用),问题解决。
首先在主服务器上,一段一段执行一下语句(以‘go’为一段)
Use master
Createcertificate host_A_cert
Create endpointEndpoint_Mirroring
state=started
as TCP(listener_port=5022,Listener_IP=all)
for Database_Mirroring(AUTHENTICATION=CERTIFICATEhost_A_cert,ENCRYPTION=required ALGORITHMAES,ROLE=PARTNER);--创建依附与证书的镜像端点'Endpoint_Mirroring',默认5022端口
BACKUPCERTIFICATE host_A_cert TOFILE='D:\dbMirror\host_A.cer';--将证书备份到D盘
变换一下证书名称,在备份服务器和见证服务器上执行上述语句,可以设置备机证书为host_B_cert,见证机为host_C_cert.
证书互换:将主机上的host_A.cer拷贝到备机和见证机上,备机的host_B.cer拷贝到主机和见证机上,见证机的host_C.cer拷贝到主机和备机上,为了方便,将证书都统一放到D:\dbMirror文件夹下面。
主机依次执行下面语句
Create loginhost_B_login withpassword='123'--为备机创建一个登录帐号‘host_B_login’
go
create userhost_B_user for loginhost_B_login;--为帐号‘host_B_login’创建登录名
go
Createcertificate host_B_cert
authorizationhost_B_user
fromfile='D:\dbMirror\host_B.cer'--将账户与证书关联起来
go
grant connect onendpoint::Endpoint_Mirroring to[host_B_login];--添加Connect权限
go
将上述的‘B’改为‘C’再次执行为见证机添加Connect权限(没有见证机的跳过);
Create loginhost_A_login with password='123'
go
create userhost_A_user for Certificate host_A_cert;
go
grant connect onendpoint::Endpoint_Mirroring to [host_A_login];
go
主机上的操作算是告一段落
在备机和见证机上执行上面的所有语句,关键的地方(‘ABC’的地方互换一下)修改一下,注意几点:上述语句都是在master数据库上完成的;执行的语句针对的是整个sqlServer,不是某一个数据库;登录账户的密码必须一致(这里是123);如果备机和见证机是同一台服务器,会涉及到不同端口,上述语句改动会很大。
执行后的效果:在三天服务器上都会有‘host_A_login’、‘host_B_login’、‘host_C_login’三个登录账户,且可以用该账户登录相应服务器上的sqlServer。
可以说前面都是在为镜像做准备工作,现在重新配置镜像,具体操作查看我上一篇blog:SQLServer数据库镜像部署
其他步骤不变,最后点击‘开始镜像’,应该就不会报1418错误了
4.这是在我第二次作镜像部署测试时遇到的错误。主服务器上日志和“3”的一样,只是备机上变成了这样
我所了解的问题就这些了,其他问题也许在以后的部署中会发现
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。