以前配置了MySql的主从同步,可是若是咱们程序还没实现读写分离。如今能够基于Mycat实现读写分离,Mycat是一个数据库中间件,提供了Mysql分表分库和读写分离等解决方案,下面仅记录Mycat读写分离mysql
首先Linux下载MyCatlinux
用wget命令下载 wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gzsql
下载后解压 tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz数据库
下面是解压后的目录负载均衡
进入conf文件夹能够看到下面的文件,配置读写分离咱们主要使用到了schema.xml与server.xml 文件spa
server.xml: 主要配置Mycat服务的参数,例如端口号,Myact用户名和密码使用的逻辑数据库等.net
schema.xml: 主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。server
server.xml 配置xml
找到user节点配置,配置用户信息,说明以下:中间件
--name 登陆Mycat的用户名
--password 登陆Mycat的密码
--schemas 逻辑数据库名,用于客户端链接时候使用的数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如须要这个用户须要管理两个数据库db01,db02,则配置db01,db02
schema.xml 配置
schema.name:关联 server.xml的 schema
schema.dataNode:Mycat的分片,能够自定义,多个用逗号隔开,有多少个dataNode 下面的dataNode标签就有多少个,且必须对应上名称
dataNode节点: 定义分片信息
dataNode.name: 当前分片的名称
dataNode.dataHost:当前分片名称,能够自定义,下面的dataHost标签的name就是该分片的dataHost
dataHost节点:当前分片物理数据库信息,就是配置咱们mysql的信息
dataHost.name:当前分片的物理数据库名称
dataHost.sqlMaxLimit配置默认查询数量
dataHost.database为真实数据库名
dataHost.balance="0", 不开启读写分离机制,全部读操做都发送到当前可用的writeHost 上。
dataHost.balance="1",所有的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,而且 M1 与 M2 互为主备),正常状况下, M2,S1,S2 都参与 select 语句的负载均衡。
dataHost.balance="2",全部读操做都随机的在 writeHost、 readHost 上分发。
dataHost.balance="3", 全部读请求随机的分发到 readHost 对应的 readHost 执行,writerHost 不负担读压力,
dataHost.writeType="0", 全部写操做发送到配置的第一个 writeHost,第一个挂了切到第二个writeHost,从新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
dataHost.writeType="1",全部写操做都随机的发送到配置的 writeHost。
dataHost.writeType="2",没实现。 -1 表示不自动切换 1 默认值,自动切换 2 基于MySQL 主从同步的状态决定是否切换
由于此次只配置读写分配,不配置分表分库,因此用一个dataNode就能够了
启动Mycat
而后用Java链接Mycat,8066是Mycat的默认端口
而后用Java程序添加一条数据
主库和从库都插入了一条数据
接下来试试查询,咱们先把从库的名称改一下
而后再执行Java代码,由于我上面的 dataHost.balance="3" ,因此每次读都是读取从库
以上就是此次使用Mycat实现读写分离的所有内容