设为首页 收藏本站
查看: 1021|回复: 0

[经验分享] SQL Server HA - 数据库镜像 (Mirroring)

[复制链接]

尚未签到

发表于 2018-10-16 07:57:18 | 显示全部楼层 |阅读模式

  •   数据库镜像简介
  From: http://mssqlmct.blog.51cto.com/9951484/1641831
  11.3  数据库镜像简介
  11.3.1 数据库镜像会话
  数据库镜像(Database Mirror)是 SQL Server 2005 SP1 引入的一种高可用技术。这种技术维护一个数据库的两个副本,这两个副本必须分别属于两个不同的 SQL Server 实例(通常这两个实例分别安装在不同的计算机上)。这些实例之间形成一种关系,称为“数据库镜像会话”(Database Mirroring Session)。
  在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”(Partner)进行通信和协作。
  数据库镜像技术有以下3种角色的服务器。
  ◆ 主体服务器(Principal Server)
  其中一个实例为客户端提供服务,这个实例称为“主体服务器”。该服务器”扮演“主体角色”,其数据库副本为当前的“主体数据库”。
  ◆ 镜像服务器(Mirror Server)
  另一个实例则充当备用服务器,这个实例称为“镜像服务器”(Mirror Server)。该服务器扮演“镜像角色”,其数据库副本为当前的“镜像数据库”。镜像数据库不能供客户端访问,但是可以为镜像数据库创建一个快照,让客户端访问这个快照。
  ◆ 见证服务器(Witness Server)
  见证服务器并不能用于数据库,只是用来支持自动故障转移。见证服务器验证主体服务器是否保持运行,当见证服务器与主体服务器断开连接之后,如果此时镜像服务器和见证服务器保持相互连接,则镜像服务器启动自动故障转移,成为新的主体服务器。
  所有数据库镜像会话都只支持一台主体服务器和一台镜像服务器,具有自动故障转移功能时需要使用一台见证服务器。下图显示了该配置。
