数据库镜像对于SQLServer2005的版本有一定要求,其中主服务器和镜像服务器只能在标准版、开发版和企业版的SQL Server 2005中运行,而见证服务器可以运行在任何版本的SQLServer上。
在进行数据库镜像前,要对主数据库进行一次完全备份,在此之前需要设置主数据库的日志恢复模式为完整模式。
设置并备份主数据库之后就可以开始了。
环境如下:
主机和备机都安装了SQLServer2005企业版,并且使用交叉线互联,IP设置
主机:192.168.0.7
备机:192.168.0.8
下面可以开始了:
一、执行如下SQL语句,创建数据库镜像端点并导出证书:
主机:
主机执行SQL
1 USE master;
2 --创建主密钥
3 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password‘;
4 --创建证书
5 CREATE CERTIFICATE MASTER_Cert WITH SUBJECT = 'MASTER_Certificate', START_DATE = '08/08/2008';
6
7 --创建端点
8 CREATE ENDPOINT Endpoint_Mirroring
9 STATE = STARTED
10 AS
11 TCP ( LISTENER_PORT=6666 , LISTENER_IP = ALL )
12 FOR
13 --负载为数据库镜像
14 DATABASE_MIRRORING
15 ( AUTHENTICATION = CERTIFICATE MASTER_Cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
16
17 --备份证书,用于主备证书互换
18 BACKUP CERTIFICATE MASTER_Cert TO FILE = 'C:\MASTER_Cert.cer';
备机:
二、把主机和备机的证书互换,即把主机的证书拷贝到备机的某一文件夹等待使用,备机进行同样操作。
执行如下SQL,设置登陆用户。
主机:
主机执行SQL1
--添加登陆用户
2
CREATE LOGIN SLAVE_Login WITH PASSWORD = 'password';
3
CREATE USER SLAVE_User FOR LOGIN SLAVE_Login;
4
CREATE CERTIFICATE SLAVE_Cert AUTHORIZATION SLAVE_User FROM FILE = 'C:\SLAVE_Cert.cer';
5
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SLAVE_Login];
备机:
备机执行SQL1
--添加登陆用户
2
CREATE LOGIN MASTER_Login WITH PASSWORD = 'password';
3
CREATE USER MASTER_User FOR LOGIN MASTER_Login;
4
CREATE CERTIFICATE MASTER_Cert AUTHORIZATION MASTER_User FROM FILE = 'C:\MASTER_Cert.cer';
5
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MASTER_Login];
三、在备机中还原数据库,把刚才主机数据库备份拷贝到备机,然后进行还原,注意选择还原条件为RESTORE WITH NORECOVERY,如图:
还原成功,显示正在还原。
四、在主机中执行如下SQL,执行成功则镜像设置成功,显示正在同步,如图:
主机执行SQL1
--设置镜像
2
ALTER DATABASE Test SET PARTNER = 'TCP://192.168.5.8:5022';
镜像建成后,就可以在主数据库的属性中设置数据库镜像,例如调整运行模式(据说异步模式性能较高,正如MS所写的高性能)
相关和错误解决方法:
以上互换证书如果主机和备机处于同一域中,则可以省略此步。
如果在主机执行失败,一般是由于主备数据库的内容不一致造成的,可以在主数据库进行还原。