• SQL Server2012高可用之日志传送测试


    image

    (一)日志传送架构

    image

    (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)报错信息

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

    wps85

    标题: Microsoft SQL Server Management Studio

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

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

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

    其他信息:

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

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

    无法打开备份设备 '\WIN-PRIMARYlogshipping_mastermasterdb.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-PRIMARYlogshipping_mastermasterdb.bak,但是我手动从备库上去访问主库的共享文件夹是可以正常访问的,不知道是什么原因,找了很久也没有找到方案。

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

     

    (四)域环境搭建

    (4.1)主库搭建域服务器

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

    wps86

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

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

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

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

    wps87

    STEP6:功能。默认,下一步

    STEP7:AD DS。默认,下一步

    STEP8:确认。点击“安装”

    wps88

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

    wps89

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

    wps90

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

    wps91

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

    wps92

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

    wps93

    STEP13:路径。默认,下一步

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

    STEP15:先决条件检查。安装

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

    wps94

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

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

    wps95

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

    wps96

    STEP3:点击“更改设置”

    wps97

    STEP4:点击“更改”

    wps98

    STEP5:添加域配置

    wps99

    STEP6:添加成功,会有提示

    wps100

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

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

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

    wps101

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

    wps102

    STEP3:创建域账户

    wps103

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

    wps104

    STEP4:完成创建

    wps105

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

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

    wps106

     

    (五)日志传送环境搭建

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

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

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

    wps107

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

    wps108

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

    wps109

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

    wps110

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

    备库创建logrepl文件夹,并授权给testloguser用户

    wps111

    wps112

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

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

    wps113

    (5.4)主库配置日志传送

    (1)主库基础环境

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

    wps114

    (2)日志传送配置

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

    wps115

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

    wps116

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

    wps117

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

    wps118

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

    wps119

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

    wps120

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

    wps121

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

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

    wps122

    STEP6:最后点击确定即可

    wps123

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

    wps124

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

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

    wps125

     

    (六)日志传送测试

    (6.1)添加新表

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

    (6.2)删除表

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

    (6.3)修改表结构

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

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

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

    (6.5)truncate表

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

     

    (七)监控日志传送

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

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

    wps126

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

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

    wps127

     

    (八)总结

    优点 无论主库做什么操作,备库均可以同步过来,无需DBA介入
    缺点 1.备库数据同步存在延迟,时效性较差
    2.备库在做恢复操作时,是不可以查询数据库的,体验较差
  • 相关阅读:
    Vue 异步组件按需加载
    Net core 连接 Minio 出现 Access Denied 错误
    vue 脚手架打包 生成时间戳版本号
    vue tab 切换动画
    想尽办法不出错的语言太可怕了
    .NET Core:处理全局异常
    C#获取当前路径的方法
    [C#]解决生成的缩略图模糊的问题
    C# 正则表达式 —— 中文/英文空格(全角/半角空格)处理
    用C# 7.0的switch...case模式匹配取代一堆if语句
  • 原文地址:https://www.cnblogs.com/lijiaman/p/12189495.html
Copyright © 2020-2023  润新知