DSC0000.jpg

  提示:
  镜像服务器实例必须与主体服务器实例运行相同版本的 SQL Server,例如,都是企业版。SQL Server 2008 或更高版本对见证服务器没有版本要求。
  11.3.2 数据更新的原理
  对数据库执行的每项插入、更新和删除操作都会生成事务日志记录。主体服务器将这些活动的事务日志记录打包成数据流发送到镜像服务器。镜像服务器将尽快对主体数据库的日志记录按顺序“重做”(Redo)到镜像数据库中,从而实现了数据同。
  与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。
  为减少数据流,从 SQL Server 2008 开始,在事务日志记录的流发送到镜像服务器之前,主体服务器会先将其压缩。在所有镜像会话中都会进行这种日志压缩。
  SQL Server 有一个专门的线程负责为镜像会话伙伴传送日志,还有一个线程负责镜像数据库事务日志文件的持久化。
  11.3.3 运行模式
  数据库镜像会话以同步操作或异步操作运行。
  在同步操作下,事务将在伙伴双方处提交。由于主体数据库需要等待镜像数据库将日志写入磁盘后返回的确认消息,因此会延长事务滞后时间。在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。
  根据是否同步操作以及是否支持自动故障转移功能,数据库镜像有以下三种运行模式。
  ◆ 高安全性模式
  高安全性模式支持同步操作。当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。一旦同步了数据库,事务将在伙伴双方处提交,这会延长事务滞后时间。
  ◆ 高性能模式
  高性能模式即异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。镜像数据库可能稍微滞后于主体数据库。
  主体服务器向镜像服务器发送事务日志记录之后,不会等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
  ◆ 自动故障转移模式(高可用模式)
  在高安全模式运行时,可以添加见证服务器,从而实现自动故障转移。
  11.3.4 数据库镜像的优势
  数据库镜像技术有以下优势:
  (1)消除存储方面的单一故障点
  数据库镜像实现了一个数据库的两个副本,而且不像 AlwaysOn 故障转移群集实例那样依赖于共享存储。
  (2)提高数据库可用性
  发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本联机。在这种模式下,备用副本是“热备用”,不仅故障转移的速度非常快,而且不会丢失数据。
  在其他运行模式下,数据库管理员可以选择强制服务(可能丢失部分数据),以替代数据库的备用副本。
  (3)增强的数据保护
  当数据库镜像运行在“高安全性”模式时,可以提供完整的数据冗余。
  在其他运行模式下,数据库镜像也可以提供数据冗余,但可能丢失部分数据。但是,数据库之间的时间间隔通常很小;如果其中一个伙伴的系统负荷过高,则时间间隔会增大。
  (4)自动页修复
  在某些类型的错误导致页损坏,使其无法读取后,在 SQL Server 2008 企业版或更高版本上运行的数据库镜像伙伴(主体或镜像)将尝试自动修复该页。无法读取该页的伙伴将从其伙伴请求该页的新副本。如果此请求成功,则将以可读副本替换不可读的页,并且这通常会解决该错误。
  11.3.5 数据库镜像的不足
  镜像数据库技术有以下不足之处:
  (1)版本限制
  对于标准版的 SQL Server 实例,只可以使用“高安全模式”,即主体数据库与镜像数据库必须实现同步操作。在这种运行模式时,如果任何一个伙伴遇到性能问题,都将使同步操作带来较大的延时。
  (2)镜像数据库的访问限制
  镜像数据库甚至不可以提供只读访问,只有通过创建快照才能访问,因此镜像数据库的利用率不高。
  由于数据库镜像技术存在上述不足,SQL Server 后续产品可能删除此项功能,建议改用 AlwaysOn 可用性组。
  实验二:SQL server 2005高可用性之----数据库镜像
  From: http://blog.csdn.net/leshami/article/details/4769060
  SQL server 2005高可用性之数据库镜像,是SQL server 2005的新技术之一,是一种基于软件的高可用性解决方案,可以对不同服务器或同一服务器不同实例之间的数据库实验无数据延迟,自动故障转移的热备份。数据库镜像是基于数据库级别的,只适用于使用完整恢复模式的数据库。
  一、实验目的:掌握SQL server 2005数据库镜像原理并配置数据库镜像、监控镜像状态及实现故障转移。
  二、数据库镜像的组成
  数据库镜像由二个数据库必须的数据库角色组成,一个是主体服务器角色,一个是镜像服务器角色。还有一个可选的服务器角色为见证服务器角色。
  1. 主体服务器(Principal Role)之主体数据库,主体数据库提供客户端应用程序的连接,查询,更新,执行相关事务等,主体数据库要求使用完全恢复模式。
  2. 镜像服务器(Mirror Role)之镜像数据库,镜像数据库持续同步来自主体数据库的事务,使得镜像数据库的数据与主体数据库保持一致。镜像数据库不允许任何的连接存在,但可以对其创建数据库快照来作为只读数据库,实现用户的相关查询操作。
  3. 见证服务器(Witness Server),可选的配置,用于高可用性操作模式,通过见证服务器自动侦测故障,实现角色切换和故障转移。一个见证服务器可以为多组镜像提供服务。
  4. 角色的转换。主体数据库与镜像数据库互为伙伴,当见证服务器侦测到主体服务器故障时,在高可用性模式下,实现故障自动转移后,会自动将主体服务器切换为镜像服务器角色,即角色发生了互换。
  三、数据库镜像的工作过程
  1. 主体数据库提供服务,当有来自客户端对主体数据库的更新时,主体数据库将数据写入主体数据库的同时也将事务传送给镜像数据库。
  2. 镜像数据库Redo来自主体数据库的事务,Redo完毕后,并发送消息通知主体服务器。
  3. 主体服务器收到来自镜像服务器中镜像数据写入完毕的消息后,将完成结果反馈给客户端。
  四、端点的作用
  SQL server 2005提供了多层次多级别的安全模式,连接端点便是安全中第一个层次级别,为实例级别,它控制着能否连接到实例。数据库镜像是三个实例级别的会话,故必须通过创建端点来实现互相通信。
  SQL server 2005可以创建两种类型的端点,一个是HTTP端点,一个是TCP端点。我们可以创建TSQL, SERVICE_BROKER, 或 DATABASE_MIRRORING类型的TCP端点。
  端点上安全分为三个层次,一是需要创建所需类型的端点,但该端点并不能提供服务。二是在创建的端点上指定端口号,并指定IP地址,数据库缺省的端口号为5022。三是对已创建并指定IP及端口号采用基于Windows身份认证或数字证书的加密功能加强安全。四是端点的状态必须为启动状态,才能够提供服务,如果端点在停止状态,对任意的连接,将给出错误提示。五是对于已建立的会话必须拥有端点的connect连接权限。
  五、数据库镜像的操作模式
  数据库镜像可以使用三种不同的操作模式,高可用性、高级别保护、高性能模式。在镜像会话期间,故障发生时,不同的操作模式对应着不同的事务转换方式。
  1. 高可用性:在镜像正常会话期间,主体服务器和镜像服务器之间能够持续,同步的传送事物。主体服务器中主体数据库发送日志后等待镜像服务器中的镜像数据库确认,确认完毕后再反馈给应用程序。高可用性模式需要使用见证服务器,参与会话的主体和镜像实例之间不停的发送ping命令来侦测对方的状态,见证服务器则侦测主体和镜像两者的状态。一旦侦测到故障发生,则主体或镜像提交请求到见证服务器,由见证服务器来仲裁角色的转换。高可用性的使用场景为要求提供高服务质量、能够自动实现故障转移、保证数据完整的场合。
  2. 高级别保护: 此模式没有见证服务器,主体服务器和镜像服务器之间同样能够持续,同步的传送事物。但由于少了见证服务器进行仲裁,则主体和镜像数据库之间不能够实现故障的自动转移,需要手动来实现角色之间的切换。高级别保护模式的使用场景多为高数据完整性要求、无须实现故障自动转移、对服务可用性要求相对较低的场合。
  3. 高性能: 此模式没有见证服务器,主体服务器和镜像服务器之间采用异步传送模式。主体服务器上的事务直接提交后通知应用程序,无须等待镜像服务器的确认,所主体数据库和镜像数据库之间有延迟的现象存在。没有了见证服务器进行仲裁,主体和镜像数据库之间不能够实现故障的自动转移,需要手动来实现角色之间的切换。高性能模式多使用于对性能要求高、主体镜像服务器相对较远、允许有延迟现象的场合。
  4. 事务安全性的说明:数据库镜像会话中数据库的安全性可以设定为Full或Off。Full模式的特性为主体和镜像数据库实现同步传输,主体发送日志后需要等待镜像数据库的确认,主体数据库和镜像数据库的日志完全一致。Off模式则表现为主体和镜像使用的异步传输模式,主体发送日志后无须等待镜像数据库的确认,主体数据库失败时,镜像服务器上可能会丢失部分日志,使得两者不能实时同步。
  5. 仲裁: 仲裁用于设定了见证服务器的镜像会话,用于高可用性模式。仲裁要求必须有两个或两个以上的服务器实例,且任一时间内必须要有一个伙伴为数据库提供服务,当故障发生时,仲裁决定故障的转移。
  6. 几种数据库镜像模式的比较,如下:
