分类: SQLServer
2018-07-11 09:44:26
【摘要】
最近客户给出两台SQL测试服务器,客户要求搭建SQL镜像,与正常搭建域环境的镜像有些区别,现在将我的实验步骤发出来,分享给大家。
本文转自IT培训机构-学领未来
一、准备环境
1、 两台单机服务器(主服务器WIN-J8IL1J3CNS2、镜像服务器WIN-5VGIP5CNB7B)
2、 在服务器上安装SQL server,我安装的是12版本。
3、 保证两台服务网络、端口都互通。
4、 SQL服务的启动账号最好为Windows账户,我使用的是administrator。
二、实验过程。
1、 在主服务器上创建数据库主秘钥。
2、 USE master 3、 GO 4、 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz@WSX'; |
镜像数据库同样也需要创建。
2、 在主服务上创建证书,并用主秘钥加密证书。
USE master GO CREATE CERTIFICATE Host_A_Cert WITH Subject = 'Host_A Certificate', Expiry_Date = '2019-1-1'; --过期日期 |
使用相同的方法,在镜像服务器上创建Host_B_Cert。
3、 在主服务器上创建端点。
--使用Host_A_Cert证书创建端点 IF NOT EXISTS ( SELECT 1 FROM sys.database_mirroring_endpoints ) BEGIN CREATE ENDPOINT [DatabaseMirroring] STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE Host_A_Cert, ENCRYPTION = REQUIRED Algorithm AES, ROLE = ALL ); END |
在镜像服务器对证书名稍作修改,创建镜像服务器的端点。
4、 在主服务器上备份证书,并将证书复制一份到镜像服务器。
BACKUP CERTIFICATE Host_A_Cert TO FILE = 'C: \Host_A_Cert.cer'; |
同样,在镜像服务器上备份证书,并将证书复制一份到主服务器。
5、 在主服务器为镜像服务器创建登录名。
CREATE LOGIN Host_B_Login WITH PASSWORD = 'Pa$$w0rd'; |
同样,在镜像服务器为主服务器创建登录名。
6、 在主服务器的master数据库上为镜像服务器创建用户,并映射到上一步创建的登录名上。
CREATE USER Host_B_User For Login Host_B_Login; |
在镜像服务器上也执行该操作。
7、 在主服务器上使用镜像服务器的证书授权用户为镜像服务器创建的用户。
CREATE CERTIFICATE Host_B_Cert AUTHORIZATION Host_B_User FROM FILE = 'C: \Host_B_Cert.cer'; |
在镜像服务器上也需要该操作。
8、 为创建的账号授权端口访问权限。
GRANT CONNECT ON ENDPOINT::[DatabaseMirroring] TO [Host_B_Login]; |
主备机都需要。
9、 然后将数据库备份,在镜像服务器上还原,并使他处于正在还原状态。
10、 在镜像服务器上执行以下命令:
ALTER DATABASE test SET PARTNER = 'TCP:// WIN-J8IL1J3CNS2:5022'; GO |
11、 在主服务器上执行以下命令:
ALTER DATABASE test SET PARTNER = 'TCP:// WIN-5VGIP5CNB7B:5022'; GO |
12、 进行手动故障转移测试。
【总结】
非域环境搭建mirror和域环境搭建存在相同点,有不一样。非域环境需要证书来加密端点连接和授权登录用户。希望我的分享对您有帮助。