当前位置:网站首页>MySQL读写分离的三种实现方案
MySQL读写分离的三种实现方案
2022-07-23 17:57:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
MySQL读写分离的三种实现方案
文章目录
一、搭建一个“一主两从”的MySQL集群
先搭建一个mysql集群(一主两从),半同步复制:mysql 半同步复制,三个节点。
二、读写分离实现:方案一
2.1 配置多个数据源
(1)、基于 Spring/Spring Boot,配置多个数据源(例如2个,master 和 slave)
(2)、根据具体的 Service 方法是否会操作数据,注入不同的数据源,1.0版本
2.2 使用AbstractRoutingDataSource
(3)、改进一下1.1:基于操作 AbstractRoutingDataSource 和自定义注解 readOnly 之 类的,简化自动切换数据源
(4)、改进二下1.2:支持配置多个从库;
使用AbstractRoutingDataSource和自定义注解。
(5)、改进三下1.3:支持多个从库的负载均衡
思路:在myreadwritesep-abstract-rounting-v1基础之上,多一个read类型的数据源,然后判断注解的name为read时候,在read01和read02 中随机选择。
-- 创建用户, 在主节点上执行
create schema performance;
CREATE USER 'performance'@'%' IDENTIFIED BY 'performance^pw';
GRANT ALL ON performance.* TO 'performance'@'%';
flush privileges;
-- 在主节点上执行
create table performance.t_model_info(
m_id int(11) not null primary key auto_increment comment '主键,自增',
model_type varchar(128) not null unique comment '模块类型',
model_name varchar(128) not null unique comment '模块名称',
model_status tinyint(1) not null default 0 comment '0 启用, 1 不启用'
)Engine=InnoDB AUTO_INCREMENT=1 default CHARSET=utf8mb4;2.3 这个版本的缺点:
- 侵入性强;
- “写完读”不一致问题,server方法,先向主库insert语句,然后立刻select,却查不出数据;
三、读写分离实现:方案二
3.1 通过ShardingSphere-jdbc 实现读写分离
改进v1.0,ShardingSphere-jdbc 的 Master-Slave 功能
1)SQL 解析和事务管理,自动实现读写分离
- 第一,将事务都管理起来;
- 第二,做SQL解析,自动实现读写分离;
2)解决”写完读”不一致的问题
- 如果在一个事务中,先写后读,该框架有个优化;在一个事务里,前几个都是毒,正常读就行,只要碰到一个写,后面不管有多少条读,都走主库。这样就完美解决了“写完读”不一致的问题。
通过Shardingsphere-jdbc框架实现读写分离。
3.2 这个版本的缺点:
- 对业务还是有侵入性(这一套东西,需要配置到业务代码中);
- 对已存在的旧系统改造不友好;
四、读写分离实现:方案三
4.1 通过ShardingSphere-Proxy 实现读写分离
改进v2.0, MyCat/ShardingSphere-Proxy 的 Master-Slave 功能
1)需要部署一个中间件,规则配置在中间件
2)模拟一个 MySQL 服务器,对业务系统无侵入
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126809.html原文链接:https://javaforall.cn
边栏推荐
- 【leetcode天梯】链表 · 203 移除链表元素
- Monotonic queue optimization DP
- 行业分析| 物流对讲
- Access intranet rds+mysql through SSH
- C language small project - address book (static version + dynamic version + file version)
- 一定要执行多个请求,都要捕获错误,使用try catch 不够优雅
- 记一次被网络诈骗的经历
- 【C语言】程序环境和预处理
- Mee | Zhejiang University Chenglei group develops a new method for designing and constructing synthetic flora
- PowerCLi 导入 LicenseKey 到esxi
猜你喜欢
随机推荐
Publish the local image to Alibaba cloud warehouse
C语言小项目 -- 通讯录(静态版+动态版+文件版)
Alibaba最新神作!耗时187天肝出来1015页分布式全栈手册太香了
DHCP:在网络中防止 Rogue DHCP Server
三维点云课程(七)——特征点描述
BoundsChecker用法「建议收藏」
Terminal command (all)
【开发经验】开发项目踩坑集合【持续更新】
二叉树高度 [log2n]+1与log2(n+1)是否相等
elk筆記25--快速體驗APM
Basic process of process scheduling
FPGA flash reading and writing based on SPI
Multithreading & high concurrency (the latest in the whole network: interview questions + map + Notes) the interviewer is calm
结构体大小的计算(结构体内存对齐)
关于:在企业局域网中启用 Delivery Optimization
Detailed explanation of TCL scripting language (1)
Technical scheme of face recognition system
基于自学习的机器人决策系统(达闼科技赵开勇)
Figure learning summary
Educational Codeforces Round 132 (Rated for Div. 2)【比赛记录】









![[shutter -- layout] flexible layout (flex and expanded)](/img/03/0f07a56487f8e91045f9e893e9f96c.png)