服务器角色 | 机器名/角色名 | 软件 | IP |
---|---|---|---|
主体服务器 | RepA | sql server 2008 r2 | 192.168.0.10 |
镜像服务器 | RepB | sql server 2008 r2 | 192.168.0.20 |
见证服务器 | win7 | sql server 2008 r2 | 192.168.0.30 |
2.服务器相关设置算法
一、建立文件夹 Certifications 用来存放认证证书 ShareFolders 用来存放共享文件,方便服务器之间传递文件 二、保证主体服务器与镜像服务器的数据文件夹路径相同 三、保证数据库的恢复模式为FULL
建立数据库主密钥sql
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa$$w0rd'; /* 删除主密钥 USE master; DROP MASTER KEY 使用相同方式在RepB闯将主密钥
二、建立证书并用主密钥加密数据库
USE master; GO CREATE CERTIFICATE Host_A_Cert WITH Subject = 'Host_C Certificate', Expiry_Date = '99991231' /* 删除证书 USE master; DROP CERTIFICATE HOST_A_Cert 在RepB使用一样的方法建立证书HOST_B_Cert
三、建立端点(也就是监听)服务器
CREATE ENDPOINT EDP_Mirror STATE = STARTED AS TCP( LISTENER_PORT = 5022, -- 镜像端点使用的通讯端口 LISTENER_IP = ALL) -- 侦听的IP地址 FOR DATABASE_MIRRORING( AUTHENTICATION = CERTIFICATE Host_A_Cert, -- 证书身份验证 ENCRYPTION = DISABLED, -- 不对传输的数据加密,若是须要加密,能够配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法 ROLE = ALL) -- 端点支持全部的数据库镜像角色, 也能够设置为 WITNESS(仅见证服务器),或 PARTNER(仅镜像伙伴) 在RepB使用相同的方法,×××名,建立端点
四、备份证书ide
BACKUP CERTIFICATE Host_A_Cert TO FILE = 'C:\ShareFolders\Host_A_Cert.cer'; 在RepB上执行相同的操做,备份Host_B_Cert RepA 和 RepB 的Certifications文件夹上都要有全部服务器的证书,能够经过共享文件夹复制
五、建立用户和登陆帐号加密
建立登陆帐号给镜像服务器 USE master; CREATE LOGIN Host_B_Login WITH PASSWORD = 'Pa$$w0rd'; 建立用户并映射到登陆帐号上 CREATE USER Host_B_User For Login Host_B_Login; 在RepB上使用相同的方法给RepB建立用户和登陆帐号,注意更更名称
六、使用证书受权用户code
建立一个新的证书,并用从伙伴服务器复制来的证书导入,而后受权上面建立的帐号 CREATE CERTIFICATE Host_B_Cert AUTHORIZATION Host_B_User FROM FILE = 'C:\Certifications\Host_B_Cert.cer'; 在RepB上使用一样的操做,注意更更名称
七、登陆帐号受权访问端口server
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO Host_B_Login; 在 RepB上使用一样的操做,注意更更名称
八、备份还原数据库it
完整备份RepA上的数据库,并以Norecovery选项还原到RepB(使用还原文件和文件组)
九、启动镜像io
注意顺序,如今RepB上执行 ALTER DATABASE MirrorDB SET PARTNER = 'TCP://RepA:5022'; GO 而后在RepA上执行 ALTER DATABASE MirrorDB SET PARTNER = 'TCP://RepB:5022'; GO 完毕,接下来是配置见证服务器
一、与RepA和RepB相似配置见证服务器的主密钥证书,端点,以及受权。并复制证书,保证每台服务器都有三台服务器的证书
二、在RepA和RepB上执行下面语句,为见证服务器建立端点权限
USE master; CREATE LOGIN Host_C_Login WITH PASSWORD = 'Pa$$w0rd'; GO CREATE USER Host_C_User For Login Host_C_Login; GO CREATE CERTIFICATE Host_C_Cert AUTHORIZATION Host_C_User FROM FILE = 'C:\Certifications\Host_C_Cert.cer'; GO GRANT CONNECT ON ENDPOINT::EDP_Mirror TO Host_C_Login; GO
三、主体服务器RepA加入见证服务器
ALTER DATABASE MirrorDB SET WITNESS = 'TCP://win7:5022'