1.    概述

数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎 服务器实例上。通常,这些服务器实例驻留在不同位置的计算机上。启动数据库上的数据库镜像操作时,在这些服务器实例之间形成一种关系,称为“数据库镜像会话”。其中一个服务器实例使数据库服务于客户端(“主体服务器”),另一个服务器实例则根据镜像会话的配置和状态,充当热备用或温备用服务器(“镜像服务器”)。同步数据库镜像会话时,数据库镜像提供热备用服务器,可支持在已提交事务不丢失数据的情况下进行快速故障转移。未同步会话时,镜像服务器通常用作热备用服务器(可能造成数据丢失)。在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。两个伙伴在会话中扮演互补的角色:“主体角色”和“镜像角色”。在任何给定的时间,都是一个伙伴扮演主体角色,另一个伙伴扮演镜像角色。每个伙伴拥有其当前角色。拥有主体角色的伙伴称为“主体服务器”,其数据库副本为当前的主体数据库。拥有镜像角色的伙伴称为“镜像服务器”,其数据库副本为当前的镜像数据库。如果数据库镜像部署在生产环境中,则主体数据库即为“生产数据库”。数据库镜像涉及尽快将对主体数据库执行的每项插入、更新和删除操作“重做”到镜像数据库中。重做通过将活动事务日志记录的流发送到镜像服务器来完成,这会尽快将日志记录按顺序应用到镜像数据库中。与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。从 SQL Server 2008 开始,在事务日志记录的流发送到镜像服务器之前,主体服务器会先将其压缩。在所有镜像会话中都会进行这种日志压缩。

2.      目的

发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本联机(而不会丢失数据)。在其他运行模式下,数据库管理员可以选择强制服务(可能丢失数据),以替代数据库的备用副本

3.      测试环境

3.1.       主服务器

Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,局域网,IP:192.168.102.4x

3.2.       镜像服务器

Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,局域网,IP:192.168.102.4y

3.3.       见证服务器

Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,局域网,IP:192.168.102.4z

4.      配置镜像

4.1.       准备工作

4.1.1.  账户建立

Windows账户建立:分别在”主服务器”,”镜像服务器”,”见证服务器”,上建立本地帐号”public”,密码设置相同。

4.1.2.  端口开放

保持三台服务器端口5022端口可用,可用telnet命令测试,telnetIP 5022(建立完通讯端点后测试)

4.2.       配置镜像(基于工作组模式)

4.2.1.  主服务器上执行

use master
  go
  --创建登陆账户
  create login [TestServer1\public] from windows
  go
  --创建通讯端点
  create endpoint endpointmirror
  state=started --创建的同时激活端点
  as
  tcp(listener_port=5022)
  for 
  database_mirroring(encryption=supported,role=partner)
  go
  --授予账户[TestServer1\public]对端点的connect权限
  grant connect on endpoint::endpointmirror to [TestServer1\public]
  go
  --数据库模式确认
  alter database Northwind set Recovery full with no_wait
  go
  --在主服务器上进行数据库备份
  backup database Northwind
  to disk='d:\dbbackup\Northwind.bak'

4.2.2.  镜像服务器上执行

use master
  go
  --创建登陆账户
  create login [TestServer2\public] from windows
  go
  --创建通讯端点
  create endpoint endpointmirror
  state=started --创建的同时激活端点
  as
  tcp(listener_port=5022)
  for 
  database_mirroring(encryption=supported,role=partner)
  go
  --授予账户[TestServer2\public]对端点的connect权限
  grant connect on endpoint::endpointmirror to [TestServer2\public]
  go
  
  --在镜像服务器上还原数据库(前提数据库备份已拷贝)
  restore database Northwind
  from disk='d:\dbbackup\Northwind.bak'
  with file=1,norecovery

4.2.3.  启动镜像

4.2.3.1.      镜像服务器执行

--启动镜像
  alter database Northwind
  set partner='TCP://192.168.102.4x:5022'

4.2.3.2.      主体服务器执行

--启动镜像
  alter database Northwind
  set partner='TCP://192.168.102.4y:5022'

4.2.4.  测试镜像效果

4.2.4.1.      主体服务器执行

use Northwind
  go
  create table table12(id int)

4.2.4.2.      镜像服务器执行

use master
  go
  if exists(select 1 from sys.databases 
                     where name='snap_Northwind')
  drop database snap_Northwind
  go
  create database  snap_Northwind
  on
  (name=Northwind,filename='C:\....\snap_Northwind.snap')
  as snap of Northwind
  go
  use  snap_Northwind
  go
  select name from sys.tables

4.2.4.3.      通过镜像监视器查看镜像状态

4.2.4.4.      使用系统视图查看镜像的状态

select * from sys.database_mirroring
  go
  select * from sys.database_mirroring_endpoints
  go
  select * from sys.database_mirroring_witness

4.2.5.  加入见证服务器

4.2.5.1.      见证服务器执行