操作模式传输机制事务安全见证服务器是否要仲裁故障转移类型高可用性同步FullYY自动或手动高级别保护同步FullNY仅手动高性能异步OffN/AN仅强制  六、数据库镜像所需的环境
  1. 支持数据库镜像所需的版本,确保主体服务器和镜像服务器使用相同的版本,如两个伙伴运行SQL server 2005标准版或SQL server 2005运行企业版,安装sp2以上补丁,否则需要使用跟踪标记1400来实现。
  2. 一个主体服务器,一个镜像服务器,一个可选的见证服务器,见证服务器可以使用任意版本的SQL server 2005。
  3. 主体服务器的主体数据库设置为 FULL恢复模式。
  七、本次实验的环境
  1. windows xp pro (英文版) + sp2
  2. SQL server 2005 Developer + sp3
  3. 同一主机的三个实例: ROBINSON , ROBINSON/MIRROR,ROBINSON/WITNESS
  4. 用于实现镜像的数据库为Performance,此Performance数据库为SQL server 2005技术内幕:T-SQL查询中的脚本生成,现转其脚本如下,此数据生成后大小为1GB左右,主要是日志文件较大,可以修改@max和@numorders的值来缩小数据库,也可以停止MSSQLSERVER服务后删除日志文件,使用sp_attach_single_file_db来重新生成较小日志文件。
