SqlServer 事务日志传输

时间:2022-12-01 01:21:17

基本概念 

  可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库)。不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使辅助数据库与主数据库基本保持同步。目标服务器充当备份服务器,并可以将查询处理从主服务器重新分配到一个或多个只读的辅助服务器。日志传送可与使用完整或大容量日志恢复模式的数据库一起使用。  

  日志传送由三项操作组成:

  1. 在主服务器实例中备份事务日志。

  2. 将事务日志文件复制到辅助服务器实例。

  3. 在辅助服务器实例中还原日志备份。

日志可传送到多个辅助服务器实例。在这些情况下,将针对每个辅助服务器实例重复执行操作 2 和操作 3。

日志传送配置不会自动从主服务器故障转移到辅助服务器。如果主数据库变为不可用,可手动使任意辅助数据库联机。

您可以为了实现报表目的而使用辅助数据库。

配置过程

  1、首先需要在辅助数据库创建用于备份的共享目录logbackup,主要用于存放从主数据备份来的日志文件,放在辅助数据库服务器方便读取备份日志文件,如下图

  SqlServer 事务日志传输

  2、添加目录信任(这部很重要,因为共享目录以后在主数据服务器虽然可以读写共享目录,但是后来在通过SqlServer传输日志的时候总是因为权限的问题失败)

  首先,是启用SqlServer的xp_cmdshell功能,可以通过命令启用,通过Management Studio执行以下脚本:

 sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go

  但是脚本执行仅本次起作用,下次重启数据库会失效,所以可以通过界面设置来永久启用xp_cmdshell:

  右击"SqlServer数据库"--方面--点击常规--选择外围应用配置器--然后将cmdshell的属性改为True,如下图

  SqlServer 事务日志传输

  SqlServer 事务日志传输

  操作完以上步骤以后,开始通过Management Studio执行目录信任命令:

  

exec master..xp_cmdshell 'net use \\172.16.3.79\logbackup Envisi0n@#1 /user:172.16.3.79\ENADMIN';

     \\172.16.3.79\logbackup--是共享目录

172.16.3.79\ENADMIN--辅助数据库服务器共享目录的用户

     Envisi0n@#1--用户的密码

 

  3、在辅助数据库服务添加防火墙程序和端口例外(SqlServer Studio和端口1433):

  转到 防火墙--点击高级配置--新建规则--分步添加程序和端口的例外,这里很简单就不做说明,程序选择的目录(C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe)。

  4、开始执行日志传输配置:

  首先,打开主数据库的属性界面,选择“事务日志传输”,点击选择启用日志传输功能的复选框。

  SqlServer 事务日志传输

  然后弹出主数据库日志备份相关的配置,备份文件夹的网路路径选择之前创建的共享目录,备份作业可以自行根据实际情况编辑选择。

  SqlServer 事务日志传输

  然后,则是添加辅助数据,辅助数据库可以添加多个,在“初始化辅助数据库”界面,我们选择在主数据库生成完全备份,还原到辅助数据库中(辅助数据不存在,则创建它)。

在还原选项中需要选择文件夹存放数据库文件和日志文件,这些目录都是辅助数据库服务器上的目录。

  SqlServer 事务日志传输

  在“复制文件”界面进行配置复制的一些任务,这里的任务主要是负责将主数据库的日志备份文件复制到辅助数据库服务的共享目录下,如下图

  SqlServer 事务日志传输

  在“还原事务日志”界面配置还原备份日志的相关配置和任务计划,其中还原备份时数据库有2种状态,无恢复模式和备用模式,主要区别是无恢复模式不允许用户连接数据库查询,而备用模式允许用户查询数据(但是在数据库还原期间是不允许查询的)。一般选择备用模式,并且选择“在还原备份时断开数据库中的用户连接”。 

SqlServer 事务日志传输

  使辅助数据库处于备用模式时,有两种配置方式:
  还原事务日志备份时,可以选择使数据库用户断开连接。如果选中此选项,则日志传送还原作业每次尝试将事务日志还原到辅助数据库时,用户都将与数据库断开连接。断开连接将按为还原作业设置的计划发生。
  可以选择不与用户断开连接。在这种情况下,如果用户连接到辅助数据库,则还原作业无法将事务日志备份还原到辅助数据库。事务日志备份将一直累积到没有用户连接到该数据库为止。

  5、最后点击”确定”按钮,会将主数据库备份并且还原到辅助数据库服务器,此步骤可能会执行一段较长时间,只要不报错就OK,最后可以查看辅助数据库服务器多出一个处于“备用/只读”的数据库,如下图:

  SqlServer 事务日志传输

  

  6、注意,因为所有日志的备份、复制和还原都是计划任务,所以在主数据和辅助数据库服务器都要启用SQL Server代理。

 

  

