目录
2、只有显示设置方法的事务为只读(readOnly = true),并且单独执行它时才会走从(读)库
一、MySQL读写分离原理
在MySQL读写分离中:master节点专门用来做数据的修改操作(如create、update、insert、delete
等),在主库上写,然后主库通过主从复制
把数据的更改通过binlog
同步到所有从库上
再将所有的查询操作都映射到从库上,这样就可以很好的分摊读写的压力
,不用全部请求都集中在主库上,这样MySQL的并发处理能力就能得到极大的提高
「在MySQL8.0之前:」这个过程需要一个中间件(如MyCat
,Sharding-JDBC
等),识别解析客户端的所有请求,将所有的写操作映射到master节点,而读操作都转到slave从库上
「MySQL8.0之后:」MySQL自身已支持读写分离
(支持一主多从
的读写分离,多主多从
的还是需要引入中间件实现)
「一主多从的读写分离:」
注意:
MySQL8.0之后该一主多从
的读写分离可不依赖中间件
二、搭建MySQL读写分离集群
MySQL8.0之前
1、下载MyCat安装包
下载MyCat:http://dl.mycat.org.cn
2、分别配置schema.xml
和server.xml
我这里配置虚拟库meet0and1-schema
映射到主从节点上的meet0and1
真实库
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 定义MyCat的虚拟逻辑库,dataNode:映射真实数据节点 -->
<schema name="meet0and1-schema" checkSQLschema="false" sqlMaxLimit="800" dataNode="meet0and1Node" />
<!-- 定义MyCat的数据节点,name必须和dataNode值一致,dataHost映射真实主机,database映射真实的库 -->
<dataNode name