|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用一个库#bak_database存放这些历史数据。server
SQLServer2000之日记传送功效-形貌(1)
脚色变动、脚色交换、和监控服务器地点地位
当线上数据库停摆时(多是企图内保护事情,或是预期外的情况),假如另有备援服务器上的数据库可供存取,您大概会对照放心一点。一个计划优秀的日记传送体系(将数据库买卖日记文件从次要服务器传送到备援服务器)便可赐与您如许的自傲心。内建于SQLServe2000企业板与开辟版的EnterpriseManager工具程序即撑持日记传送功效。
脚色变动
将日记从次要服务器传送到主要服务器以后,您可在需要时以主要服务器置换失落次要服务器。假如次要服务器产生成绩,或是企图性停摆(比方晋级硬件或安装修改程序),线上数据库就必需中断服务一段时代。此时您能够变动主要服务器上数据库之脚色,让它代替次要服务器以后进而成为线上数据库。SQLServer2000线上手册(BooksOnline,BOL)将此项操纵称为日记传送脚色变动(logshippingrolechange)。在日记传送历程里,主要服务器需设定在没法回复(nonrecovered)形态,因而买卖日记才干从次要服务器回存到主要服务器(一但您将数据库回复,就不克不及再回存买卖纪录)。变动脚色时,您需将主要服务器的数据库予以回复,并标示其为新次要服务器数据库。您也能够将旧次要服务器数据库设定为新主要服务器数据库。假如旧次要服务器数据库并未破坏,那末就能够在新次要服务器与旧次要服务器(已酿成新主要服务器)之间从头建置日记传送功效。这类切换体例我们称为脚色交换(rolereversal)。
这些操纵指引可订正为六个基础步骤,分离为:1、转移与汇出登进帐号,2、升级(demote)次要服务器,3、晋级(promote)主要服务器,4、关照监控服务器脚色已变动,5、在主要服务器上剖析登进帐号,6、和保持数据库存取与权限。
步骤1:转移与汇出登进帐号起首,BOL倡议您创建一个SQLServer2000DTS封装(package),用来将次要服务器的登进帐号转移到主要服务器,且实行各服务器间登进帐号SID之剖析举措。转移登进帐号所用的DTSTransferLoginsTask只能在SQLServer2000DTSDesigner内利用。您可在次要服务器上创建与贮存DTS封装,然后呼唤dtsrun.exe设定该封装的实行体例―透过次要服务器SQLServerAgent的事情(job)。该封装实行时会将登进帐号从某服务器传送到另外一服务器,可是它其实不会剖析其登进帐号的SID(在稍后步骤中会申明为什么需剖析登进帐号)。但是,为了在稍后能顺遂剖析登进帐号,您必需先创建一个档案,其内包括次要服务器syslogins材料表的汇出材料。
汇出登进帐号到主要服务器时,BOL倡议您创建一个两阶段的SQLServerAgent事情:利用bcp汇出,和复制登进帐号。在第一个步骤,您将利用原始形式的bcp将登进帐号汇出至某个档案。而在第二个步骤里,您必需将登进帐号复制到主要服务器的某个档案,以便稍落后行脚色变动时可用来剖析登进帐号。在步骤5您将利用sp_resolve_logins预存程序往剖析主要服务器上登进帐号的SID。该事情创建完成后,就能够按期地实行(比方每晚实行一次)。云云一来主要服务器大将随时保存最新的登进帐号汇出文件,以便举行日记传送脚色变动。
步骤2:升级次要服务器为了让次要服务器不再是日记传送体系的材料来历,您必需将它”升级”。您能够升级次要服务器的来历数据库,让它酿成潜伏的主要服务器。然后在次要服务器上实行sp_change_primary_role预存程序,目标是移除原有日记传送功效。程序代码列表1显现该预存程序怎样把Pubscopy日记传送数据库从读/写形式变动成只读备援形式,筹办随时承受买卖日记之备份材料。该预存程序经过数个步骤后会在日记传送企图内删除次要服务器数据库。传进的参数将告之预存程序需实行以下事情:备份比来一次的买卖日记、停止数据库内一切利用者联机、将数据库设定在备援形态与多利用者存取层级。预存程序的回传代码将标示BACKUPLOG叙说句是不是乐成实行。
程序代码列表1:将日记传送数据库从读/写形式升级成只读形式之预存程序。
USEmaster
GO
EXECmsdb.dbo.sp_change_primary_role
@db_name=Pubscopy,
@backup_log=1,
@terminate=1,
@final_state=3,
@access_level=1
步骤3:晋级主要服务器下一个步骤是把今朝主要服务器晋级成回复形态(recoveredstate),如许它才干代替本来的线上数据库,且酿成潜伏日记传送次要服务器数据库。在主要服务器上,假如您已确认无任何利用者持续存取数据库,就能够实行sp_change_secondary_role预存程序,如程序代码列表2所示:
程序代码列表2:将主要服务器数据库晋级成次要服务器数据库之预存程序。
USEmaster
GO
EXECmsdb.dbo.sp_change_secondary_role
@db_name=Pubscopy,
@do_load=1,
@force_load=1,
@final_state=1,
@access_level=1,
@terminate=1,
@keep_replication=0,
@stopat=null
这些参数将促使该预存程序实验将一切残剩的买卖日记文件从本来次要服务器复制到主要服务器,并将这些日记文件加载主要服务器数据库。参数@do_load=1会举行比来一次备份,并加载一切买卖日记文件;参数@force_load=1是在实行sqlmaint.exe时指定还没有文件化的Forceload选项;参数@final_state=1将新次要服务器数据库设定为回复形式;参数@access_level将存取体例设回先前多利用者形态。参数@terminate=1则促使该预存程序中止一切利用者的数据库存取举措―体例是实行ALTERDATABASE共同IMMEDIATE选项。但是,假如实行此预存程序时,您本人的EnterpriseManager与数据库间联机处于开启形态,ALTERDATABASE举措将会失利。以是您必需以手动体例确认是不是已将一切数据库联机予以中止。最初,假如该数据库被设定为数据库复写(replication)之出书者数据库(publisher),那末@keep_replication=0参数将仍旧保持服务器上一切复写设定。
假设您曾选择让主要服务器成为将来潜伏的次要服务器,则数据库保护企图会在主要服务器上建置一个买卖日记备份事情(SQLServerAgent的transaction-logbackupjob)。该事情激活以后,买卖日记备份文件就会入手下手呈现在新次要服务器。您必要这些档案往从头设定将日记传送回新主要服务器。
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。 |
|