logo资料库

Sqlserver主备数据库容灾.docx

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
Sqlserver双机热备文档(无域)
工程日志:2016-05-18 实施者:张新
Sqlserver 双机热备文档(无域) 工程日志:2016-05-18 实施者:张新 1. 配制环境 OS:Win7 DB:SQL Server R2 2. 基本配制 1. 开启 sqlServer 服务 2. 开启 sqlServer 的 tcp/ip 协议如下图-2 注:开启此服务后,需要重启 sqlServer 服务才能生效。 3. 在需要做备份的机器(主、从和可选的见证)上建立相同的登录用户名密码。 4. 打开镜像用到的 5022 端口。在 win 窗口中输入控制面板\系统和安全\Windows 防火墙,在弹出的窗口中点击[高级设置], 在入站和出站规则中加入 5022 端口。 5. 开启数据库 RemoteDacEnabled 属性。右键点击[数据库实例] - > 选择方面,在弹出的窗口中选择[外围应用配制器] 把 RemoteDacEnabled 属性设置为 true。 6. 在三台机器上建立同一个登录名和密码 点击数据库实例的下面的安全性,右键点击新建登录名,在三台机器上建相同的登录名和密码,主要是为了应用程序在连接数 据中使用。 7.备份还原数据库 将主服务器中的数据库完全备份与日志备份到同一目录同一文件中。右键[数据库名称] -> 点击[任务],选择备份,先做完全备 份,再做日志备份。在备库中还原主库的备份内容。右键[数据库名称] ->点击[任务],选择还原。如图-4
3. 开始热备 实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只 需要做一次,例如为了将两个 SQL Server 2008 的实例中的 3 个数据库建成镜像关系,则只需要做一次以下操作就可以了;或者 这样理解:每一对主备实例(不是数据库)做一次互通。 1、创建证书(主备可并行执行) --主机执行: master; USE DROP CERTIFICATE HOST_pri_cert; drop master key; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'masterWord'; CREATE CERTIFICATE HOST_pri_cert WITH SUBJECT = 'HOST_primary certificate' , START_DATE = '01/11/2011', EXPIRY_DATE = '01/11/2017'; --备机执行: master; USE CREATE MASTER KEY ENCRYPTION BY PASSWORD ='masterWord'; CREATE CERTIFICATE HOST_min_cert WITH SUBJECT ='HOST_minor certificate' , START_DATE = '01/11/2011', EXPIRY_DATE = '01/11/2017'; --见证服务器执行 master; USE CREATE MASTER KEY ENCRYPTION BY PASSWORD ='masterWord'; CREATE CERTIFICATE HOST_pro_cert WITH SUBJECT = 'HOST_Witness certificate' , START_DATE = '01/11/2011', EXPIRY_DATE = '01/11/2017';
2、创建连接的端点(主备可并行执行) select * from sys.endpoints drop endpoint 镜像 ; --主机执行: CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_pri_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 HOST_min_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 HOST_pro_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ) 3、备份证书以备建立互联(主备可并行执行) --主机执行: BACKUP CERTIFICATE HOST_pri_cert TO FILE = 'E:\HOST_pri_cert.cer'; --备机执行: BACKUP CERTIFICATE HOST_min_cert TO FILE='E:\HOST_min_cert.cer'; --见证服务器上执行 BACKUP CERTIFICATE HOST_pro_cert TO FILE = 'E:\HOST_pro_cert.cer'; 4、互换证书 将备份到 E:\的证书进行互换,即把 HOST_pri_cert.cer,HOST_pro_cer.cert 复制到备机的 E:\,把 HOST_min_cert.cer, HOST_pro_cer.cert 复制到主机的 E:\,把 HOST_pri_cert.cer,HOST_min_cert.cer 复制到见证机的 E: \ 5、添加登陆名、用户(主备可并行执行) --主机执行: CREATE LOGIN HOST_min_login WITH PASSWORD ='masterWord'; CREATE USER HOST_min_user FOR LOGIN HOST_min_login; CREATE CERTIFICATE HOST_min_cert AUTHORIZATION HOST_min_user FROM FILE ='E:\HOST_min_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_min_login]; CREATE LOGIN HOST_pro_login WITH PASSWORD ='masterWord'; CREATE USER HOST_pro_user FOR LOGIN HOST_pro_login; CREATE CERTIFICATE HOST_pro_cert AUTHORIZATION HOST_pro_user FROM FILE ='E:\HOST_pro_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_pro_login]; --备机执行: CREATE LOGIN HOST_pri_login WITH PASSWORD ='masterWord'; CREATE USER HOST_pri_user FOR LOGIN HOST_pri_login; CREATE CERTIFICATE HOST_pri_cert AUTHORIZATION HOST_pri_user FROM FILE ='E:\HOST_pri_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_pri_login]; CREATE LOGIN HOST_pro_login WITH PASSWORD ='masterWord'; CREATE USER HOST_pro_user FOR LOGIN HOST_pro_login; CREATE CERTIFICATE HOST_pro_cert AUTHORIZATION HOST_pro_user FROM FILE ='E:\HOST_pro_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_pro_login]; --见证服务器上执行 CREATE LOGIN HOST_min_login WITH PASSWORD ='masterWord'; CREATE USER HOST_min_user FOR LOGIN HOST_min_login; CREATE CERTIFICATE HOST_min_cert AUTHORIZATION HOST_min_user FROM FILE ='E:\HOST_min_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_min_login]; CREATE LOGIN HOST_pri_login WITH PASSWORD ='masterWord'; CREATE USER HOST_pri_user FOR LOGIN HOST_pri_login; CREATE CERTIFICATE HOST_pri_cert AUTHORIZATION HOST_pri_user FROM FILE ='E:\HOST_pri_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_pri_login]; 6、 配制镜像 右键点击需要镜像的数据库,点击[任务] ->选择[镜像],点击【配置安全性】,如下图:
然后依次点击下一步,由于是在三台机器上做镜像,因此镜像端口都按默认的 5022,如果在一台机器上做,需要使用不同的端 口号(选择三台服务器分别设定) 由于使用的是证书的方式,不是使用域名的方式,所有的服务账户名都为空,继续下一步 点击完成,然后点击开始镜像就完 成了数据库镜像的设置 5. 测试 1.主体与镜像转换 --主机 use master;---master 是系统数据库 alter database MyDataBaseBK set partner failover; 执行成功后原主体数据库会显示正在还原,备机数据库显示主体正在同步字样 2. 测试主备切换 主机崩溃,强制备机当主机,原主机恢复后再切换回去 主机 A 备机 B 此时,在 B 机上执行 use master; alter database MyDataBaseBK set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --强制接收 停止主机 A 的 SQL SERVER 服务(比如断电),此时备机上的数据库会显示正在恢复状态,大概持续几十秒,最后变成 dataName(主 体,已断开链接),即现在的镜像 B 可以用来充当主机了 假如现在有业务往数据库里插也是能成功的现在把原主机 A 恢复(通 电),然后在 B 机里操作 use master; alter database MyDataBaseBK set partner resume; 此时 A 机是作为镜像的,B 机是作为主机的,要再切换一下,则再在 B 上执行 3.alter database MyDataBaseBK set partner failover; 4.查看同步状态相关表 SELECT name,endpoint_id,type_desc,state_desc FROM sys.database_mirroring_endpoints select * from sys.dm_db_mirroring_connections select * from sys.database_mirroring
分享到:
收藏