您的位置:首页 > 数据库

配置sql server 2008镜像服务

2015-10-31 10:19 555 查看

两台服务器不在域中,也不想加域,所以采用使用证书方法,整个过程分以下几步:

一.创建证书

在服务器A上运行

use master;

create master key encryption by password='sql2015';

create certificate host_A_cert with subject='host_a_certificate',start_date='01/01/2015',expiry_date='01/01/9999';

create endpoint endpoint_54mirror state=started

as

tcp(listener_port=5022,listener_ip=all)

for database_mirroring(authentication=certificate host_a_cert,encryption=required algorithm aes,role=partner);

go

--备份出证书

backup certificate host_a_cert to file='c:\host_a_certificate.cer';

在服务器B上运行

use master;

create master key encryption by password='sql2015';

create certificate host_B_cert with subject='host_B_certificate',start_date='01/01/2015',expiry_date='01/01/9999';

create endpoint endpoint_17mirror state=started

as

tcp(listener_port=5022,listener_ip=all)

for database_mirroring(authentication=certificate host_b_cert,encryption=required algorithm aes,role=partner);

go

--备份出证书

backup certificate host_b_cert to file='c:\host_b_certificate.cer';

将备份出来的证书互相交换一下。这里可能会遇到错误,就是说已经存在了endpoint,你不要奇怪,因为在这之前我们肯定试过配置了,所以在系统的数据表中存在了endpoint,所以需要先删除,可能自己都不知道名字了,这个时候可以从下面这些表中找到:

master.sys.endpoints master.sys.certificates master.sys.database_mirroring_endpoints。知道名字就好办,drop endpoint 找到的名字,然后继续运行上面的代码。

二配置登录

在服务器A上

create login host_a_login with password='sql2015';

create user host_a_user for login host_a_login ;

go

create certificate host_a_cert authorization host_a_user from file='C:\host_a_certificate.cer';

go

grant connect on endpoint::endpoint_17mirror to [host_a_login];

在服务器B上

create login host_b_login with password='sql2015';

create user host_b_user for login host_b_login;

go

create certificate host_b_cert authorization host_b_user from file='c:\host_b_certificate.cer';

go

grant connect on endpoint::endpoint_54mirror to [host_b_login];

三.配置镜像

这个按sql server中的向导操作就可以了,除连接对方镜像服务器需要输入sa密码外,其他地方都是下一步。

原以为到这里就搞定了,可以执行复制的时候总是提示1418错误,反复确认以下问题:

1.host文件确定没有问题

2.防火墙已经关闭,对ping和telnet端口没有问题

4.表中的endpoint状态也是started状态

5.配置的证书中的用户也可以登录对端sql server

6.数据库的还原模式也是完整



看日志居然没有发现问题,最后重配一遍发现是自己将数据库还原到镜像服务上居然没有选择norecover模式。重新做一次还原,终于成功同步。

四.加入其他服务器

一台镜像服务器需要对好几台生产服务器,所以按上面的方法将服务器c加入。可是配置好后发现一同步就挂起,在镜像服务器中的日志中找到了原因,原来是镜像服务器的sqlserver版本比主体服务器版本低。

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

五.切换主体测试

在sqlserver管理器中切换是很简单的,但是如果主服务挂了,就在镜像服务器上运行

ALTER DATABASE <DBname> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

这样数据库就会由正在还原变成:主体已断开。

但是如果这个时候原来的主体服务器好了接入网络,他上面显示的是:主体挂起。

运行alter database <dbname> set partner resume,镜像服务器变成:主体已同步 ,原来的主体服务器变成:正在还原
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: