SQL Server高可用性解决方案概述与实现外文翻译资料
2022-11-27 14:31:18
英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
SQL Server高可用性解决方案概述与实现
MICHAŁ BLEJA
Faculty of Mathematics and Computer Science, University of Lodz
摘要:本文介绍了有关Microsoft SQL(MS SQL)服务器数据库服务的高可用性解决方案设计的相关概念。MS SQL从2012版本开始,提供了一个叫做AlwaysOn的新能力,为了在故障期间减少服务器或数据库的停机时间。它包括故障转移群集实例、可用性组、数据库镜像和日志传输机制。本文介绍了用我们的原型对这些概念的实际实施工作。同时也专注于其在现在信息系统中的优势,对这些机制进行比较择优。
关键词:高可用性;Windows集群;可用性组;故障转移群集实例;数据库镜像;日志传输
1.介绍
高可用性在大多数的现代数据库管理系统均有实现,如微软SQL Server[1,2][3]实现、MySQL、PostgreSQL数据库[4][5]。数据库管理员使用各种机制来增加系统的容错性,特别是对于关键任务数据库服务器。高可用性可以在不同级别上实现,包括硬件级别和软件级别。其中一个最重要的硬件的基础技术被称为冗余阵列的独立磁盘(RAID)[2,6]。它的目的是在多个磁盘上分配数据,保证硬盘崩溃后会对数据进行自动恢复。RAID提供了一些技术,如条带(RAID 0),镜像(RAID 1),剥离与奇偶校验(RAID 5)等,它也可以在软件方面实现。
本文关注的概念,利用MS SQL Server AlwaysOn功能实现高可用性的相关研究。我们处理机制如AlwaysOn故障转移群集实例,AlwaysOn可用性组,数据库镜像和日志传送。第一种方法在数据库服务器级别提供冗余。MS SQL Server的单拷贝安装在几个节点形成一个Windows服务器故障转移群集(WSFC)集群。这种复制称为故障转移群集实例(FCI)。最后三种方法作用于数据库级别。它们允许为生产数据库维护一个或多个备用数据库。上述机制允许数据库管理员(DBA)应对主要恢复目标:恢复时间目标(RTO)和恢复点目标(RPO)。第一个决定系统可以下降多久,并应尽量减少。第二个是指在过去的时间点,在故障的情况下,应恢复数据。实现高可用性是至关重要的,以满足企业的期望,因为他们最不希望发生需要的数据丢失、 不希望系统停机和崩溃。
2. 数据库级高可用性
有三个常用的机制保证高可用性数据库级别的日志传送、数据库镜像,AlwaysOn可用性组。它们通过在数据库服务器之间复制数据来提供基于软件的故障转移解决方案。这也是常见的做法,不仅为给定的数据库部署机制。特别是日志传送和数据库镜像可以作用于同一个数据库,以提供高可用性和灾难恢复。
2.1 日志传输
在SQL Server版本2012之前,DBA使用日志传送和数据库镜像维护他们的主数据库在远程服务器上备份数据库。与总是在可用性组,这两种方法不提供可读的二级数据库,这将是非常接近他们的主要同行。除了可用性组之外,还支持在多个次要服务器之间对数据进行异步或同步方式复制。部署日志传输涉及以下步骤[7,8]:
bull;将主数据库切换到完整恢复模型并执行其全部备份。
bull;恢复辅助服务器上主数据库的全部备份。
bull;执行程序sp_add_log_shipping_primary_database主服务器上。过程返回负责备份日志文件的作业标识符。DBA必须根据恢复点目标来调度此作业。
bull;跑上sp_add_log_shipping_secondary_database描述主服务器参数辅助服务器。过程返回两个工作标识符。第一个作业将将主服务器的日志备份复制到第二台服务器。第二个作业将定期恢复这些日志备份。
bull;运行sp_add_log_shipping_primary_secondary_database主服务器上提供辅助服务器信息。
如果在第二个备份选项中恢复日志备份,则辅助服务器可以充当报表服务器。但是这样的报表服务器仅在恢复日志之间的间隔中可用。如果辅助服务器有活动连接,则无法还原后续日志备份。它可以导致小学和中学的数据库之间的显着差异。因此,在故障转移期间,在其成为主服务器之前,必须将事务日志备份应用到辅助服务器上。
2.2. 数据库镜像
数据库镜像[7,9]是增加数据库可用性的另一种机制。它假定维护由两个SQL Server实例托管的数据库的两个副本。一个名为主服务器的实例存储了一个可用的数据库。另一个实例充当镜像服务器,并接受先前应用于主服务器的所有事务。数据库镜像可以在两种模式中实现:同步模式和异步模式。第一个也称为高安全模式假定事务一旦镜像服务器接收并提交,则在主服务器上提交事务。在第二种模式下,将事务应用到主服务器的客户端不等待来自镜像服务器的确认。客户端在将事务日志记录发送到镜像服务器时仅从主服务器接收确认。因此,这种模式被称为高性能模式。它可能会导致实例之间的差距,尤其是当主服务器的工作量高。
在两个SQL Server实例之间建立数据库镜像会话包括以下步骤[7,9]:
bull;恢复镜像服务器上的主数据库的正确备份(最近的完整和差异备份,不连续的日志备份序列)。
bull;如果每个服务器实例不存在,就创建终结点。
bull;在每个服务器实例上配置安全(基于Windows的身份验证或基于证书的身份验证)。
将主实例和镜像实例配置为合作伙伴。
--Restore the most recent full backup of demoDB on MSSQL02 restore database demoDB from disk=rsquo;\backup_serverdemoDB_full_backup.bakrsquo;with norecovery --Restore the most recent differential backup of demoDB on MSSQL02 restore database demoDB from disk=rsquo;\backup_serverdemoDB_diff_backup.bakrsquo; with norecovery --Restore the log backups taken after the most recent full backup or --differential backup restore database demoDB from disk=rsquo;\backup_serverdemoDB_log_backup_1.bakrsquo; with norecovery ... restore database demoDB from disk=rsquo;\backup_serverdemoDB_log_backup_n.bakrsquo; with norecovery --Implement security on MSSQL01 (Run in the master database) create master key encryption by password = fhfd#kk!JkLrsquo; create certificate MSSQL01_cert with subject = lsquo;MSSQL01_ certificatersquo; --Create an endpoint on MSSQL01 create endpoint mirroring state=started as tcp (listenr_port=51033) for database_mirroring (authentication = certificate MSSQL01_cert encryption=disabled, role=all) backup certificate MSSQL01_cert to file=rsquo;c:certMSSQL01_cert.cerrsquo;; --Copy the file MSSQL01_cert.cer from MSSQL01 to MSSQL02 --Implement security on MSSQL02 (Run in the master database) create master key encryption by password = lsquo;jyr#kk!Oplrsquo; create certificate MSSQL02_cert with subject = lsquo;MSSQL02_ certificatersquo; --Create an endpoint on MSSQL02 create endpoint mirroring state=started as tcp (listenr_port=51033) for database_mirroring (authentication = certificate MSSQL02_cert encryption=disabled, role=all) backup certificate MSSQL02_cert to file=c:certMSSQL02_cert.cerrsquo;; --Copy the file MSSQL02_cert.cer from MSSQL02 to MSSQL01 --Configure MSSQL01 for inbound connections (Run in master) create login MSSQL02_login with password = fgfsGv#!hrsquo;; create user MSSQL02_user from login MSSQL02_login; create certificate MSSQL02_cert authorization MSSQL02_user from file = lsquo;c:certMSQL02_cert.cerrsquo;; grant connect on endpoint::mirroring to MSSQL02_user; --Configure MSSQL02 for inbound connections (Run in maste) create login MSSQL01_login with password = fjdOGv#!hrsquo;; create user MSSQL01_user from login MSSQL01_login; create certificate MSSQL01_cert authorization MSSQL01_user from file = lsquo;c:certMSQL01_cert.cerrsquo;; --Configure the mirroring partners --Run on MSSQL02 and MSSQL01 correspondingly alter database demoDB set partner = lsquo;TCP://MSSQL01:51033rsquo;; alter database demoDB set partner = lsquo;TCP://MSSQL02:51033rsquo;; |
图1 数据库镜像的实现
例如,假定中小服务器叫做mssql01和mssql02,分别将这些数据库称为demoDb。然后图1介绍的T-SQL代码这是足够建立数据库镜像会话。
如果满足下列条件,数据库镜像也支持自动故障转移:
bull;它配置在高安全模式。
bull;它涉及三分之一个SQL服务器实例称为观察者。
2.3. 常态可用组
可用性组已在SQL Server 2012中引入[2]。可用组由一组用户数据库(称为主副本)和一到四个相应的二级副本组成。复制是由安装在Windows服务器故障转移群集的SQL Server实例主持(WSFC)群集节点。每个实例可以故障转移群集实例(FCI)或非FCI。因此实现WSFC集群部署AlwaysOn可用性组的关键。一般结构如图2所示。
图2 AlwaysOn的可用性组结构
应用于主副本的事务被发送到每个次级副本。每个次要数据库与每个主数据库分别同步。次要副本之一通常被配置为接受只读连接到其数据库。存储在二次副本中的数据库的备份操作也得到支持。
下面的步骤是必需的配置AlwaysOn可用性组[10]:
bull;启用AlwaysOn可用性组的每个服务器实例的特征(可以使用PowerShell命令:使sqlalwayson路径: computer_name SQL Server的SQL instance_name)。
bull;创建并配置可用组监听器。
bull;连接到一个实例,该实例专门托管主副本并创建可用组。
bull;加入辅助副本到可用组。
bull;通过恢复属于原始副本的数据库的适当备份来准备每个次要数据库。
bull;通过向可用性组添加辅助数据库初始化数据同步。
3. 执行SQL Server AlwaysOn故障转移群集实例
该方法是基于Windows服务器故障转移群集(WSFC)集群[11]。这样的集群由几个独立的服务器称为节点一起工作,以确保在崩溃后的MS SQL Server实例的可用性。群集节点可以是物理服务器,也可以是虚拟服务器。群集配置步骤对于物理节点和虚拟节点都是相同的。我们在Windows Server 2012和Hyper-V角色实现我们的原型激活。它包含以下组件:
bull;Windows Server 2012域控制器(群集节点属于同一Active Direc
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[26056],资料为PDF文档或Word文档,PDF文档可免费转换为Word