学习笔记(十五)——镜像的知识点与注意事项

一、基础知识

1、SQL Server镜像只有两种模式:高安全模式和高性能模式。两种模式的主要区别在于在事务提交后的操作。

在高性能模式下,主体服务器不需要等待镜像服务器响应即可提交事务。

  在高安全性模式,需要把事务同步到镜像并得到响应后才最终提交主体服务器的事务。

2、SQL Server镜像状态可能包含下面几种:

  • SYNCHRONIZING:正在同步,通常在第一次启用数据库镜像时出现,表示镜像服务器正在追上主体服务器的进度。
  • SYNCHRONIZED:已经同步完毕,大部分时间都是这种状态,一旦有爆发性的事务传输到镜像数据库,状态会从SYNCHRONIZED转变成SYNCHRONIZING。在高安全性模式下,这种状态通常不会导致数据丢失,仅表示镜像服务器正在同步,但是在高性能模式下,可能有数据丢失的风险。
  • SUSPENDED:挂起,当主体服务器不发送事务到镜像服务器时出现,在Failover发生后会出现这种状态(如果镜像环境依旧运行,仅使用Failover则不出现,但是如果镜像库断开连接,则会出现)。手动暂停镜像会话或者redo 日志发生错误时都会出现。
  • PENDING_FAILOVER:仅当主体服务器变成镜像服务器并且断开用户连接时,会在原主体服务器出现这种状态。在这种状态下,主体服务器和镜像服务器都会表现这种状态。但是见证服务器会出现:CONNECTED/DISCONNECTED/UNKNOWN的其中一种状态。
    • CONNECTED:代表见证服务器能连到其中一个伙伴,另外两种代表不能连到伙伴服务器,这种情况下,数据库会变成不可用,如果镜像环境使用了见证,而镜像服务器为DISCONNECTED,并且镜像服务器奔溃,那么数据库(即使在主体服务器上)都会变得无法访问。所以当见证为disconnected,可以关闭见证,从而禁用仲裁,使用ALTER DATABASE <DB> SET WITNESS OFF实现。
    • DISCONNECTED:当镜像环境中的伙伴均无法连接对方时出现。

  可以使用sys.database_mirroring目录视图查看镜像信息。

二、示例

1、分别在主体服务器、镜像服务器上创建端点

