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
发表回复