我们在开发系统的时候,经常会遇到高并发的问题,还有高可用性和安全性方面的考虑,需要用读写分离的方案来解决问题。也就是在我们使用数据库比较多,更新少而查询比较多的情况下使用读写分离,实现提高性能,减少数据库压力。

为啥要用读写分离呢?

因为数据库的“写”操作是比较耗时的 但是数据库的“读”操作却很快。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。

1、读写分离

基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2、主从数据库数据同步

读写分离要实现的最重要的一点就是要实现主从数据库数据同步,否则就会造成读写不同步。今天我们说的是sqlserver主从数据库的数据同步,采用sqlserver发布订阅功能来实现。接下来开始配置,我们是在本地测试的。

首先在需要在本地创建俩数据库Demo1和Demo2,并在Demo1中建一个表student。然后找到下面图示圈中的功能

在本地发布右键->新建发布,如下图

直接下一步。进入发布数据库页面,这里发布的就是主数据库,选择Demo1,下一步

打开发布类型选择页面,这里我们选择事务发布,可以在更新主数据库的同时同步到从数据库。当然这里我们也可以选择其他选项,例如快照发布,我们可以设置数据更新发布频率(在使用快照发布的时候需要注意:要到服务启动SQL Server 代理 (MSSQLSERVER),因为它默认情况下是停止的,需要手动启动)

然后继续下一步,将要发布的数据库中的对象选中

下一步

继续下一步,打开如下刷选表行,也就是我们可以在这里添加筛选条件,实现符合条件的数据进行发布,我们这里直接下一步

在下图中凉复选框选中,然后打开更改,设置发布频率,我们这里间隔时间设置为10秒

然后确定,下一步进行安全设置

确定并下一步

下一步

设置发布名称,并点击完成,出现下图就说明发布成功了。

然后还有新建订阅,右键->新建订阅

出现下图就说明订阅新建成功。

好了,这样就实现了发布订阅,主从数据库数据同步。Demo2数据库里也有和Demo1数据库里一样的表结构。

这时候我们就可以在Demo1数据库的student表里添加一行数据,然后去查询Demo2数据库里的student表,发现数据已经同步过来了。

注:如果我们想把Demo1里新建的表或者存储过程也实现同步怎么做?

选中建好的发布,右键->属性,执行下面步骤,即可同步更新新建表和存储过程。

SqlServer发布订阅的更多相关文章

  1. SqlServer发布订阅错误收集

    原文:SqlServer发布订阅错误收集 目录 1. SqlServer发布订阅错误收集 1.1. Message:脚本对于表"dbo.table"失败. 1.1.1. 错误消息 ...

  2. SQLServer 发布订阅(Replication)造成的Memroy压力(cmemthread等待)

    深入了解下发布订阅:     数据复制:允许一个数据源向一个或多个目标数据库分发数据,只需要OLE DB 访问接口即可访问: 整个复制框架包含:复制组件,复制代理,复制类型: 复制组件: 发布服务器: ...

  3. 知方可补不足~Sqlserver发布订阅与sql事务的关系

    回到目录 前几讲说了一下通过sqlserver的发布与订阅来实现数据的同步,再通过EF这个ORM架构最终实现架构系统的读写分离,而在使用发布与订阅来实现数据同步时,需要我们注意几点,那就是当操作被使用 ...

  4. 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题

    最近给客户做了基于SQLServer的发布订阅的“读写分离”功能,但是某些表数据很大,经常发生某几条数据丢失的问题,导致订阅无法继续进行.但是每次发现问题重新做一次发布订阅又非常消耗时间,所以还得根据 ...

  5. SQLServer 2008 R2 发布订阅配置指南

    原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...

  6. 最简单的SQLserver,发布订阅教程,保证一次就成功

    最简单的SQLserver,发布订阅教程,保证一次就成功 发布订阅用来做数据库的读写分离,还是很好用的 当单台数据库的压力太大时,可以考虑这种方案,一主多从,主服务器的数据库只管写入,其他的数据库都是 ...

  7. sqlserver 实时同步(发布订阅)

    配置发布订阅手册 不同版本须知:https://www.sqlmanager.net/en/articles/1548 向后兼容性:参考https://docs.microsoft.com/zh-cn ...

  8. sqlserver关于发布订阅replication_subscription的总结

    (转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...

  9. 对已经发布订阅的sqlserver进行修改-添加新的表

    1.以服务器名称连接数据库 2.找到复制-本地发布-对应的数据库发布订阅-右键属性-选择项目-选择新增的表(没有看到,注意取消右侧的仅显示列表已选择的项目) 3.然后重新初始化所有订阅 4.如果出现“ ...

随机推荐

  1. 读书笔记 Week6 2018-4-12

    Chap 24 重构 读书笔记 一.需求的变更 单纯就科目学习中的小项目来说,目标在一开始便被明确下来,即可定义一份严谨的列表来描述功能.故在原来的编程经历中,只要上交了程序便一切都没事儿了,也没有重 ...

  2. c# vs c++

    [c# vs c++] 1.在 C++ 中,类和结构实际上是相同的,而在 C# 中,它们很不一样.C# 类可以实现任意数量的接口,但只能从一个基类继承.而且,C# Struct不支持继承,也不支持显式 ...

  3. windows下python安装Numpy和Scipy模块

    安装 numpy: 去 http://sourceforge.net/projects/numpy/files/latest/download?source=files 下载相应的exe安装文件. 安 ...

  4. java常用正则校验工具类

    正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...

  5. 此时servlet中的request和我们在页面jsp中的request 是同一个request.

    在tomcat容器启动的时候,jsp页面的内置对象request,response,同样是依赖于tomcat容器中的servlet-api.jar包,这个jar包和我们在web项目中的jar包是一样的 ...

  6. Python实现目录文件的全量和增量备份

    目标: 1.传入3个参数:源文件路径,目标文件路径,md5文件 2.每周一实现全量备份,其余时间增量备份 1.通过传入的路径,获取该路径下面的所有目录和文件(递归) 方法一:使用os.listdir ...

  7. 关于fastjson的一些知识

    今天被问到了一些有关fastjson的知识,问了fastjson内部的实现机制,笔者只是用过fastjson这个包,还真没了解过它的机制等. 下去后搜索了一些有关fastjson的知识,希望能对自己和 ...

  8. RotbotFrameWork接口测试

    一.添加接口测试Library 二.参数说明 三.关键字使用说明 Set Varibae: 参数化接口地址 Connect To Databse Using Custom Param: 连接数据库(需 ...

  9. Java多线程—JUC原子类

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIn ...

  10. [Training Video - 4] [Groovy] Constructors in groovy, this keyword

    Bank.log = log Bank b1 = new Bank() b1.name = "BOA" b1.minbalance = 100 b1.city="Lond ...