Mycat教程(mycat分布式架构精讲)

为什么要用Mycat

在这里插入图片描述

  1. java与数据库紧耦合
  2. 高访问量高并发对数据库压力
  3. 读写请求数据不一致
    在这里插入图片描述
    Mycat的官网
读写分离

在这里插入图片描述

数据分片

在这里插入图片描述

多数据源整合

在这里插入图片描述
Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

在这里插入图片描述这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用Mycat还是MySQL。

安装,配置,启动

  1. 将下载好的mycat压缩包拷贝到 linux 中。
  2. 将解压后的mycat移动到/usr/local目录中。
  3. /usr/local/mycat/conf目录下 server.xml<user name="root" defaultAccount="true">修改为<user name="mycat" defaultAccount="true">
  4. 并修改 schema.xml 将原来的文件内容修改为:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
		<!-- auto sharding by id (long) -->
		<!-- <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />-->
		<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"/> -->
	</schema>
	<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"/> -->
	<dataNode name="dn1" dataHost="host1" database="testdb" />
	<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<!-- 哨兵模式,隔一段时间ping一下各个服务,使用select user() -->
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="localhost:3306" user="root"
				   password="root">
				   <readHost host="hostS1" url="localhost:3307" user="root" password="root"></readHost>
		</writeHost>
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
</mycat:schema>

测试是否能连接数据库mysql -uroot -proot -h 127.0.0.1 -P3306
注意这里是使用docker创建了两个不同端口的mysql数据库

  1. 启动
    控制台启动:去mycat/bin目录下执行 ./mycat console
    后台启动:去mycat/bin目录下执行 ./mycat start

报错解决

mycat启动报错
https://www.jianshu.com/p/f26f057b7318

Caused by: io.mycat.config.util.ConfigException: SelfCheck### schema scott refered by user mycat is not exist!
解决:将server.xml中的scott改为schema.xml中的name,TESTDB

登录

运维使用的窗口(后台管理窗口)端口号是:9066
开发使用的窗口(数据窗口)端口号是:8066
使用mysql -umycat -p123456 -h 127.0.0.1 -P 8066登录

搭建读写分离

笔记链接:
https://pan.baidu.com/s/1uMZg-bsmIIEEOA6jmB2KwA 提取码:8e041

Spring Boot 面试精讲

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值