use master
  go
  --创建登陆账户
  create login [TestServer3\public] from windows
  go
  --创建通讯端点
  create endpoint endpointmirror
  state=started --创建的同时激活端点
  as
  tcp(listener_port=5022)
  for 
  database_mirroring(encryption=supported,role=witness)
  go
  --授予账户[TestServer3\public]对端点的connect权限
  grant connect on endpoint::endpointmirror to [TestServer3\public]
  go

4.2.5.2.      主体服务器执行

--加入见证服务器
  alter database Northwind
  set witness='TCP://192.168.102.4z:5022'

5.      故障模拟

5.1.       数据库损坏

5.1.1.  停止主服务器的SQLServer服务。

5.1.2.  此时辅助服务器自动切换为主体角色(主体已断开连接)(192.168.102.4y)

5.1.3.  启动原主体数据库的SQLServer服务(192.168.102.4x)

5.1.4.  此时192.168.102.4y变为(主体/已同步)状态,192.168.102.4x变成(镜像/已经同步)

5.2.       手动切换

5.2.1.  主体服务器执行

alter database Northwind
  set partner failover

5.2.2.  主体及镜像角色自动实现了切换

6.      总结

6.1.       注意点

6.1.1.  基于工作组的镜像,需要在各服务器上建立相同的本地帐号,且密码相同

6.1.2.  启动镜像必须从镜像服务器开始执行

6.1.3.  见证服务器需要在主体服务器上加入

6.1.4.  数据库模式需要为完整模式

6.1.5.  各服务器的版本必须相同

6.1.6.  保证镜像数据库有足够的空间容纳镜像数据库

6.1.7.  在镜像服务器上还原数据库,要用Norecovery选项

6.1.8.  如果数据库镜像已经停止,则必须将对主体数据库执行的所有后续日志备份应用到镜像数据库中,然后才可以重新启动镜像

6.2.       结论

6.2.1.  基于工作组的镜像操作起来比基于证书的要简单,切换容易

6.2.2.  SQLAgent对于镜像来说是非必须的,不同于Log Shipping

6.3.       知识点

6.3.1.  修改数据库的所有者

alter authorization on Database::Northwind to [sa]

DatabaseMirroring搭建的更多相关文章

  1. SQL Server非域(跨域)环境下镜像(Mirror)的搭建步骤及注意事项

    在实际的生产环境下,我们经常需要跨域进行数据备份,而创建Mirror是其中一个方案.但跨域创建Mirror要相对复杂的多,需要借助证书进行搭建. 下面我们将具体的步骤总结如下: 第一部分 创建证书 S ...

  2. 非域环境下SQL Server搭建Mirror(镜像)的详细步骤

    1.测试验证环境 服务器角色 机器名 IP SQL Server Ver 主体服务器 WIN-TestDB4O 172.83.XXX.XXX SQL Server 2012 - 11.0.5058.0 ...

  3. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

  4. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  5. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  6. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  7. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  8. 一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题

    千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi emb ...

  9. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

随机推荐

  1. P1244 青蛙过河

    P1244 青蛙过河NOI2000主要思想:数学归纳法 递推 压位高精度 化归 理解能力和找规律的能力题意再述:1.青蛙从上到下必须连续递增或者下面是石墩 而不能是1 12 33 4而且每时每刻都要满 ...

  2. eclipse中的maven build、maven clean、maven install和maven test的区别

    eclipse中的maven build.maven clean.maven install和maven test的区别 https://www.cnblogs.com/Marydon20170307 ...

  3. web前端实现本地存储

    当我们在提及web前端本地存储的时候,首先需要介绍一下本地化存储的概念和历史.本地化存储从来不是一个新奇的概念,因为web应用程序一直在追求的就是媲美甚至超越桌面应用程序.但是桌面应用程序一直优于we ...

  4. js中函数的参数传递

    js中所有函数的参数传递都是按值传递,也就是说把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样,基本类型值的传递如同基本类型变量的复制一样,而引用类型的值的传递则如同引用类型 ...

  5. 喵哈哈村的魔法考试 Round #4 (Div.2) 题解

    有任何疑问,可以加我QQ:475517977进行讨论. A 喵哈哈村的嘟嘟熊魔法(1) 题解 这道题我们只要倒着来做就可以了,因为交换杯子是可逆的,我们倒着去模拟一遍就好了. 有个函数叫做swap(a ...

  6. hdu 5775 Bubble Sort 树状数组

    Bubble Sort 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5775 Description P is a permutation of t ...

  7. OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉

    Challenge Your Template 题目连接: http://acm.hust.edu.cn/vjudge/contest/122701#problem/G Description ACM ...

  8. PHP之PDO_MYSQL扩展安装步骤(转)

    看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下. 这里我的系统是CentOS 6.0.如果你的系统是其他版本的Linux/Unix,可以参考.如果你的系统是Windows的 ...

  9. HDU 4786 Fibonacci Tree (2013成都1006题)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  10. 【Java】须要配置的三个Java环境变量

    我的电脑→属性→高级系统设置→高级→环境变量 1.JAVA_HOME : JDK的安装路径 2.PATH : %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 3.CLASSP ...