使用mycat进行读写分离

目录

一、读写分离

1.1、什么是读写分离

1.2、为什么要用读写分离

1.3、使用mycat读写分离

1.3.1安装mycat

1.3.2、配置mycat


简单的理解,mycat就是一个数据中间件,可以让开发人员直接访问mycat,然后由mycat去访问具体的数据库服务器,进行数据库的相关操作。而关于读写分离和分库分表,只需要在mycat中进行配置,然后就都由mycat去操作。

一、读写分离

1.1、什么是读写分离

其实就是将数据库分为了主库和从库,主库用于写入数据,从库完成读取数据的操作,主库和从库之间通过某种机制进行数据的同步,是一种常见的数据库架构。

1.2、为什么要用读写分离

大多数的互联网的应用都是读取大于写入操作的,所以,读取的性能就会首先成为数据库服务器的瓶颈问题。读写分离把数据的读取和写入分开多个服务器,很好的解决了数据读取的负载问题。

1.3、使用mycat读写分离

使用mycat进行读写分离,默认是mysql服务器已经做好主从复制,具体可以参考:https://blog.youkuaiyun.com/vatxiongxiaohui/article/details/95195046

1.3.1安装mycat

下载mycat:http://www.mycat.io/

下载mycat

下载linux压缩包,解压,可以看到目录结构如下:主要配置都在conf文件夹中

目录

1.3.2、配置mycat

要做读写分离,首先找到conf下的server.xml文件,配置用户(添加下面代码):

<user name="root" defaultAccount="true">
	<property name="password">root</property>
	<!-- mycat的逻辑数据库 -->
	<property name="schemas">mycatdb</property>
</user>
  • 此配置表示我注册了一个账号为root,密码也为root的用户
  • 使用的逻辑数据库为mycatdb

然后配置schema.xml文件(我这里是双主双从模式,3307,3308为主服务器,3309,3310为从服务器):

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<!-- 作用:配置逻辑数据库 -->
	<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100">
		<!-- 只做读写分离,不做分库分表,schema标签下不用配置table -->
	</schema>
	<!-- 分片配置 作用:dataNode定义了mycat中的数据节点,也就是我们通常说的数据分片,一个dataNode标签就是一个独立的数据分片,通俗理解,一个分片就是一个物理数据库 -->
	<dataNode name="dn1" dataHost="localhost1" database="test01" />
        <!-- 物理数据库配置 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<!-- 心跳语句,根据此判断mysql是否宕机 -->
		<heartbeat>select user()</heartbeat>
		    <!-- 配置主库,写入节点 -->
		<writeHost host="hostM3307" url="localhost:3307" user="root" password="root">
			<!-- 配置从库,读取节点 -->
			<readHost host="host3308" url="localhost:3308" user="root" password="root" />
			<readHost host="host3309" url="localhost:3309" user="root" password="root" />
		</writeHost>
                <!-- 配置主库,读取节点 -->
		<writeHost host="hostM3308" url="localhost:3308" user="root" password="root">
			<!-- 配置从库,读取节点 -->
			<readHost host="host3307" url="localhost:3307" user="root" password="root" />
			<readHost host="host3310" url="localhost:3310" user="root" password="root" />	   
		</writeHost>		   
	</dataHost>
</mycat:schema>
标签说明
schema逻辑数据库,与server.xml中的schema对应
dataNode分片信息
dataHost物理数据库,真实存储数据的数据库

 

 

 

 

 

schema属性:

属性说明
name逻辑数据库名,与server.xml中的schema对应
checkSQLschema建议看文档,false
sqlMaxLimitselect 时默认的limit,避免查询全表

 

 

 

 

 

dataNode属性:

属性说明
name定义数据节点的名字,这个名字需要是唯一的
dataHost用于定义该分片属于哪个数据库实例的,属性值是引用 dataHost 标签上定义的 name 属性。
database用于定义该分片属性哪个具体数据库实例上的具体库

 

 

 

 

 

dataHost属性:

属性说明
name唯一标识 dataHost 标签,供上层的标签使用。
maxCon指定每个读写实例连接池的最大连接。
minCon指定每个读写实例连接池的最小连接
balance负载均衡类型,具体看文档,此处选1
writeType负载均衡类型
dbType指定后端连接的数据库类型
dbDriver指定连接后端数据库使用的 Driver,
switchType自动切换模式

 

 

 

 

 

 

 

 

 

至此,读写分离已经配置好了,可以直接登录mycat(默认端口8066,连接方式和普通数据库一样,如:jdbc:mysql://192.168.0.2:8066/)进行试验。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值