SqlServer 事务日志传输的更多相关文章

  1. SQL Server 事务日志传输

    概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使辅助数据库与主数据库基本保持 ...

  2. sqlserver 事务日志过大 收缩方法解决方案

    sqlserver 事务日志过大,可能会导致备份失败或者数据库出现异常,所以要定期清除sqlserver 事务日志 建议:为了防止日志文件无限扩大,可以对日志文件作一些限制. 清除sqlserver事 ...

  3. (转)解释一下SQLSERVER事务日志记录

    本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 解释一下SQLSERVER事务日志记录 大家知道在完整恢 ...

  4. 解释一下SQLSERVER事务日志记录

    解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...

  5. sql 事务日志传输

    原文:sql 事务日志传输 概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使 ...

  6. sqlserver 事务日志已满解决方案

    sqlserver 事务日志已满解决方案 可参考这篇博客: https://www.cnblogs.com/strayromeo/p/6961758.html 一.删除日志文件:(不建议) 二.手动收 ...

  7. 收缩sqlserver事务日志

    若要允许 DBCC SHRINKFILE 命令收缩文件,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件. 示例,收缩数据库abce的事务日志 USE abce; GO -- Trunc ...

  8. SQLSERVER事务日志已满 the transaction log for database 'xx' is full

    解决办法:清除日志 USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE D ...

  9. sqlserver 事务日志

    预写式日志(Write-Ahead Logging (WAL)) --在数据写入到数据库之前,先写入到日志. 1.”Begin Tran”记录  -> 缓冲区 2. 日志             ...

随机推荐

  1. CSS中背景图片定位方法

    转自:http://www.ruanyifeng.com/blog/2008/05/css_background_image_positioning.html 作者: 阮一峰 日期: 2008年5月 ...

  2. 基于python的接口测试学习笔记一(初出茅庐)

    第一次写博客笔记,讲一下近来学习的接口自动化测试.网上查阅了相关资料,最后决定使用python语言写接口测试,使用的是python的第三方库requests.虽然python本身标准库中的 urlli ...

  3. in_array 判断的一些见解

    我个人见解in_array的判断是== 并不是===  证明如下: $arr=(array_merge(range(1, 9),range('a', 'z'),range('A', 'Z')));$m ...

  4. HTML文字与列表

    文字内容 添加文字 <body> 我是Mingle </body> HTML文字的需要添加在<body> </body>里面. 标题字 标题字就是以几种 ...

  5. SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析 (转载)

    在SQL SERVER的查询语句中使用OR是否会导致不走索引查找(Index Seek)或索引失效(堆表走全表扫描 (Table Scan).聚集索引表走聚集索引扫描(Clustered Index ...

  6. 开源项目PullToRefresh详解(二)——PullToRefreshGridView

    这里介绍的是PullToRefreshGridView的使用方法,和之前的PullToRefreshListView方法如出一辙,因为这个开源项目模块化很棒,所以很容易实现.等于说我们可以按照之前使用 ...

  7. Inno Setup入门(三)——指定压缩方式

    Setup段中的compression指定了采用的压缩方式,较高的压缩率需要较多的时间或者需要更大的内存空间,可用的值如下: zip zip/1到zip/9 bzip bzip/1 到bzip/9 l ...

  8. python-s and s&period;strip&lpar;&rpar;

    s and s.strip()“ 这个表达式的值.Python语法是这么运行的: 如果s is None,那么s会被判断为False.而False不管和什么做and,结果都是False,所以不需要看a ...

  9. maven web 项目 打入 jar 包 , 和编译入 java 文件到 web-inf 下

    <outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory> 可以把 类文件编译到 web-inf 下 ...

  10. 帝国CMS7&period;2新增多图同时上传插件,上传多图效率更高

    原来上传多图文件,需要挨个选择文件,然后再点批量上传,比较麻烦.所以帝国CMS7.2新增了多图上传插件:为采用FLASH方式实现同时选择多个图片一起上传,提高多图上传效率. 帝国CMS多图上传插件特性 ...