(一)日志传送架构

(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. PHP程序员技术职业生涯,你是如何规划的?

    职业规划是这样的 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是 ...

  2. Error: Cannot find module 'webpack/bin/config-yargs' 报错原因, webpack@4.X踩的坑~

    1 .使用webpack@4.32.2时, 当我通过package.json的script去执行webpack-dev-server时, 报以下错误:  Error: Cannot find modu ...

  3. HDU 1568

    - - 我自己开始以为是数值范围是1到100000000.... 搞了半天才发现是斐波那契数列的项数1到100000000 坑爹.!! 不会,只能看网上大牛的题解. 具体解释请看:http://www ...

  4. 【a403】遍历树问题

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历, ...

  5. H3C 用802.1Q和子接口实现VLAN间路由

  6. win10 uwp 商业游戏 1.1.5

    本文是在win10 uwp 商业游戏 基础上继续开发,添加一些无聊的游戏 因为在发布几个月,下载量很少,小伙伴说游戏就玩不到几分钟就不想玩,于是我就想加入其他游戏 下面我来告诉大家如何在游戏中添加多个 ...

  7. C# 通过 probing 指定 dll 寻找文件夹

    在很大的项目开发,会发现项目引用的 dll 会很多,我想要按照不同的功能,将不同的 dll 放在不同的文件夹 简单的方法是通过修改 App.config 文件指定文件夹,如将文件移动到 abc\12 ...

  8. Linux内核接口特定的类型

    内核中一些通常使用的数据类型有它们自己的 typedef 语句, 因此阻止了任何移植性问 题. 例如, 一个进程标识符 ( pid ) 常常是 pid_t 而不是 int. 使用 pid_t 屏蔽了任 ...

  9. 91.requests&BeautifulSoup

    转载:https://www.cnblogs.com/wupeiqi/articles/6283017.html equests Python标准库中提供了:urllib.urllib2.httpli ...

  10. django框架(1)

    一什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的 ...