配置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,镜像服务器变成:主体已同步 ,原来的主体服务器变成:正在还原
两台服务器不在域中,也不想加域,所以采用使用证书方法,整个过程分以下几步:
一.创建证书
在服务器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,镜像服务器变成:主体已同步 ,原来的主体服务器变成:正在还原
相关文章推荐
- DB字段顺序与类的属性顺序一致:{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER
- (转)一网打尽当下NoSQL类型、适用场景及使用公司
- MongoDB高级查询详细
- SQL Server: T-SQL变量声明陷阱
- mysql导出为CSV的同时加上表头
- [实战]MVC5+EF6+MySql企业网盘实战(10)——新建文件夹
- mysql 查看死锁和去除死锁
- SQL Server 2014 版 DISTINCT和Order BY的错误
- 解决Mysql ERROR 1 (HY000): Can't create/write to file 问题
- 通过Python将MongoDB导出的json数据转换成Mysql的insert语句导入
- Oracle数据库当前的nls_date_format参数值查询及设置
- mysql5.7.9详细安装教程 mac10.10
- MYSQL存储过程
- SQL学习记录
- 最简单的角色权限数据库表设计
- Oracle中rownum_函数用法(转载)
- 2015年mysql最新开发规范
- SQL中存储过程与自定义函数的区别
- 数据库应用-NF^2 Modell(Non First Normal Form)
- MongoDB创建系统管理员账户和数据库管理员账户