|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
DBaaS向客户提供了许多与其他云服务相类似的优势:一个灵活的、可扩展的MySQL学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。 本文对SQLSERVER2005数据库镜像举行了教程式的解说,详细内容包含:先容、静态、可用性场景、完成和高可用性手艺,供人人参考!
概述
数据库镜像是SQLSERVER2005用于进步数据库可用性的新手艺。数据库镜像将事件日记纪录间接从一台服务器传输到另外一台服务器,而且可以在呈现妨碍时疾速转移到备用服务器。能够编写客户端程序主动重定向毗连信息,如许一旦呈现妨碍转移就能够主动毗连到备用服务器和数据库。
主动举行妨碍转移而且使数据丧失最小化一般包含高贵的硬件和庞大的软件。可是,数据库镜像能够在不丧失已提交数据的条件下举行疾速妨碍转移,不必专门的硬件,而且易于设置和办理。
数据库镜像先容
在数据库镜像中,一台SQLServer2005实例接二连三的将数据库事件日记发送到另外一台备用SQLServer实例的数据库正本中。发送方的数据库和服务器承当配角色,而吸收方的数据库和服务器承当镜像脚色。主服务器和镜像服务器必需是自力的SQLServer2005实例。
在一切SQLServer数据库中,在对真实的数据页面举行修正之前,数据改动起首都纪录在事件日记中。事件日记纪录先被安排在内存中的数据库日记缓冲区中,然后尽快地输入到磁盘(大概被软化)。在数据库镜像中,当主服务器将主数据库的日记缓冲区写进磁盘时,也同时将这些日记纪录块发送到镜像实例。
当镜像服务器吸收到日记纪录块后,起首将日记纪录放进镜像数据库的日记缓冲区,然后尽快地将它们软化到磁盘。稍后镜像服务器会从头实行那些日记纪录。因为镜像数据库从头使用了主数据库的事件日记纪录,因而复制了产生在主数据库上的数据改动。
主服务器和镜像服务器将对方视为数据库镜像会话中的同伴。数据库镜像会话包括了镜像同伴服务器之间的干系。一台给定的同伴服务器能够同时承当某个数据库的配角色和另外一个数据库的镜像脚色。
除两台同伴服务器(主服务器和镜像服务器),一个数据库会话中大概还包括第三台可选服务器,叫做见证服务器。见证服务器的脚色就是启动主动妨碍转移。当数据库镜像用于高可用性时,假如主服务器俄然失利了,假如镜像服务器经由过程见证服务器确认了主服务器的失利,那末它就主动承当主服务器脚色,而且在几秒钟以内就能够向用户供应数据库服务。
数据库镜像中必要注重的一些主要事项:
◆主数据库必需为FULL复原模子。因为bulk-logged操纵而招致的日记纪录没法发送到镜像数据库。
◆初始化镜像数据库必需起首利用NORECOVERY复原主数据库,然后再按按次复原著数据库事件日记备份。
◆镜像数据库和主数据库称号必需分歧。
◆因为镜像数据库处于recovering形态,因而不克不及间接会见。经由过程在镜像数据库上创立数据库快照能够直接读取某一个时候点的镜像数据库。(参阅该白皮书前面“数据库镜像和数据库快照”部分)
注重:要想猎取更多与数据库镜像术语有关的信息,请参阅SQLServer2005BooksOnline中关于“OverviewofDatabaseMirroring”。
操纵形式
数据库镜像会话有三种大概的操纵形式。依据事件平安性的设置和镜像会话中是不是必要见证服务器来决意准确的操纵形式。
表1:数据库镜像操纵形式
操纵形式
事件平安性传输机制必要Quorum见证服务器妨碍转移范例高可用FULL同步YY主动大概手动高回护FULL同步YN只妙手动高功能OFF异步NN/A只能forced 假如safety设置为FULL,那末经由过程同步体例传输数据,而且必要一台镜像服务器才干供应数据库服务。quorum投票表决请求最少两台服务器的介入才干够决意两个同伴服务器各自承当甚么脚色,配角色仍是镜像脚色。
为了更深切研讨这三种操纵形式,起首来更进一步研讨一下事件平安性和quorum的脚色。
事件平安性
If事件平安性(大概safety)设置为FULL,那末主服务器和镜像服务器事情在同步传输形式下。当主服务器软化其主数据库日记纪录到磁盘时,也同时将日记发送到镜像服务器。然后主服务器守候镜像服务器的回覆。镜像服务器将那些不异的日记纪录软化到镜像日记地点磁盘后,对主服务器举行回复。当safety设置为OFF时,主服务器不会守候来自服务器切实其实认,因而主数据库和镜像数据库大概不是完整同步的(也就是,镜像大概滞后于主数据库)。
同步传输体例包管镜像数据库事件日记中一切事件与主数据库事件日记中的事件同步,因而可视为事件是平安传输的。要将safety设置为FULL,利用
ALTERDATABASE[<dbname>]SETSAFETYFULL; 当safety设置为OFF,主服务器和镜像服务器之间的通讯是异步的。主服务器不会守候镜像服务器已将事件纪录软化切实其实认信息。镜像服务器经由过程尽快纪录事件日记的来试图坚持与主服务器同步,可是假如主服务器俄然失利同时强迫镜像服务器供应服务,那末某些事件仍是有大概丧失(参阅SQLServerBooks中的ForcedService)。
Quorum和见证服务器
当safety设置为FULL,数据库镜像必要quorum才干供应数据库服务。quorum是在同步数据库镜像会话中请求的一切毗连起来的服务器之间的最小干系。因为一个quorum最少必要两台服务器,因而当safety为FULL时,主服务器必需和其他某最少一台服务器构成quorum才干够供应数据库服务。
见证服务器匡助主服务器大概镜像服务器构成quorum。假如存在见证服务器,那末主数据库大概镜像数据库失利时,其他两台服务器还能够构成quorum。假如主服务器没法看到镜像服务器,那末它能够和见证服务器构成quorum,并坚持供应数据库服务。相似地,假如镜像服务器和见证服务器看不到主服务器,那末这两台服务器能够构成quorum,镜像服务器承当新主服务器的脚色。
见证服务器失利不被视为数据库镜像绘画中的单点失利。由于假如见证服务器失利了,那末主服务器和镜像服务器还能够构成quorum(更多信息请参阅SQLServerBooksOnline中的“QuoruminDatabaseMirroringSessions”主题)。
高可用操纵形式
高可用操纵形式撑持最年夜水平的数据库可用性,假如主数据库失利将主动转移到经销数据库。它请求将safety设置为FULL而且界说一台见证服务器作为数据库镜像会话中的一员。
高可用操纵形式最合适于那些服务器之间具有高速且牢靠的通讯线路,同时请求在单一数据库上完成主动妨碍转移的场景。当safety为FULL时,主服务器必需长久守候来自镜像服务器的回覆,主服务器功能也因而遭到镜像服务器才能的影响。因为双数据库失利将招致主动妨碍转移,因而假如有多半据库使用程序,那末就应当思索其他操纵形式(参阅该白皮书中完成数据库镜像部分先容的“多半据库成绩”)
高可用形式中数据库镜像是自监督的。假如主数据库俄然不成用,大概主服务器停机,那末见证服务器和镜像服务器将构成quorum,然后镜像的SQLServer将举行主动妨碍转移。此时,竞相服务器实例将其脚色转换为新主服务器并恢单数据库。因为镜像数据库已从头实行了主数据库的事件日记而且其事件日记也与主数据库同步,因而镜像服务器能够疾速供应数据库服务。
别的,SQLServer2005能够在数据库恢复前就向用户供应数据库服务。SQLServer数据库恢复包含三个阶段:剖析阶段、redo阶段、和最初的undo阶段。在SQLServer2005中,只需redo阶段完成,新恢复的数据库就能够让用户会见。因而假如数据库镜像妨碍转移产生,新恢复的主数据库只需完成了redo阶段就能够向用户供应服务了。由于镜像数据库自始至终都在从头实行事件日记纪录,因而一切镜像服务器只须完成redo历程就能够了,一般几秒钟就能够完成。
高回护操纵形式
高回护操纵形式中事件平安性设置为FULL,可是镜像会话中没有见证服务器。主服务器必需构成quorum,但是没有见证服务器,因而只能和镜像服务器共同在一同。这类形式下因为没有见证服务器来承当平手决胜的脚色,因而只妙手动完成妨碍转移。行主动妨碍转移是不成能的,由于假如主服务器失利,镜像服务器没有见证服务器来构成quorum。
safety设置为FULL,假如主服务器俄然间得到了和镜像服务器的quorum,那末镜像服务器必需使其数据库中断服务。不保举利用高回护形式的数据库镜像设置,除非在高可用形式下必需一时移除见证服务器时,可使用该形式作为一种一时过渡。
高功能操纵形式
在高功能操纵形式下,事件平安性设置为OFF,以异步体例传输日记纪录。主服务器不必守候镜像服务器一切日记纪录已被软化切实其实认信息。镜像服务器尽本人最年夜大概坚持与主服务器数据的分歧,但不克不及包管在任什么时候刻来自立数据库的一切最新事件日记纪录都可以被软化到镜像数据库的事件日记中。
在高功能形式下,见证服务器不承当任何脚色,也不必要quorum。因而高功能形式没法启用主动和手动的妨碍转移。独一同意的妨碍转移体例就是forcedservice,它一样也是一种手工操纵:
ALTERDATABASE<dbname>SETPARTNERFORCE_SERVICE_ALLOW_DATA_LOSS forcedservice妨碍转移招致立即恢复镜像数据库。假如某些主数据库的事件日记纪录还没有被镜像服务器吸收,那末恢复镜像数据库将招致潜伏的数据丧失。高功能形式出格合适于远间隔的数据传输(换句话说,用于远程站点的劫难恢复),大概对那些举动频仍且能够容忍某种水平数据丧失的数据库举行镜像。
数据库快照和数据库镜像
因为镜像数据库处于recovering形态,因而不成会见也不成读。在SQLServer2005企业版和开辟职员版中能够创立数据库快照来读取某个时点的镜像数据库。数据库快照供应了一个只读的数据库视图,开放数据给用户会见。这些数据与创立快照时候的数据库数据相分歧。
对数据库快照的会见好像会见一个其他的数据库。查询数据库快照时,从数据库快照文件中读出那些自快照创立后被修正的数据,从原始数据库中读出未修正的数据。最后的效果就是读取了在创立快照时候数据库事先的数据。(更多信息请参阅SQLServerBooksOnline中"UsingDatabaseSnapshotswithDatabaseMirroring"主题。)
因为数据库快照的确增添了镜像服务器的包袱,因而必要小心它们对数据库镜像功能大概酿成的影响。因为只能镜像到一个数据库,因而假如必要将数据扩大到多个只读的报表服务器上,那末事件复制是更好的选择。(更新信息请浏览前面完成数据库镜像部分的“数据库镜像和复制”)
客户端重定向
在SQLServer2005中,假如利用ADO.NET大概SQLNativeClient毗连设置了镜像的数据库,那末使用程序就能够使用驱动程序的才能在产生数据库镜像妨碍转移时主动重定向数据库毗连。必需在毗连字符串中指定原始主服务器和数据库称号,和可选的妨碍转移同伴服务器称号。
毗连字符串的写法有很多种,以下只给出一个例子,指定serverA作为主服务器,serverB作为镜像服务器,AdventureWorks作为数据库称号:
"DataSource=A;FailoverPartner=B;InitialCatalog=AdventureWorks;
IntegratedSecurity=True;" 假如毗连到原始主服务器失利,那末就利用毗连字符串中的failoverpartner作为备用服务器称号。假如毗连到原始主服务器乐成,那末就不利用毗连字符串中的failoverpartner称号,可是会从主服务器上查询其妨碍转移同伴的称号并将了局寄存在客户端缓存中。
假定客户端乐成毗连到主服务器,然后一个数据库镜像妨碍转移产生(主动地、手动的、forced)。当下一次使用程序实验利用毗连时,ADO.NET大概SQLNativeClient驱动程序将会检测到与旧主服务器的毗连已失利,然后主动从头毗连由failoverpartner称号指定的新主服务器。假如毗连乐成而且新的镜像服务器存在,那末驱动程序重新主服务器处猎取新的妨碍转移同伴称号并将其寄存在客户端缓存中。假如没法毗连到备用服务器,那末驱动程序将瓜代实验与每一个服务器的毗连直道毗连超时。
利用内置在ADO.NET和SQLNativeClient驱动程序中的数据库镜像撑持的最年夜长处就是不必从头编写使用程序,大概在使用程序中编写特别代码来处置数据库镜像的妨碍转移。
假如不利用ADO.NET大概SQLNativeClient主动举行重定向,那末也能够利用其他手艺使使用程序举行妨碍转移。比方,假如客户端毗连到一台假造服务器,可使用NetworkLoadBalancing手动重定向一台服务器到另外一台服务器的毗连。还能够编程完成本人的重定向代码和毗连重试逻辑。
可是,一切这些用于和谐客户端重定向和数据库镜像的手艺都有一些主要限定。数据库镜像只能事情在数据库级别,而不是服务器级别。假如使用程序查询一台服务器上的多个数据库,大概利用完整限制工具称号举行跨数据库查询,那末就必要多加当心了。假如多个数据库位于一台服务器而且都设置了和备用服务器的镜像,就有大概呈现个中一个数据库妨碍转移到备用服务器而其他数据库仍然在原始服务器的情形。假如是那样的话,大概就请求每一个数据库查询都利用一个独自的毗连,如许将没法举行跨数据库查询,由于在镜像服务器上只要一个数据库是主数据库,其他都是镜像数据库。
数据库镜像与SQLSERVER2005版本
下表显现各类版本的SQLSERVER2005撑持的数据库镜像功效。
表2:数据库镜像和SQLSERVER2005版本
数据库
镜像功效
企业版
开辟职员版
尺度版
事情组版
SQL
Express
镜像同伴
√
√
√
见证服务器
√
√
√
√
√
Safety=FULL
√
√
√
Safety=OFF
√
√
妨碍转移后UNDO时代数据库可用性
√
√
√
并行redo
√
√
数据库快照
√
√
多数几个数据库镜像功效请求利用SQLSERVER2005企业版大概开辟职员版:
◆高功能形式下safety设置为OFF(异步数据传输);
◆数据库快照;
◆利用多线程在镜像数据库上使用事件日记(并行REDO)。
SQLExpress和事情组版本能够作为数据库镜像的见证服务器,但不克不及作为同伴服务器。
数据库镜像静态
要深切了解SQLSERVER2005数据库镜像,懂得数据库镜像会话怎样变更将对您年夜有匡助。这一部份内容包含数据库镜像会话中分歧的数据库形态、同步和异步的日记纪录传输机制、和妨碍转移序次。
设置和平安性
一旦断定了主服务器、镜像服务器、和可选的见证服务器,设置数据库镜像次要包含三个步骤。
1.必需备份数据库并利用norecovery在镜像数据库上复原该数据库。
注重:在备份数据库并复原到镜像数据库之前,主数据库必需设置为FULL复原模子。假如必需在事件日记中传输Bulk-logged纪录,那末数据库镜像将力所不及。镜像服务器必需有充足的磁盘空间以同意和主数据库一样的文件增加。假如但愿在镜像服务器中创立数据库快照,那末还必需为快照供应分外的磁盘空间。
假如备份、拷贝、和复原数据库泯灭了相称长的工夫,那末大概必要如今原始数据库长进行一次事件日记备份来把持日记的巨细。可是,假如经由过程日记到日记的备份清算了日记纪录,数据库镜像将没法初始化。因而必需在初始化数据库镜像之前在镜像数据库上按按次恢复那些事件日记纪录备份。
2.介入数据库镜像会话的服务器必需相互信托。关于当地通讯而言,比方一个域内的通讯,信托意味着SQLServer实例上岸账号必需有权限毗连到其他镜像服务器,也包含endpoints。起首在每一个服务器上利用CREATELOGIN命令,然后利用GRANTCONNECTONENDPOINT命令(参阅"inSQLServerBooksOnline中“ExampleofSettingUpDatabaseMirroringUsingWindowsAuthentication”)
非信托域之间的通讯必需利用证书。假如利用CREATECERTIFICATE语句创立自署名的证书,基础上一切数据镜像证书的请求都能够满意。确认在CREATECERTIFICATE语句中将证书标志为ACTIVEFORBEGIN_DIALOG。
3.下一步是创立数据库镜像的endpoints。创立endpoints请求您必需具有SQLServerinstance的体系办理员权限。必需在每台服务器上创立专门用于数据库镜像的endpoints.创立endpoints最复杂的体例就是利用ConfigureDatabaseMirroringSecurity导游,能够在DatabaseProperties对话框中Mirroring页面上单击ConfigureSecurity按钮启动该导游。ConfigureSecurity对话框会在机关和实行CREATEENDPOINT命令之前,提醒您输出准确的盘算机称号和端标语,和可选的上岸帐号。(参阅SQLServerBooksOnline中“Howto:CreateaMirroringEndpoint(Transact-SQL)”)
假如在域中设置数据库镜像,而且一切的SQLServer实例利用不异的服务帐号和暗码,那末就不必要在每一个服务器上创立上岸帐号。相似的,假如在事情组中,而且一切的SQLServer实例利用不异的服务帐号和暗码,也不必要在每一个服务器上创立上岸帐号。设置endpoints时将ConfigureDatabaseMirroringSecurity导游中的上岸帐号保存为空就能够了。
每一个数据库endpoint必需指定服务器上一个独一的端标语。假如利用分歧服务器上的SQLServer实例,那末这些端标语能够是不异的。ConfigureDatabaseMirroringSecurity导游会主动倡议您利用5022作为端标语。假如任何SQLServer实例运转在统一台服务器上,那末每一个实例的端标语必需独一,一切的镜像端标语也必需独一。
假定在高可用镜像会话中有三台服务器。ServerA是主服务器,serverB是镜像服务器,serverW作为见证服务器。关于serverA而言,上面的命令在5022端口创立endpoint:
CREATEENDPOINT[Mirroring]
ASTCP(LISTENER_PORT=5022)
FORDATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=ENABLED); 注重:脚色被指定为PARTNER,如许该服务器能够承当数据库镜像的主服务器大概镜像服务器。在serverB上实行不异的命令。由于serverB是自力物理服务器上的SQLServer实例,因而可使用不异的端标语。然后关于serverW,利用
CREATEENDPOINT[Mirroring]
ASTCP(LISTENER_PORT=5022)
FORDATABASE_MIRRORING(ROLE=WITNESS,ENCRYPTION=ENABLED); 注重:关于serverW,脚色被指定为WITNESS。
默许不启动endpoint。接上去在每一个服务器上利用上面的命令来启动endpoint:
ALTERENDPOINT[Mirroring]STATE=STARTED;</p> 能够在CREATEENDPOINT命令中拔出可选的STATE选项。在每台服务器上重复实行该选项。 利用CREATEENDPOINT创立endpoint时,能够经由过程协定特定的参数依据IP地点来限定对endpoint的会见。分离RESTRICT_IPwithALL选项和EXCEPT_IP加上那些同意会见的特别IP地点能够对一组IP地点作限定。(参阅SQLServerBooksOnline中的See“CREATEENDPOINT”)。
查询每一个服务器的sys.database_mirroring_endpoints目次视图来反省数据库镜像的endpoints:
SELECT*
FROMsys.database_mirroring_endpoints; 4.要启动数据库镜像,接上去指定指定同伴服务器和见证服务器。必需具无数据库办理员权限才能够启动和办理一个给定的数据库镜像会话。在serverA,即盘算作主服务器的呆板上设置主数据库脚色和同伴(镜像)服务器:
--Specifythepartnerfromtheprincipalserver
ALTERDATABASE[AdventureWorks]SETPARTNER=
NTCP://B.corp.mycompany.com:5022; 镜像同伴的称号必需为完整限制盘算机名。决意呆板的完整限制称号大概有些难,不外ConfigureDatabaseMirroringSecurity导游会在创建endpoint时主动找出它们。
从命令行提醒中运转上面的命令也能够找出一台呆板的完整限制称号:
IPCONFIG/ALL
将"HostName"和"PrimaryDNSSuffix"毗连到一同。假如您看到的信息相似于:
HostName............:A
PrimaryDnsSuffix .......:corp.mycompany.com
那末盘算机名就是A.corp.mycompany.com。加上TCP://前缀然后再附加:<端标语>,就是镜像同伴称号。
在镜像服务器上反复不异的命令,可是要指定主服务器称号:
--Specifythepartnerfromthemirrorserver
ALTERDATABASE[AdventureWorks]SETPARTNER=
NTCP://A.corp.mycompany.com:5022; 接上去在主服务器上指定见证服务器:
--Specifythewitnessfromtheprincipalserver
ALTERDATABASE[AdventureWorks]SETWITNESS=
NTCP://W.corp.mycompany.com:5026; 实行完CREATEENDPOINT后见证服务器上就不必要实行其他命令了。
最初,在主服务器上指定会话的safety级别:
--Setthesafetylevelfromtheprincipalserver
ALTERDATABASE[AdventureWorks]SETSAFETYFULL; 此时,镜像将主动启动,然后主服务器和镜像服务器将举行同步。
能够调剂判断镜像同伴是不是妨碍的超时价,利用ALTERDATABASE命令的TIMEOUT参数。比方将TIMEOUT值改成20秒(默许是10),在主服务器上实行:
--Issuefromtheprincipalserver
ALTERDATABASE[AdventureWorks]SETPARTNERTIMEOUT20; 最初,在主服务器上利用ALTERDATABASE和REDO_QUEUE选项能够镜像服务器上redo行列的巨细。上面的查询将镜像服务器的redo行列设置为100兆:
--Issuefromtheprincipalserver
ALTERDATABASE[AdventureWorks]SETPARTNERREDO_QUEUE100MB; 只需指定了镜像同伴,镜像将当即启动。
数据库镜像目次视图
数据库镜像会话包含构成同伴的服务器,大概另有见证服务器之间的联系关系。每台介入镜像的服务器都保留关于镜像会话和以后数据库形态的元数据。能够在主服务器和镜像服务器上经由过程查询sys.database_mirroring目次视图来反省会话形态。利用另外一个视图sys.database_mirroring_witnesses但是前往见证服务器的信息(要想取得两个目次视图中一切列的更完全的形貌,请参阅 SQLServerBooksOnline的“sys.database_mirroring"and"sys.database_mirrroing_witnesses”)。
懂得数据库镜像会话怎样事情和数据库处于何种形态的一种不错的办法就是反省目次视图里的数据。我们从高可用设置入手下手(safety设置为FULL,有一台见证服务器)。上面的查询前往了主服务器大概见证服务器上数据库镜像会话的基础形貌信息。
SELECT
DB_NAME(database_id)ASDatabaseName
,mirroring_role_desc
,mirroring_safety_level_desc
,mirroring_state_desc
,mirroring_safety_sequence
,mirroring_role_sequence
,mirroring_partner_instance
,mirroring_witness_name
,mirroring_witness_state_desc
,mirroring_failover_lsn
FROMsys.database_mirroring
WHEREmirroring_guidISNOTNULL; 在见证服务器上运转上面相似的查询,能够前往见证服务器的相干形貌信息。
SELECT
Database_name
,safety_level_desc
,safety_sequence_number
,role_sequence_number
,is_suspended
,is_suspended_sequence_number
,principal_server_name
,mirror_server_name
FROMsys.database_mirroring_witnesses; 如今来对照在一个典范的数据库镜像会话中两个查询的输入了局。假定已设置了serverA到serverB的数据库镜像,利用safety为FULL。(设置以下设置的示例代码,请参阅前面的完成数据库镜像“设置和平安性”)见证服务器是serverW,对AdventureWorks数据库做镜像。表3显现了两个查询的输入了局:
表3:高可用镜像会话,两个同伴服务器sys.database_mirroring输入了局
镜像同伴的
元数据列
主服务器值:
ServerA
镜像服务器值:
ServerB
db_name(database_id)
AdventureWorks
AdventureWorks
mirroring_role_desc
PRINCIPAL
MIRROR
mirroring_safety_level_desc
FULL
FULL
mirroring_state_desc
SYNCHRONIZED
SYNCHRONIZED
mirroring_safety_sequence
1
1
mirroring_role_sequence
1
1
mirroring_partner_instance
TCP://B.corp.mycompany.com:5022
TCP://A..corp.mycompany.com:5022
mirroring_witness_name
TCP://W.corp.mycompany.com:5022
TCP://W.corp.mycompany.com:5022
mirroring_witness_state_desc
CONNECTED
CONNECTED
mirroring_failover_lsn
95000000007300001
95000000007300001
<p> 注重数据库镜像会话中的每一个同伴保留的一切元数据从另外一个同伴的角度来看是完整不异的。每一个同伴保留其数据库称号、全部会话的safety设置、数据库的镜像形态、和两个序列计数器。 ◆mirroring_safety_sequence计数器保留在两个同伴上,只需safety设置改动时将增添该计数器的值。
◆mirroring_role_sequence计数器保留在两个同伴和见证服务器上,只需产生妨碍转移就增添该计数器的值。
同伴数据库的形态和见证服务器的形态都保留在每一个同伴服务器上:
◆mirroring_state_desc显现了会话中同伴数据库的形态。
◆mirroring_witness_state_desc显现了会话中见证服务器的形态。
最初,每一个同伴都包括一个mirroring_failover_lsn。LSN是一个日记序列号,用于独一标识每条事件日记纪录。镜像同伴将前次软化的最初一组日记纪录的最高LSN+1保留起来。在上表中,因为主数据库中只要为数未几的举动,因而镜像转移妨碍的lsn和主服务器和见证服务器的lsn不异。当传输大批数据时,大概就会发明主服务器的lsn值年夜于镜像服务器的值,由于镜像服务器的运转有些滞后。
如今对照一下在见证服务器上找到的元数据。下表显现了来自见证服务器元数据的一些可对照信息:
表4:见证服务器上sys.database_mirroring_witnesses的输入,联系关系了同伴的元数据
见证服务器的元数据列
见证服务器值
响应的镜像同伴元数据列
database_name
AdventureWorks
db_name(database_id)
safety_level_desc
FULL
mirroring_safety_level_desc
safety_sequence_number
1
mirroring_safety_sequence
role_sequence_number
1
mirroring_role_sequence
is_suspended
0
is_suspended_sequence_number
1
principal_server_name
TCP://A..corp.mycompany.com:5022
mirror_server_name
TCP://B.corp.mycompany.com:5022
注重见证服务器的元数据包括了safety的形貌、safety的序列号、和脚色序列号。见证服务器还保留了会话是不是被挂起的信息,和主服务器和镜像服务器的称号。注重见证服务器的目次视图并没有呈报镜像妨碍转移的lsn,并且也不保留数据库形态。
数据库镜像所需的全体元数据(出格是妨碍转移lsn和同伴服务器称号)都保留在镜像同伴上。见证服务器只保留在高可用形式下作为见证者必需保留的那些数据,出格是用于跟踪会话中脚色转换数量的脚色序列号。该计数器用于匡助判断什么时候一台主服务器能够做脚色转换。相干常识会鄙人一部分先容的场景中举行论述。
数据库镜像形态和形态转换
在数据库镜像会话过程当中,每台同伴服务器都对数据库形态作纪录和保留,能够经由过程sys.database_mirroring目次视图来检察。mirroring_state列前往形态号,mirroring_state_desc列前往形态的形貌性称号。(要想猎取关于数据库形态号和形貌性称号的完全列表,请看SQLServerBooksOnline中的“sys.database_mirroring”)。一样的目次视图还用于呈报见证服务器的形态信息。
除为每一个数据库呈报形态信息之外,另有三个主要术语用来对数据库镜像中的服务器和数据库举行形貌。
1.主服务器上的数据是exposed,当它举行事件处置可是没有日记数据被发送到镜像服务器。
2.不克不及供应数据库服务–当主服务器不同意任何用户毗连到数据库,不同意任何事件处置。
3.服务器被伶仃–当它没法接洽数据库镜像会话中任何其他服务器,同时他人也接洽不上它。
当主数据库是exposed,它能够吸收用户毗连和举行事件处置,可是没有日记纪录被发送到镜像数据库。因而假如主数据库失利了,那末镜像数据库不包括任何自立数据库进进exposed形态后主服务器上产生的事件。一样的,也不成以清算主数据库的事件日记,这招致日记文件的无穷增加。
当safety设置为FULL时,假如主服务器没法和其他服务器构成quorum,它将中断供应数据库服务。主服务器将不同意主数据库上的用户毗连和事件,并断开一切以后的用户。只需主服务器能再次构成quorum,就立即从头供应数据库服务。
一台服务器大概运转一般可是它和数据库镜下会话中的其他服务器之间的通讯连路中止了。假如那样的话,我们称服务器被伶仃了。当safety为FULL时,假如主服务器被伶仃,那末它将没法供应数据库服务,由于会话中没有其他服务器可与之配合构成quorum。
怀疑这些功能在MySQL5.0中的成熟性。充其量它们在MySQL中被支持的时间也就一年左右,而在MySQL学习教程其他关系型数据库中则已经存在了近10年的时间。 |
|