1.用读写分离的原因:

  • O、读写量很大,为了提升数据库读写性能,将读写进行分离;
  • O、如果多机房下写少读多,同时基于数据一致性考虑,只有一个主库存入所有的数据写入,本地再做从库提供读取,减少多机房间直接读取带来的时延。

2.sqlserver AlwaysOn读写分离配置

Alwayson相对于数据库镜像最大的优势就是可读副本,带来可读副本的同时还添加了一个新的功能就是配置只读路由实现读写分离,2016及以上版本甚至实现只读负载。

  • 设置高可用Always On

  • 右击可用性组设置属性常规设置,设置主角色允许读写连接,可读副本设置为只读意向。

  • 然后关键性一步就是设置只读路由

2016以下版本数据库可视化连接工具可能没显示只读路由的选项,你可以也可以用命令实现路由指定。

2014只读只支持单负载命令

--设置集群路由
ALTER AVAILABILITY GROUP [可用性组名]
MODIFY REPLICA ON
N'DB1(DB名)' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('DB2','DB3')));
ALTER AVAILABILITY GROUP [SQLAlwayOn_Test]
MODIFY REPLICA ON
N'DB2' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('DB1','DB3')));

2016及以上支持只读多负载命令

ALTER AVAILABILITY GROUP [ShangHai]
MODIFY REPLICA ON
N'DB1' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('DB2','DB3'),'DB1')))ALTER AVAILABILITY GROUP [ShangHai]
MODIFY REPLICA ON
N'DB2' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('DB1','DB3'),'DB2')))

3.数据库集群支持读写分离后需程序实现读写分离:

原默认数据库链接:
DataSource=;InitialCatalog=;UserID=;Pwd=;
现实现读写分离,主从分离开来,写操作,事务操作往主库,只读操作往从库,
需程序判断操作切换数据源。

  • O、写,事务操作使用默认链接往主库走: DataSource=;InitialCatalog=;UserID=;Pwd=;
  • O、只读操作在默认链接基础上加上ApplicationIntent=ReadOnly往从库走:
    DataSource=;InitialCatalog=;UserID=;Pwd=;ApplicationIntent=ReadOnly;
I、java实现:

代码实现方式有多种,
如springboot+druid+mybatis 对mapper方面名做监控实现读写数据源切换:
附上demo:springboot+druid+mybatis.rar
这不是唯一实现,还有自定义注解实现数据源切换等等我就不一一实现了。

II、net实现:

Demo:

class Program{static void Main(string[] args){Var read=Read();read.Query<string>("select");read.Close();Var write=Write();write=Execute("insert");write.Close();//因为当前是静态所以手动关闭了一下,可以实现非静态及时释放Console.ReadKey();}private static SqlConnection Read(){return new SqlConnection("read");}private static SqlConnection Write(){return new SqlConnection("write");}}

实现读写相对简单,可以做sql拦截做读写分离,或者主从方法封装实现读写分离等等,更多高级写法我就不一一举例。

实现方法千万种,说到底无非就是判断select ,insert读写操作去切换相应的链接,可以被动程序识别sql,也可以主动方法封装调用。以上实现都需双数据源,程序主动区分读写。区分关键就在数据库链接是否加上ApplicationIntent=ReadOnly;

4.为啥不使用Proxy数据库中间件的原因:

解决读写分离的方案有两种:应用层解决和中间件解决。
  • 应用层解决

优点:
多数据源切换方便,由程序自动完成;
不需要引入中间件;
理论上支持任何数据库;
缺点:
由程序员完成,运维参与不到;
不能做到动态增加数据源;

  • 中间件解决

优点:
源程序不需要做任何改动就可以实现读写分离;
动态添加数据源不需要重启程序;
缺点:
程序依赖于中间件,会导致切换数据库变得困难;
由中间件做了中转代理,性能有所下降;

Sqlserver基于Proxy形式开源中间件如MyCat等。
也有基于 JDBC 的扩展sharding-JDBC等(现实现方式就类似于jdbc实现);
数据库中间件虽减少程序层面修改但基于存在未知风险,故障转移问题,增加运维成本,性能损耗,对开源不太友好等所以选择程序层面实现。

sqlserver AlwaysOn实现读写分离配置及java/net代码实现相关推荐

