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

为啥要用读写分离呢?

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

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. Android MVP模式简单易懂的介绍方式 (一)

    Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式 ...

  2. Python基础学习九 数据库备份

    class BakDb(object): def __init__(self,ip,username,passwd,port=3306,path=r'C:\Users\BJQT\Desktop\dat ...

  3. properties 中文乱码问题的解决

    在用properties处理配置信息时,发现有时出现中文乱码的问题,后经查资料得知是由于编码不一致引起的.于是解决之. [原理解释] 我们用 API操作properties文件,如果获取的属性值是中文 ...

  4. .net core 2.0的一次奇特经历

    环境:.net core SDK版本 2.0.0-preview1-005977 VS 2017 version 15.3.0 preview 3.0 问题描述:今天在迁移Job的项目中,中午吃饭的时 ...

  5. MD5类库(hex_md5)

    /*  * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message  * Digest Algorithm, as ...

  6. poj1067-取石子游戏 (威佐夫博弈)

    http://poj.org/problem?id=1067 取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36 ...

  7. 解决VS2013中的控制台一闪而过的问题

    修改项目配置,右键点击项目,在右键菜单中选择属性,然后在弹出的对话框左侧列表中中选择 “配置属性”-->“链接器”-->“系统”,然后在右侧的列表中, 在第一项”子系统“的值中选择”控制台 ...

  8. Openssl s_server命令

    一.简介 s_server是openssl提供的一个SSL服务程序.使用此程序前,需要生成各种证书.本命令可以用来测试ssl客户端,比如各种浏览器的https协议支持 二.语法 openssl s_s ...

  9. Python守护进程(多线程开发)-乾颐堂

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  10. png 深度图像 转为 点云(opencv2)

    https://github.com/kruglov-dmitry/pnd2pcd_batch