sql server数据库高可用日志传送的方法

所属分类: 数据库 / MsSql 阅读数: 1117
收藏 0 赞 0 分享

一. 日志传送概述

SQL Server使用日志传送,可以自动将主服务器的事务日志备份发送到一个或多个辅助数据库上。事务日志备份分别应用于每个辅助数据库。 可选的第三个服务器实例(称为“监视服务器”)记录备份和还原操作的历史记录及状态,还可以在无法按计划执行这些操作时引发警报。

可选的监视服务器,记录备份和还原操作的历史记录及状态。

下面话不多说了,来一起看看详细的介绍吧。

优点

  • 提供灾难恢复解决方案
  • 支持对辅助数据库的受限的只读访问权限
  • 允许用户定义日志发送的延迟时间(如果主数据库上的数据被意外更改,则较长的延迟会很有用)

术语和定义

  备份作业

    主服务器的代理作业,它执行备份操作,将事务日志记录到本地服务器和监视服务器,删除旧的记录。

  复制作业

    主服务器的代理作业,它将备份文件从主服务器复制到辅助服务器上,在辅助服务器和监视服务器上记录。

  还原作业

    辅助服务器的代理作业,备份文件还原到辅助数据库,在本地服务器和监视服务器上记录,删除旧文件。

针对多个辅助服务器时,要重复执行复制作业和还原作业。

二. 准备工作

同一台服务数据库二个实例 (可以是局域网内的多个服务器)

主数据库sqlserver 2012 r2 MSSQLSERVERTWO

辅助数据库sqlserver 2012 r2 MSSQLSERVER

演示库 LogShipping_Test, 主和辅相同的库,相同的表结构和数据。 相同的sql 登录名, 密码

三. 配置日志传送

--步骤1:设置主服务器恢复模式为完全备份
ALTER DATABASE LogShipping_Test SET RECOVERY FULL
--步骤2:主服务数据库做一次完全备份
BACKUP DATABASE LogShipping_Test TO DISK='D:\LogShipping\LogShipping_Test.bak' WITH NOFORMAT,INIT

-- 步骤3:

在主服务器上建立共享目录C:\LogShipping\primary 具有作业访问权限

在辅助服务器上建立共享目录C:\LogShipping\secondary 具有作业访问权限

---步骤4:

主服务器LogShipping_Test库-->属性-->任务-->传送事务日志将主服务器和辅助数据库配置成功后,设置复制和还原每隔两分钟做一次传送如下图

日志传送配置成功后:辅助数据库标识为(备用/只读)如下图

主数据库SQL Server代理作业如下图:

备份作业(LSBackup_LogShipping_Test)

警告作业(LSAlert_{计算机名})

辅助数据库SQL Server代理作业如下图

复制作业(LSCopy_{计算机名}_LogShipping_Test)

还原作业(LSRestore_{计算机名}_LogShipping_Test)

警告作业(LSAlert_{计算机名}\MSSQLSERVERTWO)

主服务器隔2分钟备份的文件共享目录如下图

辅助服务器隔2分钟复制的文件共享目录如下图

最后:查看日志传送是否正确无误

利用可视化操作在SQL Server代理作业中查看日志传送是否正常

通过SQL查询,看日志传送是否运行正常

--(主数据库查询)
  exec master..sp_help_log_shipping_monitor 
  exec master..sp_help_log_shipping_primary_database 'LogShipping_Test'
 --(辅助数据库查询)
  exec master..sp_help_log_shipping_secondary_database 'LogShipping_Test'

四. 主从数据库手动切换配置

    步骤1:在主数据库,使之处于正在还原

 use master
  Backup log [LogShipping_Test] to disk = 'c:\LogShipping\LogShipping_Test1.bak' with NORECOVERY 

--手动运行辅助数据库上的复制和还原作业(快速复制还原到从表)

--手动将主数据库上的备份和警告作业禁用掉(停止备份)

步骤2:在辅助数据库上,使用步骤的备件文件还原

use master
Restore log [LogShipping_Test] from disk ='c:\LogShipping\LogShipping_Test1.bak' with RECOVERY 

将以前备份和复制所在文件夹的数据删除掉(D:\LogShipping\primary,D:\LogShipping\secondary )

重新配置日志传送,在辅助数据库上(LogShipping_Test库-->属性-->任务-->传送事务日志将主服务器和辅助数据库配置成功后)使辅助数据库之变成主数据库

将原来主数据库的日志传送删除(LogShipping_Test库-->属性-->任务-->传送事务日志,将勾选去掉确定).

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

sqlserver中将varchar类型转换为int型再进行排序的方法

sql中把varchar类型转换为int型然后进行排序,如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话
收藏 0 赞 0 分享

在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名

在项目开发中如果有时修改了一个存储过程,但是如何能够快速的查找到使用了这个存储过程的其它存储过程呢
收藏 0 赞 0 分享

sqlserver bcp(数据导入导出工具)一般用法与命令详解

bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据
收藏 0 赞 0 分享

重命名SQLServer数据库的方法

本文讲解重命名SQLServer 数据库,包括物理文件名、逻辑文件名的改名
收藏 0 赞 0 分享

SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)

昨天在项目中遇到了一个非常简单的问题,需要把SQL Server数据库中保存的一段路径地址取出其文件名,但SQL Server又没有现成的方法,最后在网上找到这样的一个方法,原理是先将字符串反转,取出第一个/的位置,从头进行截取后再次反转
收藏 0 赞 0 分享

使用SqlBulkCopy时应注意Sqlserver表中使用缺省值的列

今天,想将以前做的一个程序增加点功能,原本就使用SqlBulkCopy批量、定时的从目录中的txt文件导入数据到Sqlserver中。以前一直都使用正常,但是不知怎的就老是出现一个错误
收藏 0 赞 0 分享

Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法

讲解一下sql 2005日志怎么清理。一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
收藏 0 赞 0 分享

SQL Server 2000 清理日志精品图文教程

SQL Server 2000 数据库日志太大!如何清理SQL Server 2000的日志呢
收藏 0 赞 0 分享

SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)

如何在SQL中对行进行动态编号,加行号这个问题,在数据库查询中,是经典的问题
收藏 0 赞 0 分享

sql分类汇总及Select的自增长脚本

对错误信息进行分类汇总,并实现错误数据的自增长编号
收藏 0 赞 0 分享
查看更多