使用证书在SQL SERVER2005下配置数据库镜像

此示例说明使用基于证书的身份验证创建不带有见证服务器的数据库镜像会话所需的所有阶段。两个服务器实例在非信任的 Windows 域中运行,因此需要基于证书的身份验证。

在以下示例中,HOST_A 担当初始主体角色,HOST_B 担当镜像角色。

备注:

      这里需要提到的一点的就是在SQL SERVER2005刚刚发布出来的时候数据库镜像这个服务默认是关闭的,也是不支持的。在刚刚发布SQL SERVER2005正式版本的时候,认为数据库镜像这个技术还不成熟,有待完善。所以如果你使用的是正式版本则无法使用这个技术。

  那么需要下载SP1或是以上的补丁。

· 版本号

sql server 2005 版本

9.00.1399

sql server 2005(初始版本)

9.00.2047

sql server 2005 SP1

9.00.3042

sql server 2005 SP2

   

我们这里直接打SP2补丁:略

步骤一:同步主数据库与备数据库的运行环境(只需配置一次即可)

1、     创建证书(主备可并行执行)

--主机执行:

USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill'
;
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'
 ,
START_DATE = '01/01/2008';

--备机执行:

USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill'
;
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate'

START_DATE = '01/01/2008';

 

2、     创建连接的端点(主备可并行执行)

--主机执行:

CREATE ENDPOINT Endpoint_Mirroring 
STATE =
 STARTED 
AS
 
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
FOR
DATABASE_MIRRORING 
( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--备机执行:

CREATE ENDPOINT Endpoint_Mirroring 
STATE =
 STARTED 
AS
 
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL
 ) 
FOR
 
DATABASE_MIRRORING 
( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

 

3、 备份证书以备建立互联(主备可并行执行)

--主机执行:

USE master;

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:/SQLBackup/HOST_A_cert.cer';

--备机执行:

USE master;

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:/SQLBackup/HOST_B_cert.cer';

 

4、互换证书

将备份到D:/SQLBackup/的证书进行互换,即HOST_A_cert.cer复制到备机的D:/SQLBackup/HOST_B_cert.cer复制到主机的D:/SQLBackup/

 

5、添加登陆名、用户(主备可并行执行)

以下操作只能通过命令行运行,通过图形界面无法完成。

--主机执行:

CREATE LOGIN HOST_B_login WITH PASSWORD = 'killkill';
CREATE USER HOST_B_user FOR
 LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:/SQLBackup/HOST_B_cert.cer'
;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

--备机执行:

CREATE LOGIN HOST_A_login WITH PASSWORD = 'killkill';
CREATE USER HOST_A_user FOR
 LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:/SQLBackup/HOST_A_cert.cer'
;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

 

 

步骤二:同步主数据库与备数据库的数据(要同步的主数据库执行)

若要对主数据库进行数据库镜像,必须将它更改为使用完整恢复模式。若要用 Transact-SQL 实现此目的,请使用 ALTER DATABASE 语句:

USE master;
ALTER DATABASE <DatabaeName> SET RECOVERY FULL;

再对主数据库进行完整备份和至少一次事务日志备份,将完整备份和事务日志备份复制到镜像服务器上,使用 WITH NORECOVERY 将完整备份和事务日志备份还原到镜像服务器实例上

 

 

步骤三:配置镜像伙伴

注意:如果HOST_AHOST_B所在系统开启了防火墙,则必须将端口5022添加到防火墙例外,对于局域网的用户,则还需将其自身计算机的5022端口映射到广域网(在路由器的“虚拟服务器”中添加映射条目)。

1、  HOST_B 的镜像服务器实例上,将 HOST_A 上的服务器实例设置为伙伴(使其成为初始主体服务器实例)。方法是在新建查询窗口中执行:

--At HOST_B, set server instance on HOST_A as partner (principal server):

ALTER DATABASE <DatabaeName>

   SET PARTNER = 'TCP://HOST_AIP地址:5022’;

2、  HOST_A 的主体服务器实例上,将 HOST_B 上的服务器实例设置为伙伴(使其成为初始镜像服务器实例)。方法是在新建查询窗口中执行:

--At HOST_A, set server instance on HOST_B as partner (mirror server).

ALTER DATABASE <DatabaeName>

    SET PARTNER = ‘TCP://HOST_BIP地址:5022’;

GO

参考网址:http://msdn.microsoft.com/zh-cn/library/ms191140(SQL.90).aspx

 

如何删除数据库镜像 (Transact-SQL)

1、      连接到任一伙伴。

2、   ALTER DATABASE <database_name> SET PARTNER OFF

其中,<database_name> 是要删除其会话的镜像数据库。此语句可删除数据库镜像会话并从数据库中删除镜像。可以在任一合作伙伴上指定 OFF。有关删除数据库镜像的影响的详细信息,请参阅删除数据库镜像

3、  或者,可以恢复以前的镜像数据库。在作为镜像服务器的服务器实例上,输入:

RESTORE DATABASE <database_name> WITH RECOVERY;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值