SET NOCOUNT ON;  USE master;
  GO
  IF DB_ID('Performance') IS NULL
  CREATE DATABASE Performance;
  GO
  USE Performance;
  GO
  -- Creating and Populating the Nums Auxiliary Table
  IF OBJECT_ID('dbo.Nums') IS NOT NULL
  DROP TABLE dbo.Nums;
  GO
  CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
  DECLARE @max AS INT, @rc AS INT;
  SET @max = 1000000;
  SET @rc = 1;
  INSERT INTO Nums VALUES(1);
  WHILE @rc * 2   ON dbo.Orders(orderdate, orderid)
  INCLUDE(custid, empid);

  >  CONSTRAINT PK_Orders PRIMARY KEY NONCLUSTERED(orderid),
  CONSTRAINT FK_Orders_Customers
  FOREIGN KEY(custid)    REFERENCES dbo.Customers(custid),
  CONSTRAINT FK_Orders_Employees
  FOREIGN KEY(empid)     REFERENCES dbo.Employees(empid),
  CONSTRAINT FK_Orders_Shippers
  FOREIGN KEY(shipperid) REFERENCES dbo.Shippers(shipperid);
  八、实验步骤
  1. 检查Performance数据库的还原类型是否为FULL,否则请修改Performance的恢复模式为FULL。
  2. 从主服务器备份主数据库后恢复到镜像服务器中,并确保两者数据库处于一致状态,在恢复时指定norecovery选项,此处也可以使用日志传送来初始化数据库镜像,恢复其他的如增量备份和日志备份文件,同样需使用norecovery选项。
  3. 复制其他需要的对象到镜像服务器,如logins,SSIS,Jobs等。
  4. 创建端点。端点的创建需要在每个实例上创建,且必须是sysadmin角色的成员,创建时需指定端点角色,并对端点激活。
  --ROBINSON :
  CREATE ENDPOINT [DB_mirroring]
  STATE=STARTED
  AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
  FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE,
  ENCRYPTION = SUPPORTED ALGORITHM RC4);
  --ROBINSON/MIRROR:
  CREATE ENDPOINT [DB_mirroring]
  STATE=STARTED
  AS TCP (LISTENER_PORT = 5023, LISTENER_IP = ALL)
  FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE,
  ENCRYPTION = SUPPORTED ALGORITHM RC4);
  --ROBINSON/WITNESS:
  CREATE ENDPOINT [DB_mirroring]
  AS TCP (LISTENER_PORT = 5024, LISTENER_IP = ALL)
  FOR DATA_MIRRORING (ROLE = WITNESS, AUTHENTICATION = WINDOWS NEGOTIATE,
  ENCRYPTION = SUPPORTED ALGORITHM RC4);

  >  5. 分别在各个实例上查看端点的配置情况及端点的状态。
  SELECT * FROM SYS.DTABASE_MIRRORING_ENDPOINTS;
  GO
  6. 分别在各个实例上配置数据库镜像的安全性,本实验使用的同一帐户,故配置数据库镜像的安全性语句相同,如下。如要设定不同的帐户,请在各实例上增加Login帐户,映射到Windows。
  USE MASTER
  GO
  GRANT CONNECT ON ENDPOINT::”db_mirroring” TO ”robinson/SQL_mirror”;
  GO
  7. 单击各个实例的Security,Logins下的SQL_mirror帐户,查看其Properities,在Securables可以看到SQL_mirror被授予了connect权限。
  8. 启动数据库镜像
  在镜像服务器上执行以下语句,用已指明主服务器的伙伴。注意应先在镜像服务器上指明主服务器伙伴,然后才在主服务器上指明镜像伙伴。

  >  GO

  >  GO

  >  GO
  9. 配置数据库事务镜像安全级别

  >  GO
  10. 查看数据库镜像的状态
  可以在主服务器上选择主体数据库,再单击属性,单击镜像,可以查看当前镜像数据库所使用的状态,端口及镜像模式等,也可以通过以下视图来查看当前镜像的状态。
  使用数据库镜像监视器。展开主服务器的主体数据库,右单击主体数据库,单击任务, 单击启动数据库镜像。在“数据库镜像监视器”对话框中,单击“注册镜像数据库”以注册一个或多个镜像数据库。
  使用动态管理视图监控镜像数据的转态。
  SYS.DATABASE_MIRRORING:此视图显示一个服务器实例中每个镜像数据库的数据库镜像元数据。
  SYS.DATABASE_MIRRORING_ENDPOINTS:显示有关服务器实例的数据库镜像的端点信息。
  SYS.DATABASE_MIRRORING_WITNESSES:显示服务器实例为见证服务器的每个会话的数据库镜像元数据。
  SYS.DM_DB_MIRRORING_ CONNECTIONS:为每个数据库镜像网络连接返回一行。
  11. 镜像数据库故障时角色转换的几种方式
  自动故障转移: 仅适用于高可用性,设置事务镜像安全级别为FULL。
  手动故障转移: 适用于高可用性和高级别保护模式,设置事务镜像安全级别为FULL。
  强制故障转移: 仅适用于高性能模式,设置事务镜像安全级别为OFF。
  12. 演示几种转移过程
  自动故障转移:在使用高可用性的配置环境中,手动停止主体服务器,并删除主体数据库日志文件后,再启动主体服务器,观察主体和镜像服务器中数据库名后所显示的字样发生了变化,主体数据库变成了镜像数据库,镜像修复后成了主体数据库。

  手动故障转移:可以在无故障的情况下实现手动故障转移。在主体数据库中执行>  强制故障转移: 通常应用于高性能模式中,高可用性镜像和见证服务器均不可用时,可以使用此方法快速修复,但此方法容易以导致数据的丢失。强制故障转移语句:ALTER DATABASE  Performance SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;我们对上述采用了高可用性模式的实验切换到高性能模式并实行强制故障转移,执行下述语句:

  >  GO

  >  GO
  ----然后停止主服务器的SQL server服务

  >  GO                                                                                                                                ----用于强制转移故障

  >  GO
  执行上述操作后,镜像服务器开始提供服务,原主体服务器处于挂起状态,此时可以使用以下SQL语句来恢复挂起的数据库。

  >  GO
  13. 实现客户端重定向
  自动重定向连接,使用ADO.NET或者SQL Native Client能够自动连接到故障转移后的伙伴,连接字符串中必须指定故障转移伙伴。
  ConnectionString=”Data Source=computerA;Failover Partner=computerB;
  Initial Catalog=Profermance;Integrated Security=True;”
  14. 对镜像数据库创建快照用作报表服务器等,减轻主数据的负载
  镜像数据库的不可直接访问的特性,使得创建数据库的快照用作报表服务器的特性得以体现。用户可以通过快照来访问镜像实例上的数据。当发生故障转移后,快照仍保留在原实例上,以下我们对Performance的镜像数据库创建快照。
  CREATE DATABASE Performance_snap ON
  (NAME = N’Performance_data’,FILENAME = N‘D:/SQL_Data/Performance_mirror/Performance.ss’)
  AS SNAPSHOT OF Performance;
  GO
  15. 及时删除不用的快照,减轻镜像服务器的负载。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-622090-1-1.html 上篇帖子: SQL Server AG - 3. 安装SQLserver 2014(For AlwaysOn) 下篇帖子: Oracle,MySQL,SQL Server数据库的数据类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表