使用证书创建SQL Server 2008镜像

同在一个域中的sql server镜像配置是很简单的,直接在sql管理器 - 数据库属性 - 镜像 - 配置安全性,一路回车到底就行,本文探讨的是没加域、或者不在一个可信的域中镜像的创建,在这种情况下,必须用证书创建才能成功。
 
实验环境:
数据库主体192.168.1.1 需要同步的数据库:test
数据库镜像192.168.1.2
见证服务器无,有见证服务器也可参考本文
 
1、删除以前配置过的镜像、证书等
解释:如果之前配过镜像没成功,或者成功了却因为各种原因镜像不能启动,你在重新创建的时候最好把之前的镜像、证书等信息都删掉,如果是全新安装的数据库,忽略此步骤。
1-1 select * from master.sys.endpoints  //查看之前创建过的镜像名
1-2 select * from master.sys.certificates //查看之前创建过的证书
根据上面查询的数据做以下删除操作
1-3 DROP ENDPOINT Endpoint_Mirroring //删除镜像
1-4 DROP CERTIFICATE HOST_1_cert       //删除证书
1-5 DROP CERTIFICATE HOST_2_cert       //删除证书
1-6 DROP LOGIN HOST_1_login                   //删除登录
1-7 DROP USER HOST_1_user                      //删除用户
1-8 DROP MASTER KEY                                //删除主key
以上步骤必须按顺序来,否则报错,主体与镜像都要做此操作,请改成相应值
 
2、配置主体192.168.1.1出站
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
CREATE CERTIFICATE HOST_1_cert
   WITH SUBJECT = 'HOST_1 certificate for database mirroring';
GO
CREATE ENDPOINT Endpoint_Mirroring
   STATE = STARTED
   AS TCP (
      LISTENER_PORT=7024
      , LISTENER_IP = ALL
   )
   FOR DATABASE_MIRRORING (
      AUTHENTICATION = CERTIFICATE HOST_1_cert
      , ENCRYPTION = REQUIRED ALGORITHM AES
      , ROLE = ALL
   );
GO
BACKUP CERTIFICATE HOST_1_cert TO FILE = 'E:\HOST_1_cert.cer';
GO
 
3、配置镜像192.168.1.2出站
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
CREATE CERTIFICATE HOST_2_cert
   WITH SUBJECT = 'HOST_2 certificate for database mirroring';
GO
CREATE ENDPOINT Endpoint_Mirroring
   STATE = STARTED
   AS TCP (
      LISTENER_PORT=7024
      , LISTENER_IP = ALL
   )
   FOR DATABASE_MIRRORING (
      AUTHENTICATION = CERTIFICATE HOST_2_cert
      , ENCRYPTION = REQUIRED ALGORITHM AES
      , ROLE = ALL
   );
GO
BACKUP CERTIFICATE HOST_2_cert TO FILE = 'E:\HOST_2_cert.cer';
GO
 
4、将两个证书互相拷贝到对方的E盘
 
5、配置主体192.168.1.1入站
USE master;
CREATE LOGIN HOST_2_LOGIN
   WITH PASSWORD = 'password';                
GO
USE master;
CREATE USER HOST_2_USER FOR LOGIN HOST_2_LOGIN;
GO
CREATE CERTIFICATE HOST_2_cert
   AUTHORIZATION HOST_2_USER
   FROM FILE = 'E:\HOST_2_cert.cer';
GO
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_2_LOGIN
GO
 
6、配置镜像192.168.1.2入站
USE master;
CREATE LOGIN HOST_1_LOGIN
   WITH PASSWORD = 'password';                
GO
USE master;
CREATE USER HOST_1_USER FOR LOGIN HOST_1_LOGIN;
GO
CREATE CERTIFICATE HOST_1_cert
   AUTHORIZATION HOST_1_USER
   FROM FILE = 'E:\HOST_1_cert.cer';
GO
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_1_LOGIN
GO
 
7、备份主体192.168.1.1数据库
USE master;
GO
ALTER DATABASE temp
SET RECOVERY FULL;
GO
BACKUP DATABASE temp
    TO DISK = 'e:\temp.bak'
    WITH FORMAT
GO
BACKUP LOG temp
    TO DISK = 'e:\temp_log.bak'
GO
 
务必用以上命令备份,否则可能因无法还原事务日志而镜像失败
 
8、还原数据库镜像到192.168.1.2
RESTORE DATABASE temp
    FROM DISK = 'E:\temp.bak'
    WITH NORECOVERY
GO
RESTORE LOG temp
    FROM DISK = 'E:\temp_log.bak'
    WITH FILE=1, NORECOVERY
GO
 
恢复前不需要预先建立数据库,直接在空数据库使用以上命令即可。
务必使用以上命令行操作,如果在管理器里用还原选项操作,还原出来的数据库不能用于镜像。
 
9、配置镜像
9-1 先在镜像数据库192.168.1.2操作
ALTER DATABASE temp
    SET PARTNER = 'TCP://192.168.1.1:7024';
 
9-2 再在主体数据库192.168.1.1操作
ALTER DATABASE temp
    SET PARTNER = 'TCP://192.168.1.2:7024';
 
至此镜像建立完毕,刷新一下就看到了
 
10、附数据库镜像取消命令
ALTER DATABASE temp SET PARTNER OFF
 
如果遇到无法镜像,请查看两台服务器系统日志
 
 

你可能感兴趣的:(sql,数据库,server,镜像,证书)