一、什么是数据库镜像

    基本软件的高可用性解决方案

  快速的故障转移恢复(3秒转移),低硬件成本

  基于数据库级别的实现

二、数据库镜像中的服务器角色

        主体服务器

    承载主体数据库

    接受用户连接和事务处理请求

        镜像服务器

    承载镜像数据库

    作为主体数据库的热备份(主体数据库的变化及时传到镜像数据库中)

    仅在故障转移后接受用户连接,事务处理请求。

        见证服务器(监视)

    监视服务器状态和连接性,实现自动自动故障转移

三、数据库镜像会话

  会话初始化

    镜像请求事务日志记录,与主体服务器实现同步

  会话过程

    主体服务器将日志记录传输给镜像服务器

    各个角色之间相互监视会话状态

       会话终结

    发生故障转移

    管理员终止数据库镜像

四 数据库镜像三种模式

操作模式

事务安全

传输机制

是否需要仲裁

见证服务器

故障转移类型

高可用

Full

同步

Y

Y

自动或手动

高级别保护

Full

同步

Y

N

仅手动

高性能

OFF

异步

N

N/A

仅强制

  高可用:要求高服务可用性, 要求实现自动故障转移,确保数据的完整。

  高级别保护模式: 数据完整性要求,不要求自动故障转移,对服务的可用性要求较低。

       高性能保护模式:主体服务器和镜像服务器距离很远,通讯链路有明显的延迟,对性能的事要求高于数据的完整性。

 五   配置演示

        环境: 数据库版本 sqlserver 2012  系统版本windows server 2008 R2 域管理

        mirroring测试场景

              主体服务器--FETCHINGDATA49\MSSQLSERVERTWO   tcp 5022 端口

              镜像服务器--172.168.18.132\MSSQLSERVER2012  tcp 5022 端口   

              见证服务器--FETCHINGDATA49 

            镜像操作模式: 高可用. 事务安全:Full,传输机制:同步,是否仲裁:Y,见证服务器:Y,故障转移:自动。



--步骤(1) 【主体服务器】设置为完整恢复模式,  做一次完整备份和日志备份
ALTER DATABASE Mirroring_Test SET  RECOVERY FULL 
backup database Mirroring_Test to disk='C:\data\Mirroring_Test.bak' with init
backup log  Mirroring_Test to disk='C:\data\Mirroring_Test.bak'



  



--步骤(2) 【镜像服务器】还原到镜像库上(将备份文件复制到镜像服务器目录还原)
--运行下面语句,使之创建镜像数据库,处于正在还原状态并且是覆盖。
 restore database Mirroring_Test from disk='D:\data\Mirroring_Test.bak' 
 with file=1,
 move N'Mirroring_Test' To N'D:\data\Mirroring_Test.mdf',
  move N'Mirroring_Test_log' To N'D:\data\Mirroring_Test_log.ldf',
  norecovery, replace

 restore log Mirroring_Test  from disk='D:\data\Mirroring_Test.bak' with file=2,norecovery


    

SQL2022镜像_Test

      在各服务器创建各端口



--步骤(3) 创建端点  【主体服务器】创建端点用于伙伴通讯,激活端点
create endpoint Mirroring_Test
as TCP (listener_port=5022)
for database_mirroring(role=partner,Encryption=supported)



-- 【镜像服务器】创建端点用于伙伴通讯,激活端点
create endpoint Mirroring_Test
as TCP (listener_port=5022)
for database_mirroring(role=partner,Encryption=supported)



--【见证服务器】创建端点用于见证通讯,激活端点
create endpoint Mirroring_Test
as TCP (listener_port=5023)
for database_mirroring(role=witness,Encryption=supported)


   

SQL2022镜像_数据库_02

     步骤4 创建connect(连接)权限。为三个数据库实例设置相同的账户名称和口令

           

SQL2022镜像_SQL2022镜像_03

       

SQL2022镜像_数据库_04

        

SQL2022镜像_服务器_05

         

SQL2022镜像_SQL2022镜像_06

         

SQL2022镜像_数据库_07

           步骤(5) 【主体服务器】配置镜像向导

           

SQL2022镜像_SQL2022镜像_08

           

SQL2022镜像_服务器_09

             

SQL2022镜像_服务器_10

     

测试


--测试手动故障转移(在主体服务器上执行)
ALTER DATABASE Mirroring_Test SET PARTNER failover
--测试自动故障转移(如在主体数据库服务器切断网线,或停止实例)
--测试数据同步在主体服务器上改动数据,在镜像数据库上创建快照查询
CREATE DATABASE snap_Mirroring_Test
ON (NAME=Mirroring_Test,FILENAME='D:\Snap_Mirroring_Test.snap')
   AS SNAPSHOT OF  Mirroring_Test
  
--删除快照
DROP DATABASE snap_Mirroring_Test



2018-05-28 11:57 NET未来之路