一、课程介绍

读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开。读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上。读写分离的基本原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。随着系统的业务量不断增长数据多了之后,对数据库的读、写就会很多。分库减少单台数据库的压力。本文以MS SQL Server数据库为例主库负责写数据、读数据。读库仅负责读数据。写库就一个,读库可以有多个。

在上一节分享课程中《.NET Core基于SQL Server数据库实现读写分离实战演练》我们已经学会了如何在.NET Core代码层面如何通过数据库中间件来操作我们的读写分离的数据库。本节课程接着上一节课程中遗留的问题,废话不多说直接进入本次课程的主题。

.1、本次分享课程适合人群如下
1)、有一定的.NET Core开发基础。
2)、有一定的SQL SERVER基础知识。
3)、学习和了解.Net Core跨平台开发技术。
如果您同样对本次分享《基于SQL Server数据库搭建主从复制实现读写分离实战演练》课程感兴趣的话,那么请跟着阿笨一起学习吧。一句话总结今天我们学习达到的目标?如何基于SQL Sever数据库搭建主从同步实现读写分离。
废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、Microsoft SQL Server常见的几种实现读写分离方案

2.1、SQL Server提供了三种技术实现读写分离

SQL Server提供了三种技术,可以用于读写分离的实现:日志传送、事务复制和SQL Server 2012以上版本中新增的功能Always On技术。这三种技术的比较如下:

.NET高级进阶之基于SQL Server搭建主从复制实现读写分离实战演练

配置复制就没有数据库镜像和AlwaysOn的要求那么高,只需要两台服务器能通过TCP进行通讯即可,两台服务器操作系统和SQL版本都可以不完全一致,而且两台服务器也不需要加入域,所以配置复制订阅就简单多了,但是复制订阅主要是针对数据表而不能像镜像和AlwaysOn那样配置整个数据库,这也是它的缺点吧。

综上:考虑到简单性和实用性,这里阿笨推荐采用事务复制技术来实现SQL SERVER读写分离。

三、Microsoft SQL Server 2014主从复制环境搭建实战演练

1)、同台服务器不同数据库实现主从复制

在《.NET Core基于SQL Server数据库实现读写分离实战演练》分享课程中已经演示过。

2)、不同服务器不同数据库实现主从复制(由于篇幅较长,单独课程进行分享)

.NET高级进阶之基于SQL Server搭建主从复制实现读写分离实战演练

读写分离就是主从集群,一主多从或者一主一丛都是可以的,就是数据库主机复制写入操作,从机负责读的操作,主机写入以后再同步给从机;

四、思考与总结

4.1、总结:怎么开发中我们的程序使用数据库主从?

一个是主连接字符串,另外是一个或者多个从的字符配置,我们要实现读写分离就是去实现读取的时候用从库的连接字符串,写入的时候用主库的连接字符串,说到这里我想大家应该很明确自己的思路明确一点,那就是我们读的时候用从库,写的时候用主库。

1)、根据切换数据库连接字符串R/W来实现手动的读写分离。缺点:不灵活,扩展低,不具备高可用,稳定性差,侵入式太强,只适合小项目临时应急使用。
2)、第三方数据库中间件比如阿里巴巴的MyCat、 360开发的atlas  等等。缺点:重量级,入门门槛难度大,学习成本高。
3)、.NET Core开源数据库访问组件。优点:灵活,真真实现读写分离。

4.2、思考:如何保证数据库主从复制的高可用呢?

基于SQL Server搭建主从复制实现读写分离实战演练

虚拟IP(VIP)。缺点:需要运维人员支持(基于VIP的keepalived高可用集群架构)!

1)、怎么实现故障检测的那?

心跳,采用定时发送一个数据包,如果机器多长时间没响应,就认为是发生故障,自动切换到热备的机器上去。

2)、怎么实现自动切换那?

虚IP。何为虚IP那,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。

.NET Core支持数据库读写分离的组件比较多,比如:FreeSql ,SmartSql,SqlSugar(在《.NET Core基于SQL Server数据库实现读写分离实战演练》中已经分享)等等。

最后送大家一句话:希望大家在.NET Core的学习道路上一直跟着阿笨坚持下去。

腾讯课堂

网易云课堂

不信的话,扫一扫

sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...相关推荐

  1. sql server和mysql 分页_基于Sql server数据库的四种分页方式总结

    下面小编就为大家分享一篇基于sqlserver的四种分页方式总结,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧. 第一种:ROW_NUMBER() OVER()方式 select * ...

  2. sqlserver 字符串拼接_VB6 连接SQL Server数据库实例

    SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点.那么VB6怎么去连接呢?接下来请跟进我们的步伐前进! 直接上CLS_VB6 ...

  3. sqlserver date类型和字符串比较_VB编程基本数据类型完整剖析

    VB数据类型 Visual Basic编程提供了标准数据类型主要有:字符串型数据和数值型数据,此外还提供了字节.货币.对象.日期.布尔和变体数据类型. 在VB程序中,所有变量都具有数据类型,以决定其用 ...

  4. sqlserver date类型和字符串比较_Mongo的数据类型

    常见类型 Object ID: 文档ID String: 字符串, 最常见, 必须是有效的UTF-8 Boolean: 存储一个布尔值, true或false Integer: 整数可以是32位或64 ...

  5. sql 拆解函数_在SQL Server数据库中拆分字符串函数

    以下为引用的内容: CREATE FUNCTION uf_StrSplit '1.1.2.50','.' (@origStr varchar(7000), --待拆分的字符串 @markStr var ...

  6. 心音数据库_基于SQL Server的心音数据库管理系统设计

    摘要:心音是心脏运动所产生的振动信号,蕴含着与心血管疾病有关的心房.心室.血管和瓣膜等部位的各种信息,因此,它能够用于心脏疾病的预防.诊断和心脏功能状态的评估.心脏储备是心脏功能的上调能力,临床上它的 ...

  7. react sql格式化_为SQL Server数据库损坏做准备; 初步React与分析

    react sql格式化 Corruption is a looming thought through every administrator's mind, from sysadmins to d ...

  8. mysql 导入 没有数据库文件怎么打开_没有SQL Server数据库时如何打开.MDF文件

    如果您在试图打开一个.MDF数据库文件时,却发现自己没有安装SQL Server数据库,该怎么办呢?这时候,如果恰巧您的机子上装有Visual Studio 2005或者是更高的版本时,不用安装SQL ...

  9. mysql删除链接服务器_在sql server 数据库建立链接服务器和删除

    /****** 对象:  LinkedServer [202.99.213.226]    脚本日期: 06/26/2007 21:34:35 ******/ EXEC master.dbo.sp_a ...

最新文章

  1. 2020薪资排名第一的专业公布,除了计算机还有这些!
  2. jQuery:has()和jQuery:contains()及jQuery:empty
  3. php Session存储到Redis的方法
  4. 谈谈dpdk应用层包处理程序的多进程和多线程模型选择时的若干考虑
  5. php 验证ajax提交表单提交表单提交,使用AJAX表单提交将表单数据传递给PHP而不刷新页面...
  6. vue、nuxt性能优化
  7. js获取前一天/后一天
  8. python爬取邮件内容_登陆邮箱 爬取邮件
  9. jQuery Ajax Demo
  10. mysql常用数据操作之查
  11. JavaScript 根据两点的经纬度坐标,计算实际的直线距离
  12. 机器人启示录 百度影音_斯皮尔伯格筹备新作 《机器人启示录》有望启动
  13. JavaWeb之servlet(1)
  14. 水果之王之猕猴桃-系列三(猕猴桃的功能和禁忌)
  15. PHP 7.3 新特性介绍
  16. C语言中void具体有什么作用
  17. 京东涉足B2B 叫板阿里巴巴
  18. android身高控件_RuleView Android 自定义标尺控件(选择身高、体重等) @codeKK Android开源站...
  19. Kibana 的安装 与 汉化
  20. 基于QT的海康威视网络摄像头二次开发

热门文章

  1. Git 新建仓库推送远程技巧
  2. 使用FTP下载文件connect.retrieveFileStream(filename) 获取不到InputStream流,返回null的问题
  3. Excel VBA Sql 操作Access数据库
  4. 天气模式_北方降雪骤减!南方开启湿冷模式多阴雨!|天气展望
  5. C语言 函数缺省参数 - C语言零基础入门教程
  6. 11 为了进一步_浅聊小米11发布会
  7. mysql二级缓存,mybatis的动态sql和二级缓存
  8. crontab shell 每5秒执行_视频 |全球最快全自动播种分拣机器人,每5秒处理一件货物...
  9. python3库查看调用_Python 3 中调用 COM 的库文件 | 学步园
  10. foreach判断最后一个_ArrayList集合为什么不能使用foreach增删改?