前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot+MyCat 实现读写分离、分库分表、主从同步

SpringBoot+MyCat 实现读写分离、分库分表、主从同步

作者头像
执笔记忆的空白
发布2022-01-05 21:37:03
2K0
发布2022-01-05 21:37:03
举报
文章被收录于专栏:Java日常Java日常

一、MyCat基本介绍

  • 一个用于MySQL读写分离和与数据切分的高可用中间件
  • 一个模拟为MySQLServer的超级数据库代理
  • 一个能平滑扩展支持1000亿大表的分布式数据库系统 (普通单表1kw以下)
  • 一个可管控多种关系数据库的数据库路由器
  • mycat来自2013年阿里的Cobar的改良版, 截至2015年, 成为大多数公司的数据解决方案

二、基础环境搭建

因为mycat本身对于数据库主从同步还是依赖的其本身机制,所以这里我们使用mysql的时候,也需要配好主从同步,另外需要建好从库的只读账号

参考:MySQL一主一从,双主双从,主从同步配置

注意:如果配了双主同步,那么分库分表就不好做,所以如果想用分库分表,那么双主切记先别做同步。

三、MyCat安装配置

  1. Mycat版本下载:http://dl.mycat.org.cn/2.0/
  2. 选择1.6版本,Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
  3. 上传linux,解压

目录

说明

bin

mycat命令,启动、重启、停止等

catlet

catlet为Mycat的一个扩展功能

conf

Mycat 配置信息,重点关注

lib

Mycat引用的jar包,Mycat是java开发的

logs

日志文件,包括Mycat启动的日志和运行的日志

conf配置相关文件如下:

文件

说明

server.xml

Mycat的配置文件,设置账号、参数等

schema.xml

Mycat对应的物理数据库和数据库表的配置

rule.xml

Mycat分片(分库分表)规则

rule.xml配置参考:

代码语言:javascript
复制
<!-- 逻辑数据库名:mycatDatbase,与server.xml中对应;student 是物理数据库中的表,这里在两个库都有这个表 ; dataNode 是自己定义的,区别两个数据库-->
	<schema name="CCTV_DB" checkSQLschema="false" sqlMaxLimit="100">
		<table name="USERS" primaryKey="id" dataNode="masterNode1,masterNode2" rule="ruleById" autoIncrement="true"/>
	</schema>
	<!-- 设置dataNode 对应的数据库,name 和schema中对应 ,dataHost:自己定义的host配置 ,database是物理数据库,master1和master2是两个物理数据库 -->  
    <dataNode name="masterNode1" dataHost="masterHost1" database="CCTV" />  
    <dataNode name="masterNode2" dataHost="masterHost2" database="CCTV" />  
	<!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 balance 为1 表示读写分离-->  
    <dataHost name="masterHost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native">  
            <heartbeat>select user()</heartbeat>  
            <writeHost host="server1" url="192.168.4.38:3306" user="test01" password="test01">  
				<readHost host="server1" url="192.168.4.40:3306" user="test01" password="test01"/>    				
			</writeHost>
    </dataHost>	
	<dataHost name="masterHost2" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native">  
            <heartbeat>select user()</heartbeat>  
            <writeHost host="server1" url="192.168.4.39:3306" user="test02" password="test02">  
				<readHost host="server1" url="192.168.4.41:3306" user="test02" password="test02"/>   	 				
			</writeHost>
  </dataHost>	
  1. 具体全局操作参考:springboot整合mysql+mycat中间件实现一主两从读写分离和分库分表
  2. 配置mycat开机自启参考:Mycat设置开机自启
  3. mycat+mysql自增处理参考:mycat中配合mysql自增主键的使用
  4. 如果主从同步存在延时问题,则可以某些sql可以强制读主库,mybatis写法如下:
代码语言:javascript
复制
/*#mycat:db_type=master*/ SELECT * FROM tb_item ;

具体参考:mycat配置 Mysql 读写分离+强制走写节点+根据主从延时的读写分离

四、注意事项

上面写的案例是做了双主双从,主从同步,并且双主之间也做了同步,那么如果要做分库分表的话,这里的双主同步就要关掉!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、MyCat基本介绍
  • 二、基础环境搭建
  • 三、MyCat安装配置
    • 四、注意事项
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档