IF EXISTS(SELECT 1FROM sys.database_mirroring_endpoints AS EDROP ENDPOINT ep_EduBase_Mirroring;GOCREATE ENDPOINT ep_EduBase_MirroringSTATE=STARTED // 端点将立即启动

AS TCP(LISTENER_PORT=5022) //监听TCP端口

FOR DATABASE_MIRRORING(AUTHENTICATION=WINDOWS NEGOTIATE      //身份验证方式设为Windows协商(即在NTLM和KERBEROS之间选择)

,ENCRYPTION=SUPPORTED      //若通信端点支持加密,则镜像过程使用加密

,ROLE=PARTNER);       PARTNER     //角色用于主体/镜像服务器;WITNESS角色用于见证服务器;

2、通过完整备份、日志备份(若有必要)、还原,将数据库从主体服务器复制到镜像服务器上

DECLARE @FullBkDesc VARCHAR(MAX);SELECT@FullBkDesc = 'Full backup on principal server for database mirroring at '+CONVERT(VARCHAR,GETDATE(),120)+'.';BACKUP DATABASE EduBase2017TO DISK='C:\EduBase2017\Mirroring\EduBase_FullBackup_ForMirroring.bak'WITHINIT,Name = 'EduBase_FullBackup',DESCRIPTION = @FullBkDesc; //完整备份

GODECLARE @LogBkDesc VARCHAR(MAX);SELECT@LogBkDesc = 'Log backup on principal server for database mirroring at '+CONVERT(VARCHAR,GETDATE(),120)+'.';BACKUP LOG EduBase2017TO DISK='C:\EduBase2017\Mirroring\EduBase_LogBackup_ForMirroring.bak'WITHINIT,Name = 'EduBase_LogBackup',DESCRIPTION = @LogBkDesc;//日志备份:若在完整备份后,主体服务器的数据库发生更改,则需进一步备份、还原日志,以便保持日志链完整//为便于镜像服务器访问主体服务器的备份文件,可在cmd控制台将备份文件所在位置设为共享。

RESTORE HEADERONLYFROM DISK='\\WinSvr-1\EduBase2015Mirroring\EduBase2015_FullBackup_ForMirroring.bak'; 镜像服务器通过统一命名约定(UNC)地址访问主体服务器中的备份文件RESTORE DATABASE EduBase2015FROM DISK = '\\WinSvr-1\EduBase2015Mirroring\EduBase2015_FullBackup_ForMirroring.bak' WITHFILE = 1,REPLACE,NORECOVERY; 从完整备份中还原GORESTORE HEADERONLYFROM DISK= '\\WinSvr-1\EduBase2015Mirroring\EduBase2015_LogBackup_ForMirroring.bak'; RESTORE DATABASE EduBase2015FROM DISK='\\WinSvr-1\EduBase2015Mirroring\EduBase2015_LogBackup_ForMirroring.bak' WITHFILE = 1,NORECOVERY;
// 从日志备份中还原  最后一步备份务必指定非还原状态,以确保镜像服务器的数据库不可用//镜像数据库已包含主体数据库中的数据库用户,但镜像服务器未包含映射至这些数据库用户的登录,故需另行创建

3、分别在镜像服务器、主体服务器的相应数据库上启动镜像会话

ALTER DATABASE EduBase2015SET PARTNER='TCP://WINSVR-1.EDUBASE.COM:5022'; //在镜像服务器的数据库上,设置主体服务器的完整域名、监听端点

ALTER DATABASE EduBase2015SET PARTNER='TCP://WINSVR-2.EDUBASE.COM:5022'; //在主体服务器的数据库上,设置镜像服务器的完整域名、监听端点

ALTER DATABASE EduBase2015 //在主体服务器中设置镜像安全性

SET SAFETY FULL; //完整安全性:主体服务器的数据库中的事务在提交前,必须同步写入镜像服务器的数据库若设为OFF,则允许异步写入,可能导致丢失

ALTER DATABASE EduBase2015 //在主体服务器中设置镜像安全性

SET SAFETY FULL;//在客户端的ADO.Net的连接字符串中,增加Failover Partner=镜像服务器名,ADO.Net将自动重定向服务器

4、在主体服务器的数据库中修改数据

USE EduBase2015;UPDATE Course  SET Name='计算机导论(1)'WHERE Name='计算机导论';UPDATE Course  SET Name='C语言程序设计(2)'WHERE Name='C语言程序设计';//亦可在客户端中进行操作

5、假设发生故障,此时在主体服务器上手动设置故障转移,从而切换主体服务器、镜像服务器的角色

ALTER DATABASE EduBase2015SET PARTNER FAILOVER;

6、在当前的主体服务器(即先前的镜像服务器)的数据库中检查数据是否一致,随后修改数据

USE EduBase2015;SELECT * FROM Course;UPDATE Course  SET Name='VB语言程序设计(3)'WHERE Name='VB语言程序设计';//亦可在客户端中进行操作

7、假设主体服务器的数据库遇到大量数据写入,此时挂起镜像会话,随后继续镜像会话

ALTER DATABASE EduBase2015SET PARTNER SUSPEND;ALTER DATABASE EduBase2015SET PARTNER RESUME;

8、当前的镜像服务器(即先前的主体服务器)已排除故障,此时在当前的主体服务器(即先前的镜像服务器)上手动设置故障转移,从而切换主体服务器、镜像服务器的角色,随后检查数据是否一致

ALTER DATABASE EduBase2015SET PARTNER FAILOVER;USE EduBase2013;SELECT * FROM tb_Course;

9、停止镜像会话

ALTER DATABASE EduBase2015SET PARTNER OFF;

转载于:https://www.cnblogs.com/Angular-JS/p/8253198.html

学习笔记(十五)——镜像的知识点与注意事项相关推荐

  1. python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  2. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  3. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  4. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  5. Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告

    请看之前的:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 话不多说,直接上demo <!DOCTYPE html> <html lang="en"& ...

  6. 世界是有生命的(通向财富自由之路学习笔记十五)

    最近因为工作调度的事情,有了一段空闲的日子,有比较多的时间来回望自己走过的路以及如何走好以后的路.之前忙得很少时间来写博文,很少时间来写读书笔记,逐渐将自己一些很好的习惯丢弃了.从今天起将重拾写博文的 ...

  7. 前端学习笔记(十五)

    第十五章 HTML5新增标签 一.HTML5概述 1.简介         HTML5万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言的第五次大修改.HTML5将成为 HTML.XHTML ...

  8. 【theano-windows】学习笔记十五——受限玻尔兹曼机

    前言 终于到了最喜欢的模型: 受限玻尔兹曼机(RBM)了, 发现关于RBM是如何从能量模型发展过来的介绍非常不错, 而关于详细理论证明, 可以去看我前面的受限玻尔兹曼机的一系列博客. 国际惯例, 参考 ...

  9. hough变换直线检测_CV学习笔记(十五):直线检测

    在这一篇文章中我们将学习使用OpenCV中的 HoughLines 函数和 HoughLinesP 函数来检测图像中的直线. 在这个函数中,使用的是霍夫变换(Hough Transform) 这是计算 ...

  10. javascript学习笔记(十五) 间歇调用和超时调用

    1.超时调用setTimeout() setTimeout() 方法接受两个参数,第一个参数是函数,第二个参数是时间(单位微秒),返回数值ID 1 setTimeout( function () { ...

最新文章

  1. 网站robots.txt探测工具Parsero
  2. Java剖析工具JProfiler入门使用教程:离线剖析和触发器
  3. [云炬ThinkPython阅读笔记]2.7 注释
  4. SELECT LAST_INSERT_ID() 的使用和注意事项
  5. 开放源代码GIS资源集锦
  6. linux errno的作用域,关于比特科技c语言的学习博客(1)
  7. (37)FPGA原语设计(BUFR)
  8. angularjs指令(一)
  9. Android usb网卡配置ip地址,安卓手机通过电脑USB上网设置教程
  10. 在HBuilderX的git上导入github项目/把项目传到github
  11. 利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该年没有举办世界杯,则输出:没有举办世界杯。
  12. Permission denied: user=10273, access=WRITE, inode=“/cou/jd_phone_list“:root:supergroup:-rw-r--r--
  13. css实现三角形对话框,三角形图案
  14. numeric_limits 解析
  15. 大学生必须掌握的计算机软件基础
  16. river歌曲表达的意思_英文歌曲_river是什么意思_沪江英语
  17. 小白学Django第九天| Cookie和session的那些骚操作
  18. 3月广州IT媒体杀人游戏比赛,就在本周五晚
  19. 【重大喜讯】六度共识云通过华为云鲲鹏生态兼容认证
  20. 无人驾驶仿真软件合集

热门文章

  1. DBMS_PIPE包
  2. 谈谈技术原则,技术学习方法,代码阅读及其他的(引用)
  3. 全球地区资料json 含中英文 经纬度_2020年Brain Bee北京、天津、河北赛区地区赛参赛说明...
  4. 使用栈将递归函数转化为非递归函数_栈(Stack)及其应用-Python实现
  5. (11)VHDL例化system Verilog
  6. (96)FPGA PLL与MMCM区别?
  7. (30)Verilog HDL系统函数:$stop
  8. (16)System Verilog联合体union详解
  9. (34)FPGA面试技能提升篇(高速SERDES)
  10. (30)FPGA面试技能提升篇(基尔霍夫定律)