详解数据库镜像
2018-11-09
SQL Server 2012热备技术简介
目前最新的SQL Server 2012主要提供两种热备技术,分别是最为强大的AlwaysOn实时热备架构,以及数据库镜像热备架构。
前者需部署在以Windows Server容错移动群集(WSFC)的基础上,并且只有SQL Server 2012企业版才支持。
而后者则只要针对个别需要启用镜像的数据库进行设置即可,并且无论是企业版还是标准版皆有支持,不过若采用标准版则仅能够以手动方式来进行容错切换,主要是因为在架构上少了第三部见证服务器(Witness)的SQL Server角色。
关于数据库镜像热备架构的设计,若是搭配前端的Web应用程序来规划,在实务上有两种作法可以来实践。
首先第一种是最简单的方法,将Web应用程序同时安装在两部SQL Server的主机上,不过缺点是一旦Web程序需要更新时,则两部主机都必须一起进行更新才行,但部署成本最低廉。
至于第二种作法,则是将前端Web应用程序主机与后端的两部SQL Server主机分开部署,此时前端Web应用程序中的联机字符串,必须设置好主要与热备的SQL Server联机,如此一来才能够在主要的SQL Server主机服务停止运作时,自动切换到热备的SQL Server主机服务,但这种规划方式也需要后端的SQL Server容错热备的速度够快才行,因此肯定较适合应用在以企业版SQL Server 2012为主的数据库镜像架构中,整体来看这样的规划成本,也会高出第一种作法许多。
SQL Server 2012热备的作法
针对SQL Server 2012的热备容错设计其实做法有很多种,这必须根据实际的应用需求来决定,并且不一定得要使用SQL Server 2012本身所提供的功能来完成,必要的话也可在结合虚拟化技术或其它第三方解决方案来处理。在此笔者归类以下几种常见的作法供大家参考:
1.最新结合Windows Server容错移动群集(WSFC)的SQL Server 2012 AlwaysOn技术。
2.SQL Server 2012可独立完成的数据库镜像热备架构。可选择采用企业版或标准版的架构设计,前者可做到全自动化热备,后者可以手动进行容错切换。
3.采 用Hyper-v 3.0或Hyper-v 3.0 R2虚 拟机的快速移动(Quicker Migration)架构。
4.采 用Hyper-v 3.0或Hyper-v 3.0 R2虚拟机的复写热备(HVR,Hyper-v Replica)架构。
5.采用第三方厂商的虚拟平台或其它储存端热备方案,这包含了以软件或硬件的热备机制。
SQL Server 2012试用版变成标准版
如果您尚未购买SQL Server 2012的标准版授权,则您可以到官方网站来下载简体中文的试用版。未来如果要转换成正式版,只要再一次执行安装程序,然后在[SQL Server安装中心]的[维护]节点页面中,通过版本升级功能来完成更新与转换即可。下面学习SQL Server 2012标准版的安装与设置技巧。
当执行了SQL Server 2012的安装程序时,系统会先检查是否已安装了.NET Framework和Windows Installer,如果还没有安装则会自动安装,然而.NET Framework的安装需要重新启动操作系统。
如果Windows Installer安装也需要重新启动,则安装程序会等 到.NET Framework和Windows Installer组件安装之后才会重新启动。
完成两个预先的组件安装之后,接下来您必须在SQL Server安装中心页面中点击至[安装]的页面,然后便可以在[安装]的页面中点击[添加SQL Server独立安装或将功能加入到现有安装]的连接。
接下来在[产品密钥]的页面中,如果您还在测试阶段,可以在选定免费版本的下拉选单中,选择安装Enterprise Evaluation、Express或是Express with Advanced Services。如果是已购买正式的版本,当然可以直接输入25码合法的产品密钥。点击[下一步]继续。
在[安装程序支持规则]的页面中,只要检查结果的清单中没有出现错误的讯息,那么表示仍然是可以继续完成安装的。假设您将SQL Server 2012安装在域控制器的主机,便会出现警告讯息,
注意:当SQL Server 2012安装到此计算器上以后,您便不能够将此计算器从域控制器变成网域成员服务器,除非您在将主机计算器变更为网域成员服务器之前,先完成卸载SQL Server 2012。
此外,由于SQL Server 2012安装程序,无法在Windows Server只读的域控制器角色上,来创建安全性组或提供SQL Server服务账户,因此在这种状况下安装程序将会发生失败。
在[安装程序角色]页面中,一般我们都会选取[SQL Server功能安装],来自定义所要安装的细部功能项目,如果想要快速安装所有功能,则可以选取[所有功能皆使用默认值]。点击[下一步]。
在[特征选取]页面中,可以勾选所要安装的功能项目。一般来说如果只需要使用到数据库的管理功能,只要将[Database Engine Services]与其下子项目勾选,然后再勾选所有共享功能项目即可,其中[管理工具]请务必安装,以便于后续进行本地的联机管理。点击[下一步]。
接下来在[实例配置]页面中,对于在本地所安装的第一个SQL Server,建议采用默认的实例名称即可,往后如果需要加装第二个以上的实例,则必须额外命名新的实例名称。点击[下一步]继续。
何谓SQL Server实例?所谓的实例(Instance)拥有它们自己专属的目录结构、登录结构以及服务名称,因此可以管理各自旗下的数据库、权限配置、安全设置以及资源分配的配置,在相同一部计算器的操作系统中最多可以有50个实例,并且皆可以是不同版本的实例,在系统默认的安装下第一个实例微计算器名称本身,而后续所安装的实例则需要而外命名。
在[磁盘空间需求]的页面中,便会根据您前面所勾选的功能项目,来决定所需要准备的磁盘空间。在[服务器配置]的页面中,必须设置不同服务所相对的启动帐户与密码以及启动类型。
如果想要快速完成设置可以点击[所有SQL Server服务都使用相同的帐户]按钮。这一些设置后续都是可以自行变更的。
注意:您无法以本地服务账户或网络服务账户,来执行域控制器上的SQL Server服务。
在[数据库引擎配置]页面中,首先在[服务器配置]的页签中,必须分别设置所要采用的验证模式,并且选定SQL Server管理员。
举例来说,如果您现在是以网域管理员的身分登录此 Windows Server,那么当您点击[加入目前的用户]按钮时,此用户便会成为SQL Server的管理员,当然您也可以点击[加入]按钮继续其他用户来成为SQL Server管理员。
接着在[数据目录]的页面中,建议您将系统数据库目录与用户数据库、备份目录,分开选定在不同的磁盘路径中。点击[下一步]。在 [准备安装]页面中,可以看到准备进行安装的所有组件以及功能,确认无误之后点击[安装]即可。
至于后续对于现有SQL Server实例的功能添加或移除,只要从[控制面板]中的[程序和功能]界面来完成即可。
当成功完成全新SQL Server 2012实例,以及所需要的功能安装后,请点击[关闭]。紧接着可能会出现[必须重新启动计算器]的讯息,请点击[确定]并且完成重新启动。
在SQL Server 2012成功完成安装后,首先让请开启位在[开始][所有程 序][ Microsoft SQL Server 2012 ]下的[SQL Server Management Studio]继续。接着可分别输入所要联机的服务器名称与验证方式。
注意:如果是其它额外的实例名称而非默认值,可输入[服务器名称实例名称]格式在服务器名称字段中。
配置镜像数据库热备前的重要任务
想要开始来创建数据库镜像的热备机制,首先必须将准备镜像的来源数据库进行备份。
然后将此备份还原到担任第二部镜像主机的SQL Server实例之中。在来源主机的SQL Server 2012数据库项目节点上按下鼠标右键点击[工作][备份]继续。
在[备份数据库]页面中设置[备份类型]为[完整],然后在目的地设置中,点击[加入]按钮来输入准备用来存放备份文件的路径与文件名。最后在[选项]的页面中选取[覆写所有现有的备份集]。
接着在担任SQL Server 2012镜像主机的实例上的[数据库]项目上,按下鼠标右键点击[还原数据库]。在[一般]页面中,先在[来源]区域中选取[装置]。
然后点击浏览按钮来加载前面步骤中的备份文件,并且将它的还原备份集项目勾选。
在读取备份装置时的设置页面时,请记得在[备份媒体类型]中必须选取[文件],然后再点击[加入]按钮来选取备份文件,完成加入后点击[确定]。在[文件]的页面中,可采用默认的数据库还原路径,或是选择自定义的还原路径。
在[选项]的页签中,将复原状态的设置选项变更为[RESTORE WITH NORECOVERY]后再进行还原即可。当成功将完整备份的数据库,还原至另一部担任镜像的SQL Server 2012主机后,便可发现该数据库的状态是显示为[正在还原...]。
如果状态不是显示如此,那么即表示在前面步骤中,您没有将复原状态选项设置为[RESTORE WITH NORECOVERY]。
开始配置数据库镜像
在确认已准备好网域中的两部SQL Server 2012实例,并且也完成了选定数据库的相关备份与设置作业之后。接着请回到主要服务器的SQL Server 2012实例中,在准备进行镜像热备的数据库项目上,按下鼠标右键点击[工作][镜像]继续。
图1 镜像设置
如图1所示便是SQL Server 2012数据库镜像的管理页面,在默认的状态下是没有任何设置的,我们可以从状态区位中检视到目前数据库镜像的信息,请点击[设置安全性]按钮继续。
执行[设置安全性]之后如果出现"这个数据库未使用完整恢复模式,所以无法镜像"的错误讯息,即表示这个数据库在当初设置完整备份时,没有事先设置好恢复模式为[完整],该如何解决这个问题呢?请继续往下阅读。
想要修改数据库的恢复模式,请开启数据库的属性内容页面。接着点击至[选项]页面,然后从[恢复模式]下拉选单中挑选[完整]即可。
完成来源数据库的恢复模式设置之后,请重新备份此数据库并且还原至准备担任镜像服务器的SQL Server 2012。
在成功执行[设置安全性]后,接下来将会开启[设置数据库安全性向导]页面,我们将会通过此向导完成有关于在数据库镜像中的三种服务器的基本联机配置。点击[下一步]继续。
在[包含见证服务器]的页面中,您可以决定是否要在数据库镜像的架构当中包含见证服务器的使用。
然而,有没有见证服务器的差别主要是在自动容错移动的机制上,换句话说当您只需要以手动方式,来进行容错移动的操作时,此角色是可以选择不用设置的。
由于在我们实作讲解的环境中,SQL Server 2012是标准版而非企业版,因此在接下来范例中我们以选取[否]设置来继续。
在[主体服务器实例]页面中,系统会预先选取好SQL Server的实例,而我们则可以确认接听程序端口号码与端点名称,其中端点的名称是可以输入中文或英文。点击[下一步]。
在[镜像服务器实例]页面中,您必须先手动设置好正确的SQL Server实例联机,接着系统会自动侦测到它正确的端口号码,在正常的情况下应该也是5022,在此如果您因测试需要,而想要让所有SQL Server实例在同一部主机上,那么端口就不能够设置为5022。点击[下一步]来继续同样完成见证服务器的联机设置。
在[服务账户]的页面中,如果需要使用不同网域与账号的联机登录,则可以在此分别针对主体与镜像进行设置,否则请直接点击[下一步]完成设置即可。
当成功完成数据库镜像安全性设置后,便在此可以检视到不同SQL Server实例所担任的角色,以及各自所使用的套接字口。点击[完成]。
我们可以在[正在设置端点]的页面中,检视到目前每一个镜像端点是否已经设置成功。点击[关闭]。
启动数据库镜像功能
紧接着将会出现数据库属性警示讯息,主要询问我们是否要立即启动镜像,您也可以不要启动镜像,等到之后再来手动启动即可。
此外,在这个警示讯息中,我们也可以检视到此作业模式为[不具有自动容错移动的高安全性(同步)],这也正是符合SQL Server 2012标准版的镜像架构。当系统在启动镜像功能的过程中,侦测到目前两部SQL Server中的此数据库恢复模式状态,如果不是处于完整恢复模式,便会出现错误讯息。
再一次又回到了数据库镜像设置的页面了,如果尚未启动镜像功能,请点击[启动镜像]按钮即可正式进行数据库镜像作业。在[作业模式]区域中,目前是设置在[不具有自动容错移动的高安全性(同步)],而在[状态]列中则是显示了[已同步处理:数据库已完全同步],因此当发生主要的SQL Server实例服务停摆,镜像数据库便需要手动接替才能够恢复正常运作。
在所设置数据库镜像的数据库名称中,对于来源数据库将显示"主体,已同步处理"。而对于另一部SQL Server的目标数据库,则是显示会"主体,已同步处理/正在还原"。未来如果有进行容错切换,则两个数据库的状态信息也会跟着对调。
如何知道端口在接听的状态下?在Windows Server操作系统上只要是想查看目前本地有哪一些端口(Port)正在进行接听,都可以通过命令行的netstat命令工具搭配-an|find":5022"参数来完成检查。
数据库故障热备仿真测试
为确保未来如果真的发生主体数据库主机故障时,可快速手动切换至热备的镜像数据库来继续运作,我们可以先来自行尝试一下模拟主要这部SQL Server故障的状况,以便演练进行手动的容错切换方法。
首先您可在[SQL Server Management Studio]管理界面中,针对主要的SQL Server实例,按下鼠标右键点击[停止]。紧接着便会出现MSSQLSERVER服务停止的确认讯息,请点击[是]。
在SQL Server 2012镜像的实例数据库上,按下鼠标右键点击[添加查询]。在查询的窗口中,请输入以下用以切换SQL Server镜像服务器角色的命令参数,然后点击[执行]按钮,执行后如果在输出页面中没有出现错误或失败的讯息,即表示成功。
ALTER DATABASE [数据库名称] SET PARTNER
FORCE_SERVICE_ALLOW_DATA_LOSS
在成功执行上述SQL命令后,您将会发现原本在第二部SQL Server主机中的镜像数据库,目前已经变成了[主体]数据库了,并且是呈现[已中断连接]的状态。
到目前为止,实际上您的前端如果有连接的应用程序,便已经可以正常存取所成功切换镜像角色的SQL Server数据库了。
接下来假设原先的第一部SQL Server又恢复正常了,因此请在它的[服务]管理员界面中,将它的相关服务启动即可。
您将可以发现目前第一部与第二部的SQL Server 2012,其服务皆是正常启动的,不过两者的镜像角色是对调的,在这样的状态下我们如何让他们可以继续进行镜像的同步呢。请在目前担任主体的数据库上,按下鼠标右键点击[工作][镜像]继续。
在[镜像]的页面中,您将会发现目前数据库镜像的状态是暂停的,必须点击[继续]按钮来恢复运作即可。除了以上方法之外,您也可以在SQL查询窗口中,执行ALTER DATABASE [数据库名称] SET PARTNER RESUME,让数据库镜像继续同步。
在我们点击[继续]按钮时,将会出现“数据库属性”的讯息页面,主要是提示我们会发生此类事件的可能原因,并且提醒我们对于一些尚未传送的事务历史记录将会发生遗失,因此需要特别注意。如果发生数据库镜像同步失败,极有可能是网络连接问题所造成的。