Sql server镜像同步

服务器托管

服务器托管

完整备份A服务器上的Test库
主机执行完整备份 

USE master; 
ALTER DATABASE Test SET RECOVERY FULL; 
GO 

BACKUP DATABASE Test TO DISK = ‘D:SQLServerBackupsTest.bak’ WITH FORMAT;
GO 
BACKUP LOG Test TO DISK = ‘D:SQLServerBackupsTest.bak’; 
GO 

–将备份文件拷贝到B上。

一定要执行完整备份。

在B服务器上完整还原数据库

RESTORE DATABASE Test FROM DISK = ‘D:BackTest.bak’ WITH NORECOVERY 
GO 
RESTORE LOG Test FROM DISK = ‘D:BackTest_log.bak’ WITH FILE=1, NORECOVERY 
GO

在Host_A上执行

USE master;
GO
//在 master 数据库中,创建数据库主密钥(如果需要)。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘password’;
GO
CREATE CERTIFICATE HOST_A_cert 
   WITH SUBJECT = ‘HOST_A certificate’;
GO
/****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
IF  EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N’镜像’) 
DROP ENDPOINT [镜像]
GO
/****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
CREATE ENDPOINT [镜像] 
    AUTHORIZATION [sa]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE HOST_A_cert
, ENCRYPTION = REQUIRED ALGORITHM RC4)
GO
BACKUP CERTIFICATE HOST_B_cert TO FILE = ‘D:DataHOST_A_cert.cer’;

步骤二
在Host_B上执行

//在 master 数据库中,创建数据库主密钥(如果需要)。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘password’;
GO
CREATE CERTIFICATE HOST_B_cert 
   WITH SUBJECT = ‘HOST_B certificate’;
GO
/****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
IF  EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N’镜像’) 
DROP ENDPOINT [镜像]
GO
/****** Object:  Endpoint [镜像]    Script Date: 09/01/2009 17:44:54 ******/
CREATE ENDPOINT [镜像] 
    AUTHORIZATION [sa]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE HOST_B_cert
, ENCRYPTION = REQUIRED ALGORITHM RC4)
GO
BACKUP CERTIFICATE HOST_B_cert TO FILE = ‘D:DataHOST_B_cert.cer’;
GO

步骤三
复制HOST_A_cert.cer到Host_B,复制复制HOST_B_cert.cer到Host_A

步骤四
在Host_A上执行

USE master;
CREATE LOGIN HOST_B_login WITH PASSWORD = ‘password’;
GO
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
GO
CREATE CERTIFICATE HOST_B_cert
   AUTHORIZATION HOST_B_user
   FROM FILE = ‘D:backupHOST_B_cert.cer’
GO
GRANT CONNECT ON ENDPOINT::[镜像]   TO [HOST_B_login];

步骤五
在Host_B上执行

USE master;
CREATE LOGIN HOST_A_login WITH PASSWORD = ‘password’;
GO
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
GO
CREATE CERTIFICATE HOST_A_cert
   AUTHORIZATION HOST_A_user
   FROM FILE = ‘D:backupHOST_A_cert.cer’
GO
GRANT CONNECT ON ENDPOINT::[镜像]   TO [HOST_A_login]

先在镜像服务器上执行

ALTER DATABASE Test SET PARTNER = ‘TCP://192.168.10.2:5022’;

成功之后再在主机上执行

ALTER DATABASE Test SET PARTNER = ‘TCP://192.168.10.2:5022’;

这样两台服务器的镜像就同步了。

1

删除镜像:

ALTER DATABASE Test SET PARTNER OFF

如果主机出现问题,在主机执行

USE MASTER Go ALTER DATABASE Test SET PARTNER FAILOVER Go

总结:

如果在建立镜像的时候中间的那个步骤出问题,需要重新执行的时候一定要把该删得东西删除掉。

–查询镜像 select * from sys.endpoints 
–删除端口 drop endpoint Endpoint_As 
–查询证书 select * from sys.symmetric_keys 
–删除证书,先删除证书再删除主键 DROP CERTIFICATE As_A_cert 
–删除主键 DROP MASTER KEY 
–删除镜像 alter database 

 set partner off 
–删除登录名 drop login


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注