当前位置: 首页 > news >正文

Sql Server 2017主从配置之:事务日志传送

使用事务日志传送模式搭建Sql Server 2017主从同步,该模式有一定的延迟,是通过3个不同的定时任务,将主库的日志同步到从库进行恢复来实现数据库同步操作。

环境准备

两台服务器,配置都是8g2核,50g硬盘,操作系统版本Windows Server 2019 Datacenter

  • 主库:server1,192.168.56.110
  • 从库:server2,192.168.56.111

本人使用虚拟机做模拟配置,在虚拟机操作系统上做如下配置

  • 虚拟机配置两张网卡,以便和主机通讯

  • 虚拟机启动远程桌面 ,右键左下角win图标-系统-远程桌面,点击启用

  • 创建操作系统账户sqadmin,分配管理员权限

  • 为方便测试,关闭系统防火墙,控制面板\系统和安全\Windows Defender 防火墙\自定义设置

  • 安装Sql Server 2017企业版,个人的Express版本不支持事务日志复制

  • 安装SSMS 19.2版本

安装SQL Server 2017

勾选SQL Server复制
在这里插入图片描述
服务器配置,三个服务都改成自动
在这里插入图片描述
数据库引擎配置,服务配置,选择“混合模式(SQL Server身份证和Windows身份证)”,输入sa账号密码,点击添加当前用户作为SQL Server管理员,这里也可以另外创建一个操作系统账号
在这里插入图片描述

点击下一步,直到安装完成!

两台服务共同配置准备

创建系统账号sqadmin,设置管理员权限

在这里插入图片描述

设置服务启动账户sqadmin

打开Sql Server Configuration Manager,进入SQL Server 服务,将SQL Server服务和SQL Server 代理服务的登录身份都改成sqadmin,并设置自动启动
在这里插入图片描述

配置服务器代理账户

打开SQL Server Management Studio,链接数据库
右键点击链接,选择属性,打开服务器属性面板,点击安全性选项页,勾选启动代理账户,输入sqadmin账户密码
在这里插入图片描述

一、主库 server1 配置

创建共享文件夹

创建共享文件夹c:\backup,设置共享,并添加sqadmin账号权限
在这里插入图片描述

创建测试数据库demo

打开SQL Server Management Studio,链接数据库

创建测试数据库demo,并创建测试表t_user
在这里插入图片描述

配置事务日志传送

右键点击数据库,点击属性,点击“事务日志传送”选项,勾选“将此数据库启用为日志传送配置中的主数据库”
在这里插入图片描述
主库设置备份日志文件存储目录,点击确定后,下一步就配置从库
在这里插入图片描述

二、从库 server2 配置

添加辅助数据库配置

在这里插入图片描述
链接到辅助数据库,注意,这里要填ip链接。
配置从库之前,需要到从库服务创建好共享文件夹c:\backup,和主库的一样,需要设置sqadmin完全读写权限

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

配置完成后,

点击确定,会自动在从库创建数据库demo_bak,以及自动创建三个计划任务(主库1个,从库2个)

在这里插入图片描述

四、测试

在主库上面创建一个表,或insert一些数据,过一会儿到从库看看效果。
右键点击计划任务,点击查看历史记录,可以看见详细同步记录。
在这里插入图片描述

在这里插入图片描述

五、注意

如果出现从库计划任务无法链接到主库服务器的情况,则可用如下sql查询数据中的server名称是否有误,如果有误可删除重新添加

## 查看server配置
sp_helpserver
## 删除SERVER1
sp_dropserver 'SERVER1', null
## 添加新的server
sp_addserver '192.168.56.111' ,'LOCAL',null

同步过程中,如果从库正在使用,就会无法同步,恢复计划任务(LSRestore_SERVER1_demo)报类似如下错误,当从库停止使用时,又会继续同步。

如果出现提示数据库被使用,又不知道在哪里被使用,建议直接重启从库数据库服务。

2023-11-18 00:12:50.70	*** 错误: 无法将日志备份文件“\\192.168.56.111\backup\demo_20231117161200.trn”应用到辅助数据库“demo_bak”。(Microsoft.SqlServer.Management.LogShipping) ***
2023-11-18 00:12:50.70	*** 错误: 因为数据库正在使用,所以无法获得对数据库的独占访问权。
RESTORE LOG 正在异常终止。(.Net SqlClient Data Provider) ***
2023-11-18 00:12:50.71	*** 错误: 日志备份文件“\\192.168.56.111\backup\demo_20231117161200.trn”已通过验证但无法应用到辅助数据库“demo_bak”。(Microsoft.SqlServer.Management.LogShipping) ***
2023-11-18 00:12:50.73	正在删除旧日志备份文件。主数据库:“demo”
2023-11-18 00:12:50.73	还原操作完成,但有错误。辅助 ID:“cbd809d8-1bf7-4bbe-aaa3-ecf21e15d147”

相关文章:

  • P3879 [TJOI2010] 阅读理解- 字典树
  • Java方法中不使用的对象应该手动赋值为NULL吗?
  • JS 新操作符 —— “?.”、“??”、“??=”
  • Excel 文件比较工具 xlCompare 11.01 Crack
  • Python编程陷阱(五)
  • 【Java并发编程二】线程的基本知识
  • YOLOv7独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度
  • MSYS2介绍及工具安装
  • SELinux零知识学习十七、SELinux策略语言之类型强制(2)
  • excel用RAND函数、或者RAND.NV函数生成随机数、这两个函数的区别
  • NFTScan 正式上线 Viction NFTScan 浏览器和 NFT API 数据服务
  • OpenCV+特征检测
  • FDM(傅里叶分解)
  • 基于springboot实现私人健身与教练预约管理系统项目【项目源码+论文说明】
  • Pytorch np.arange函数
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS 7 修改主机名
  • classpath对获取配置文件的影响
  • docker-consul
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JAVA并发编程--1.基础概念
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Laravel 中的一个后期静态绑定
  • Linux中的硬链接与软链接
  • php面试题 汇集2
  • springMvc学习笔记(2)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 高性能JavaScript阅读简记(三)
  • 将 Measurements 和 Units 应用到物理学
  • 收藏好这篇,别再只说“数据劫持”了
  • 一起参Ember.js讨论、问答社区。
  • 由插件封装引出的一丢丢思考
  • MPAndroidChart 教程:Y轴 YAxis
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # include “ “ 和 # include < >两者的区别
  • (1)Nginx简介和安装教程
  • (12)Linux 常见的三种进程状态
  • (2015)JS ES6 必知的十个 特性
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zhuan) 一些RL的文献(及笔记)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .net core控制台应用程序初识
  • .NET Standard 的管理策略
  • .NetCore 如何动态路由
  • .NET建议使用的大小写命名原则
  • .NET性能优化(文摘)
  • @angular/cli项目构建--Dynamic.Form
  • @Documented注解的作用
  • @property python知乎_Python3基础之:property
  • @Resource和@Autowired的区别
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [Bada开发]初步入口函数介绍
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)