(一)日志传送架构

(1.1)相关服务器

主服务器   :用于生产的服务器,上面运行这生产SQL Server数据库;

辅助服务器:用于存放主服务器上数据库的一个“镜像”数据库;

监控服务器:用来监控日志传送状态的一个服务器,可选;

(1.2)文件夹

与日志传送有关的文件夹一共有2个:

共享文件夹:该文件夹用于存放主数据库上备份出来的日志,一般位于主服务器上;

目标文件夹:该文件夹用来接收从共享文件夹拷贝过来的日志,位于辅助服务器上;

(1.3)作业

与日志传送相关的作业一共有3个:

主服务器的备份作业:在主服务器上备份事物日志,把日志存放到共享文件夹中;

辅助服务器上的复制作业:把共享文件夹中的日志复制到目标文件夹中;

辅助服务器上的还原作业:将目标文件夹中的日志还原到辅助数据库上;

通过上图,可以总结出日志传送的流程:

1.主库的备份作业定期执行日志备份操作,将日志保存到共享文件夹;

2.备库的复制作业定期从共享文件夹将新的日志文件拷贝到备库的目标文件夹;

3.备库的还原作业定期使用目标文件夹中的日志还原备库;

(二)基础环境

 

主库

备库

操作系统

Windows Server 2012 R2 64bit

Windows Server 2012 R2 64bit

数据库版本

cn_sql_server_2012_enterprise_edition_x86_x64

cn_sql_server_2012_enterprise_edition_x86_x64

服务器名称(IP)

WIN-PRIMARY(192.168.10.111)

WIN-STANDBY(192.168.10.112)

同步数据库信息

lijiamandb

lijiamandb

(三)搭建过程中遇到的问题

(3.1)报错信息

由于在写文档之前多次搭建均没有成功,报错如下:

标题: Microsoft SQL Server Management Studio

------------------------------

SQL Server Management Studio 无法还原数据库“masterdb”

------------------------------

其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (SqlManagerUI)

------------------------------

无法打开备份设备 '\\WIN-PRIMARY\logshipping_master\masterdb.bak'。出现操作系统错误 5(拒绝访问。)。

RESTORE FILELIST 正在异常终止。 (Microsoft SQL Server,错误: 3201)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=3201&LinkId=20476

(3.2)解决方案

该报错提示备库无法打开主库上的共享文件夹\\WIN-PRIMARY\logshipping_master\masterdb.bak,但是我手动从备库上去访问主库的共享文件夹是可以正常访问的,不知道是什么原因,找了很久也没有找到方案。

最终我是搭建了域环境,主库为域服务器,备库加入到主库的域中,然后创建了域账号test\loguser,使用test\loguser账号启动主库和备库的代理,最终才同步成功。因此本文的日志传送是在域环境中搭建成功的。

(四)域环境搭建

(4.1)主库搭建域服务器

STEP1:打开“服务器管理器”-->“添加角色和功能”

STEP2:开始之前。默认,下一步

STEP3:安装类型。选择“给予角色或功能的安装”,下一步

STEP4:服务器选择。默认,下一步

STEP5:服务器角色。勾选“Active Directory域服务”

STEP6:功能。默认,下一步

STEP7:AD DS。默认,下一步

STEP8:确认。点击“安装”

STEP9:安装完成,在服务器管理器中进行配置

STEP10:部署配置,指定根域名

STEP11:域控制选项,输入DSRM密码,随便填写

STEP11:DNS选项,有告警信息,忽略,直接下一步

STEP12:其它选项。默认,下一步

STEP13:路径。默认,下一步

STEP14:查看选项。默认,下一步

STEP15:先决条件检查。安装

STEP16:安装完成后,服务器会自动重启,重启后,我们就可以看到这台服务器已经加入了域

(4.2)备库服务器加入到域中

STEP1:修改备库服务器的DNS信息,将AD服务器的IP填入里面

STEP2:点击“这台电脑”-->“属性”

STEP3:点击“更改设置”

STEP4:点击“更改”

STEP5:添加域配置

STEP6:添加成功,会有提示

STEP7:重启计算机,域配置才会生效

(4.3)主库域服务器上创建域账号(在域服务器上操作)

