低成本两台服务器备份,SQL SERVER数据库镜像(二)

承接上文《异地(公网)数据库容灾,SQL SERVER互联网自动备份,SQL SERVER数据库镜像》说到我们已经备份并到镜象服务器里还原了数据库,接下一来我们就要把主服务器和镜象服务器连接起来,这里我们使用证书进行连接,我这里只使用命令行操作:

配置出站连接的进程分为以下基本步骤:

  1. master 数据库中,创建数据库主密钥。
  2. master 数据库中,为服务器实例创建加密证书。
  3. 使用服务器实例的证书为该服务器实例创建端点。
  4. 将证书备份到文件,并将其安全地复制到其他系统。

1. 在主服务器上执行下列命令:

master 数据库中,创建数据库主密钥。
create master key encryption by password='pass@word1'

master 数据库中,为服务器实例创建加密证书。
create certificate Host_A_cert with subject='HOST_A_certificate',start_date = '01/01/2010', expiry_date='01/01/2099'
SELECT * FROM sys.certificates;
使用服务器实例的证书为该服务器实例创建端点。
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)
go
SELECT name, role_desc, state_desc, connection_auth_desc, encryption_algorithm_desc FROM sys.database_mirroring_endpoints;
将证书备份到文件,并将其安全地复制到其他系统。
backup certificate HOST_A_cert to FILE='C:\HOST_A_cert.cer'

2.在镜象服务器上执行同样的操作:

create master key encryption by password='pass@word1'
create certificate Host_B_cert with subject='HOST_B_certificate',start_date = '01/01/2010', expiry_date='01/01/2099'
go
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)
go
backup certificate HOST_B_cert to FILE='C:\HOST_B_cert.cer'

3. 交换证书,将主服务器C盘上的HOST_A_cert.cer复制到镜象服务器上的C盘上。将镜像服务器C盘的HOST_B_cert.cer也复制到主服务器的C盘上。

配置入站连接的过程通常有以下几个步骤:

  1. 为其他系统创建登录名。
  2. 创建一个使用该登录名的用户。
  3. 获取其他服务器实例的镜像端点的证书。
  4. 将该证书与在步骤 2 中创建的用户相关联。
  5. 授予对该镜像端点的登录名的 CONNECT 权限。

1.在主服务器上执行:

为其他系统创建登录名。
create login HOST_B_login with password='pass@word1';
创建一个使用该登录名的用户。
create user HOST_B_user FOR LOGIN HOST_B_login;
将该证书与在步骤 2 中创建的用户相关联。
create certificate HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE='C:\HOST_B_cert.cer';
授予对该镜像端点的登录名的 CONNECT 权限。
grant connect on endpoint::Endpoint_Mirroring TO [HOST_B_login];

2.在镜像服务器上执行同样的操作

create login HOST_A_login with password='pass@word1';
create user HOST_A_user FOR LOGIN HOST_A_login;
create certificate HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE='C:\HOST_A_cert.cer';
grant connect on endpoint::Endpoint_Mirroring TO [HOST_A_login];

3.先在镜像服务器上设置数据库的镜像

alter database Northwind SET Partner = 'TCP://主服务器IP地址:5022'

4.设置主服务器上的数据库镜象:

alter database Northwind SET Partner = 'TCP://镜象服务器IP地址:5022'

好了,到这里我们就大功搞成了,现在这两台服务器已经开始镜像了。因为现在我们做的是手动镜像故障转移,所以当主服务器宕机后我们需要手动切换到镜像服务器上。

主机宕掉时执行:ALTER DATABASE Northwind SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

当主机恢复时执行:
ALTER DATABASE Northwind SET PARTNER RESUME; --恢复镜像
ALTER DATABASE Northwind SET PARTNER SAFETY FULL --事务安全,同步模式
ALTER DATABASE Northwind SET PARTNER FAILOVER; --切换主备

下一篇文我们将执行主备服务器自动切换,实现自动镜象故障转移。

posted @ 2012-07-14 20:47  碧玉软件  阅读(963)  评论(0编辑  收藏  举报