SQL Server 2005 镜像构建

主要参考文献

http://msdn.microsoft.com/zh-cn/library/ms191140(v=sql.90)

http://msdn.microsoft.com/zh-cn/library/ms189127(v=sql.90).aspx

辅助参考文献

http://www.cnblogs.com/killkill/archive/2008/05/23/1205792.html

http://liulike.blog.51cto.com/1355103/339183

--主9.20  备9.13, 两机的防火墙端口5022都要开启入站连接

扫描二维码关注公众号,回复: 1387202 查看本文章

--0、主机数据库全备份,事务日志备份。备机分别还原数据库和事务日志,注意,还原时都选择 with non recovery

--1、主机签发证书给备机,备机签发证书给主机

--2a、主机上创建提供给备机登录的账号密码,并绑定到备机的证书,这样备机通过备机证书,即可在主机上登录操作(不用管用户名密码,只通过证书,因为证书已经和用户名密码绑定过了)

--2b、备机上创建提供给主机登录的账号密码,并绑定到主机的证书,这样主机通过主机证书,即可在备机上登录操作(不用管用户名密码,只通过证书,因为证书已经和用户名密码绑定过了)

USE master;

ALTER DATABASE <DatabaeName> 

SET RECOVERY FULL;

--实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。

--注意:实现“主备数据库实例互通”的操作只需要做一次,例如为了将两个SQL Server 2005的实例中的5个数据库建成镜像关系,则只需要做一次以下操作就可以了;

--或者这样理解:每一对主备实例(不是数据库)做一次互通。

USE master;

--创建数据库主密钥, 查看数据库主密钥 select * from  sys.symmetric_keys  http://msdn.microsoft.com/zh-cn/library/ms174382(v=sql.90).aspx

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mkeypa913!';

CREATE CERTIFICATE HOST913_cert WITH SUBJECT = '9.13 certificate for database mirroring',

START_DATE = '01/01/2012';

USE master;

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mkeypa920!'   --需满足操作系统密码安全性要求(2008有强制要求)

CREATE CERTIFICATE HOST920_cert WITH SUBJECT = '9.20 certificate for database mirroring',

START_DATE = '01/01/2012';

--主

CREATE ENDPOINT Endpoint_Mirroring 

STATE = STARTED 

AS 

TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 

FOR 

DATABASE_MIRRORING 

(AUTHENTICATION = CERTIFICATE HOST913_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 HOST920_cert, ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--主

BACKUP CERTIFICATE HOST913_cert TO FILE = 'C:\SQLBackup\HOST913_cert.cer';

--备

BACKUP CERTIFICATE HOST920_cert TO FILE = 'D:\SQLBackup\HOST920_cert.cer';

互换证书

将备份到D:\SQLBackup\的证书进行互换,即HOST913_cert.cer复制到备机的D:\SQLBackup\。HOST920_cert.cer复制到主机的D:\SQLBackup\

--主(创建备机的入站账号)

CREATE LOGIN HOST_920_login WITH PASSWORD = 'host920!';

CREATE USER HOST_920_user FOR LOGIN HOST_920_login;

CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_920_user FROM FILE = 'C:\SQLBackup\HOST920_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_920_login];

--备(创建主机的入站账号)

CREATE LOGIN HOST_913_login WITH PASSWORD = 'host913!';

CREATE USER HOST_913_user FOR LOGIN HOST_913_login;

CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_913_user FROM FILE = 'D:\SQLBackup\HOST913_cert.cer';

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_913_login];

--以下步骤是针对每个数据库进行的,例如:现有主机中有5个数据库以下过程就要执行5次。

-备

ALTER DATABASE jdbt SET PARTNER = 'TCP://192.168.9.13:5022';

--主

ALTER DATABASE jdbt SET PARTNER = 'TCP://192.168.9.20:5022';



四、测试操作

1、主备互换

--主机执行:

1 USE  master;
2 ALTER   DATABASE   < DatabaseName >   SET  PARTNER FAILOVER;
3

2、主服务器Down掉,备机紧急启动并且开始服务

--备机执行:

1 USE  master;
2 ALTER   DATABASE   < DatabaseName >   SET  PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
3

3、原来的主服务器恢复,可以继续工作,需要重新设定镜像

1 -- 备机执行:
2 USE  master;
3 ALTER   DATABASE   < DatabaseName >   SET  PARTNER RESUME;  -- 恢复镜像
4 ALTER   DATABASE   < DatabaseName >   SET  PARTNER FAILOVER;  -- 切换主备
5

4、原来的主服务器恢复,可以继续工作

--默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。

--关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。

1 USE  master;
2 ALTER   DATABASE   < DatabaseName >   SET  PARTNER SAFETY  FULL -- 事务安全,同步模式
3 ALTER   DATABASE   < DatabaseName >   SET  PARTNER SAFETY  OFF -- 事务不安全,异步模式
4

猜你喜欢

转载自neo.iteye.com/blog/1536252