STEP1:点击“服务器管理器”-->“工具”-->“Active Directory用户和计算机”

STEP2:选择“Users”-->右键“新建”-->“用户”

STEP3:创建域账户

输入密码,这里建议把“用户下次登录时须修改密码”去除勾选

STEP4:完成创建

(4.4)关闭防火墙(主库和备库)

域环境搭建完成后,会多出一个域网络的防火墙,全部关闭

(五)日志传送环境搭建

(5.1)主库创建共享文件夹

主库创建共享文件夹,用于存放日志。

STEP1:创建文件夹logshipping,我直接放在C盘,如果是生产环境,建议不要放在C盘

STEP2:点击文件夹“logshipping”,右键“属性”-->“共享”

STEP3:添加共享用户“loguser”,权限设为“读取/写入”,经过测试,还需要把everyone用户也给加上

STEP4:从备库服务器访问共享,确认无问题

(5.2)备库创建日志目标文件夹

备库创建logrepl文件夹,并授权给test\loguser用户

(5.3)修改SQL Server代理的登录身份为test\loguser(主库备库均修改)

打开“SQL Server配置管理器”,点击“SQL Server服务”-->“SQL Server代理”,双击弹出“SQL Server代理属性”,修改用户为test\loguser,最后确定。

(5.4)主库配置日志传送

(1)主库基础环境

为了后续验证数据是否同步,先在待同步的数据库“lijiamandb”中建2个表,test01和test02,数据如下

(2)日志传送配置

STEP1:点击“lijiamandb”-->“任务”-->“传送事物日志”

STEP2:勾选“将此数据库启用为日志传送配置中的主数据库”,然后点击备份设置

STEP3:填写备份路径,该路径是之前创建的共享文件夹,在“计划”中修改备份时间,改为3分钟1次,代表每隔3分钟主库会将产生的日志存放到共享文件夹。

STEP4:备份配置完成后,开始配置辅助数据库,点击“添加”

STEP5:点击“连接”,输入辅助数据库(备库)的连接信息

STEP6:初始化辅助数据库。因为没有可用的备份,故勾选“是,生成主库的完整备份...”

复制文件。填写备库的目标文件夹,修改复制作业的时间为每3分钟执行一次,代表每隔3分钟,备库会将共享文件夹中的新日志复制到目标服务器的目标文件夹

还原事物日志。数据库状态改为备用模式,还原作业改为每隔3分钟执行一次,代表每隔3分钟,备库会将目标文件夹的日志进行还原操作

  • 无恢复模式:用户不可以只读访问数据库;
  • 备用模式  :备库处于只读状态。但是,备库值执行还原操作时,还原进程需要独占访问数据库,如果用户正在运行SQL语句,那么还原进程将无法还原数据库,还原作业会等到下一个还原间隔时再次尝试还原数据库。如果勾选了“在还原备份时断开数据库中用户的连接”,那么数据库在进行还原操作时,会断开用户的连接,保证还原操作正常进行。

STEP6:最后点击确定即可

STEP7:开始进行备库还原操作

(5.5)备库确认数据是否正常产送过来

经确认,主库的所有数据均以同步到备库

(六)日志传送测试

(6.1)添加新表

结果:主库添加新表,备库自动同步过去。

(6.2)删除表

结果:主库删除表,备库也会自动删除。

(6.3)修改表结构

结果:主库修改表结构,备库自动修改

(6.4)插入、更新、删除数据

结果:主库执行插入、更新、删除操作,备库也会自动同步操作

(6.5)truncate表

结果:主库执行truncate操作,备库也会同步操作

(七)监控日志传送

(7.1)主库查看日志备份作业是否运行正常

打开主库SSMS“对象资源管理器”-->“SQL Server代理”-->”作业”,右键“查看历史记录”,即可看到日志备份作业的运行情况。

(7.2)备库查看日志复制作业和日志还原作业是否运行正常

打开主库SSMS“对象资源管理器”-->“SQL Server代理”-->”作业”,右键“查看历史记录”,即可看到日志复制作业和日志还原作业的运行情况。

(八)总结