  1. SQL Server AlwaysOn读写分离配置

    SQL Server AlwaysOn读写分离配置 pursuer.chen 备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都 ...

  2. Mysql一主多从和读写分离配置简记

    Mysql一主多从和读写分离配置简记 标签: mysql数据库服务器class数据库servermanager 2012-05-30 16:44 14981人阅读 评论(1) 收藏 举报  分类: 数 ...

  3. mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

    一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...

  4. 视频教程-ShardingSphere:SpringBoot2+MybatisPlus读写分离+分表-Java

    ShardingSphere:SpringBoot2+MybatisPlus读写分离+分表 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上 ...

  5. 读写分离时mycat不能链接mysql_Mycat读写分离配置实践

    Mycat读写分离配置实践 发布时间:2020-08-16 01:08:20 来源:ITPUB博客 阅读:81 作者:jeanron100 工作这些年来,也去了一些地方,有了一些见闻,隐隐感觉很多文化 ...

  6. MySQL的主从配置+SpringBoot的MySQL读写分离配置

    MySQL的主从复制 点击前往查看MySQL的安装 1.主库操作 vim /etc/my.cnf 添加如下配置 log-bin=mysql-bin #[必须]启用二进制日志 server-id=128 ...

  7. MyCat:开源分布式数据库中间件之数据库分片和读写分离配置

    mycat权威文档指南下载 1.   MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的"大数据库集群" 支持事务.ACI ...

  8. springboott整合mybatis-plus和sharding-jdbc实现分库分表和读写分离(含完整项目代码)

    springboott整合mybatis-plus和sharding-jdbc实现分库分表和读写分离(含完整项目代码) 一.整合sharding-jdbc 关于springboot整合sharding ...

  9. flinkCdc的mysql配置及java测试代码

    测试使用的是flinkCdc2.1.1版本(无锁同步,1.x版本有同步锁)目前支持mysql5.7及以上版本; 要在mysql.cnf中配置开启开启mysql的bin-log日志, log_bin=m ...

最新文章

  1. shell 编程 判断语句参数
  2. python身份运算符的语法规则_7 Python语法入门之与用户交互、运算符
  3. 利用Maya进行论文中网格动画数据的渲染
  4. 清除BSS段的一般做法
  5. 有关PowerShell脚本你必须知道的十个基本概念
  6. 男人最佳的生育年限,程序猿们,看看吧!!!
  7. solve stiffness matrix in matlab
  8. Python基础语法知识2
  9. android studio静态界面设计,2.3 使用Android Studio 简单设计UI界面
  10. ccf b类论文相当于sci几区_你写SCI论文是否也经历了这三个阶段?
  11. 使用rimraf一秒删除node_modules文件夹【亲测有用】
  12. 四色菊皇家大学 SiSaKet Rajabhat University (SSKRU)
  13. 封装python函数判断成绩等级_封的解释|封的意思|汉典“封”字的基本解释
  14. VC中鼠标移动点击操作
  15. 0x01【一台】电脑如何同时登录【两个】微信?
  16. 基于ESP8266的四旋翼无人机代码分享,该无人机可以爬墙哦
  17. 视频图像色彩增强的主要方法与落地实践
  18. 什么是JavaBeans
  19. 零输入响应和零状态响应
  20. dell 720 raid 配置

热门文章

  1. 如何将Chrome设置为默认浏览器
  2. matlab求解零输入响应,基于matlab的零输入和零状态响应
  3. linux 游戏下载论坛,LINUX下的各种游戏
  4. android 百度音乐 api,[新]百度mp3接口(baidu mp3 api)
  5. php隐藏后门,php后门隐藏技巧
  6. 关于谷歌账户的目标设置疑问解答
  7. CodeForces 1K-1600R-1407C Chocolate Bunny
  8. ubuntu NVIDIA CC sanity check failed:
  9. 小程序源码:后台版本趣味测试微信小程序源码下载支持自定义问题等等
  10. 洛谷 P1830 轰炸Ⅲ