1 理解日志传送。
(1)对同一个服务器上不同的实例或者不同的服务器上的数据库进行同步。日志传送配置不会自动从主服务器故障转移到辅助服务器,当主数据库变为不可用,可手动使任意一个辅助服务器联机。
(2)SQL Server使用SQL Server 代理在指定的时间进行自动传送日志。该过程分为三个步骤:对主数据库进行日志备份,将备份日志复制到各辅助数据库服务器,在辅助数据库服务器上对辅助数据库还原。该过程的执行记录在msdb数据库中。
(3)推荐配置
Term |
Definition |
主数据库 |
主数据库是用来向其他服务器分发的原始服务器,通过应用程序更新主数据库的数据。主数据库必须使用完整备份或者大容量备份模式 |
辅助数据库 |
辅助数据库是主数据库的备份副本。辅助数据库通过日志还原来和主数据库进行同步。 |
主服务器 |
主数据库所在的服务器 |
辅助服务器 |
辅助数据库所在的服务器,辅助服务器可以有多个 |
监视服务器 |
跟踪日志传送的所有细节和有关任何执行过程失败的警报信息 |
备份作业 |
对主数据库进行备份操作,并将历史记录信息记录到本地服务器和监视服务器上,并删除旧的备份文件和历史记录信息。还可以设置压缩备份。 |
复制作业 |
在日志传送配置中,将针对每个辅助服务器实例创建复制作业。此作业将备份文件从主服务器复制到辅助服务器,并在辅助服务器和监视服务器中记录历史信息。 |
还原作业 |
在辅助服务器上为每个日志传送配置创建一个还原作业。此作业将复制的备份文件还原到辅助数据库。在本地服务器和监视服务器上记录历史信息,并删除旧文件和旧历史记录。 |
警报作业 |
如果使用了监视服务器,将会在监视服务器上创建警报作业。此警报作业供使用此监视服务器的(主服务器上的)主数据库和(辅助服务器上的)辅数据库共享使用。 |
2 理解日志传送的要求
(1)至少两个SQL Server服务器,或者一个服务器两个数据库实例。如果需要设置监视服务器,你则至少三个SQL Server服务器,或者一个服务器三个数据库实例。
(2)SQL Server版本的要求: Expresses之外的所有版本
(3)服务器必须运行SQL Server代理服务,且该服务具有使用网络的权限
(4)主数据库必须为完整备份或者大容量日志备份
(5)必须有一个共享文件夹用来存放复制的备份日志。主数据库的SQL Server代理服务用户对该文件夹有读写权限,辅助数据库的SQL Server代理服务用户对该文件夹有读权限
(6)配置传送日志的用户必须属于SQL Server的sysadmin组(主数据库和辅助数据库)
3 配置日志传送
搭建环境:1个DC,3个SQL Server,1个Workstation。一共5台虚拟机,都是windows 2003 standard edition. 数据库是SQL Server 2005 Standard Edition, Worksation仅仅安装客户端。
服务器 |
说明 |
Server2003.sample.com |
DC |
SQL10.sample.com |
主服务器。 |
SQL20.sample.com |
辅服务器。添加一个文件c:\ShipLog,在该文件夹下建立两个文件夹:datafiles和copyfiles, datafiles用户放辅助数据库的数据文件和日志文件。Copyfiles放置从client10复制过来的主数据库的日志文件。 |
SQL30.sample.com |
监视服务器。 |
Client10.sample.com |
工作站,并存放主数据库的备份文件\\Client10\ShiplogFile,设为共享,添加network帐户读写权限 |
配置主服务器和主数据库
(1)登录到client10,打开SSMS,连接到SQL10,选中你要操作的数据库,确认其恢复模式为full,然后进行一次全备份,备份文件至\\Client10\ShiplogFile\DB.BAK
(2)选择数据库,属性,日志传输选项,选中确认此服务器为日志传送的主服务器。
(3)选择备份选项,在网络路径这里输入\\Client10\ShiplogFile。其他选项可以保持默认。包括日程计划的详细信息
配置辅助服务器和辅助数据库
(1)继续上面的步骤,在辅助数据库下面,选择添加按钮
(2)连接到SQL20,然后分配设置初始辅助数据库,复制日志文件和备份日志文件
(3)初始化辅助数据库,因为我们已经进行过一次全备份,在这里,我们选择第二项,从一个主文件的备份文件创建辅助数据库。在备份文件处输入你刚才备份的文件\\Client10\ShiplogFile\DB.BAK, 在恢复选项处设置辅助数据库文件的路径c:\ShipLog\datafiles
(4)设置复制日志文件的路径c:\ShipLog\logfiles
(5)设置还原日志。按照默认就可以。只不过两个模式对应的结果,你看到的辅助数据库的图标会不一致。具体啥区别,偶还是说不上来。
配置监视服务器
(1)选择使用监视服务器
(2)点击setting进行设置
(3)在监视服务器设置页,连接到SQL30。
(4)其他的默认,然后点击确定
测试
(1)在数据库插入几条记录,等到传送的日志完成后
(2)在辅助数据库查看是否和主数据库同步完成。
因为这里面有一个时间差。复制任务的时间应该晚于备份后的时间,还原任务的时间晚于复制任务的时间。这样你才可以在15+第一个时间差+第二个时间差里完成一次同步
无恢复(no recovery)模式
(1)数据库还原的默认行为:读取事务日志备份,将日志中所有事务应用到数据上,并回滚所有未完成的事务。
(2)在日志传送中,使用无恢复模式为默认的还原模式。
(3)无恢复模式不回滚未完成的事务。未完成的食物既不回滚也不前滚,但是保存这些未完成的事务。这样的结果导致辅助数据库处于不可用状态。
备用(stand by)模式
(1)辅助数据库对应用程序可用,但是为只读模式。
(2)备用模式下,在恢复数据库的时候,读取事务日志备份,将日志中的所有事务应用到数据库上,回滚未完成的事务。
无恢复模式和备用模式的区别
(1)备用模式保存所有的为完成事务在一个单独的未执行文件中(Transaction Undo File),还原过程使用这个文件来保持事务的一致性。当下一个还原发生的时候,还原所有已经提交的事务。
理解监视服务器角色
(1)SQL Server在本地服务器上保存日志传送的状态()和历史()信息。
msdb.dbo.sysjobactivity |
当前job |
msdb.dbo.sysjobhistory |
历史job |
Log_shipping_monitor_error_detail |
跟踪所有的错误信息 |
Log_shipping_monitor_history_detial |
传送日志的历史信息 |
(2)根据传送的过程,你会发现,所有的SQL Server都是保留在本地的服务器上。备份任务的信息保存在主服务器,复制和还原任务的信息保留在辅助服务器上
(3)正因为没有一个统一的存储,所以给DBA的工作带来不便,尤其是当整个传送过程中,某一个任务失败的时候。因为添加监视服务器,用以保存整个日志传送的信息。
(4)此时,这些信息不仅在本地保存,还会在监视服务上保存