优点 无论主库做什么操作,备库均可以同步过来,无需DBA介入
缺点 1.备库数据同步存在延迟,时效性较差
2.备库在做恢复操作时,是不可以查询数据库的,体验较差

SQL Server2012高可用之日志传送测试的更多相关文章

  1. SQL Server2012高可用之事物复制(发布订阅)测试

      (一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既不可写也不可读,即采用的高可用技术为"数据库镜像".存在的问题为 ...

  2. SQL Server高可用——日志传送(4-3)——使用

    原文:SQL Server高可用--日志传送(4-3)--使用 顺接上一篇:SQL Server高可用--日志传送(4-2)--部署 本文为本系列最重要的一篇,讲述如何使用日志传送及一些注意事项.从上 ...

  3. SQL Server高可用——日志传送(4-2)——部署

    原文:SQL Server高可用--日志传送(4-2)--部署 前文再续,书接上一回.本章演示一下日志传送的具体过程 准备工作: 由于时间关系,已经装好了3台虚拟机,且同在一个域里面: SQL01:主 ...

  4. SQL Server高可用——日志传送(4-1)——概论

    原文:SQL Server高可用--日志传送(4-1)--概论 本文作为学习总结,部分内容出自联机丛书及其他书籍 日志传送是什么? SQLServer 2012之前(2012出现了AlwaysOn), ...

  5. 深入解析 SQL Server 高可用镜像实现原理

    作者:郭忆 本文由 网易云 发布. SQL Server 是 windows 平台 .NET 架构下标配数据库解决方案,与 Oracle.MySQL 共同构成了 DB-Engines Ranking ...

  6. 深入解析SQL Server高可用镜像实现原理

    本文来自网易云社区 SQL Server 是windows平台.NET架构下标配数据库解决方案,与Oracle.MySQL共同构成了DB-Engines Ranking的第一阵营,在国内外企业市场中有 ...

  7. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之AlwaysOn可用性组搭建

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

  8. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之建立活动目录域、DNS服务器和Windows故障转移群集(准备工作)

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

  9. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

随机推荐

  1. 【CSS3】使用CSS3制作全屏切换效果

    在线演示: DEMO DEMO中及以下代码并没有写兼容代码,请使用高级浏览器打开,IE版本对CSS3支持并不太友好,IE11打开没有滚屏效果. 兼容代码前缀: -webkit- -moz- -o- - ...

  2. 【转载】.NET中使用Redis

    Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. 最近 ...

  3. git学习六:git提交忽略不必要的文件或文件夹

    创建maven项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如如下截图,实际开发中我们只需提交:src,.gitignore,pom.xml 而自己项目文件一般都保留,但 ...

  4. H3C 单路径网络中环路产生过程(3)

  5. UVa 1374 - Power Calculus——[迭代加深搜索、快速幂]

    解题思路: 这是一道以快速幂计算为原理的题,实际上也属于求最短路径的题目类型.那么我们可以以当前求出的幂的集合为状态,采用IDA*方法即可求解.问题的关键在于如何剪枝效率更高.笔者采用的剪枝方法是: ...

  6. H3C 示例:计算子网内可用地址数

  7. vue-learning:34 - component - 内置组件 - 缓存组件keep-alive

    vue内置缓存组件keep-alive <keep-alive>标签内包裹的组件切换时会缓存组件实例,而不是销毁它们.避免多次加载相应的组件,减少性能消耗.并且当组件在 <keep- ...

  8. dotnet 线程静态字段

    在 dotnet 程序提供了一个好用的特性,可以让字段作为线程的静态字段,也就是在相同线程的所有代码访问的静态字段是相同对象,但不同线程访问的时候是不同的 在 .NET 程序可以使用 ThreadSt ...

  9. 洛谷——P1305 新二叉树(新建二叉树以及遍历)

    题目描述输入一串二叉树,用遍历前序打出. 输入输出格式输入格式: 第一行为二叉树的节点数n.(n \leq 26n≤26) 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输 ...

  10. codeforces 1217E E. Sum Queries? (线段树

    codeforces 1217E E. Sum Queries? (线段树 传送门:https://codeforces.com/contest/1217/problem/E 题意: n个数,m次询问 ...