myCat实现分库分表
0. 准备
本文基于docker启动mysql
JDK:要求jdk必须是1.8及以上版本
MySQL:推荐mysql是5.6以上版本
分库分表的介绍_骑台风走的博客-CSDN博客分库分表的介绍https://blog.csdn.net/qq_52385631/article/details/126413374?spm=1001.2014.3001.5502
1.先安装java jdk
安装包地址
Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/#JavaSE
下载(需要注册或登录一下账号)
安装jdk步骤
# 1.移动到/usr/local/java文件夹下
cp jdk-8u231-linux-x64.tar.gz /usr/local/java
# 2.解压
tar -zxvf dk-8u231-linux-x64.tar.gz
# 3.配置环境变量
vim /etc/profileexport JAVA_HOME=/usr/local/java/jdk1.8.0_231
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin# 4.source使其生效
source /etc/profile
# 5.检查
java -version
2. 启动mysql
docker run -di --name=test1_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1docker run -di --name=test2_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1
3.MyCat安装及启动
myCat安装
官方文档
MyCat2http://www.mycat.org.cn/
安装步骤
# 下载安装包
wget http://dl.mycat.org.cn/1.6.7.3/20190828135747/Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz
# 解压
tar -xzvf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz
# 进入mycat目录的bin目录,启动mycat
cd /mycat/bin
./mycat start
# 停止
./mycat stop
4.链接
我这边用navicat链接
# 查看mycat账号密码
这个版本的账号密码:
账号:root
密码:123456# 其他版本查看
Mycat重要的配置文件sever.xml:综合配置数据库的相关信息,端口,内存占用,创建账号,密码
schema.xml:对数据库表结构的定义
rule.xml:指定相关算法,来实现不同的分片数据库# 方式一:
cd conf
vim server.xml# 方式二:
pycharm远程链接查看文档教程
https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2101.3001.5352
5. 分表
5.1按主键范围分片rang-long
5.1.1 修改配置文件schema.xml
坑一:primaryKey="id" id要小写,不然后期分表失败,全部都有
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><!-- TESTDB数据库给user表进行映射到dn1,dn2库中 --><schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"><!-- 表--><table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true"></table><!-- 如果想有多个表,继续加table,安装想要的规则即可--></schema><!-- 创建数据库lqz--><dataNode name="dn1" dataHost="localhost1" database="lqz"/><dataNode name="dn2" dataHost="localhost2" database="lqz"/><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 数据库地址 --><writeHost host="hostM1" url="106.14.42.253:3306" user="root"password="123456"></writeHost></dataHost><dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 数据库地址 --><writeHost host="hostM1" url="106.14.42.253:3307" user="root"password="123456"></writeHost></dataHost></mycat:schema>
5.1.2 修改rule.xml
# ctrl +f,找到自己配置的规则,我这边是auto-sharding-long
5.1.3 修改text
以上配置全部完成,重启myCat,如果用的pycharm,需要把文件同步上传,接着去navicat新建数据库即可,新建的数据库名称,跟你schema.xml中database中名称一样
5.2 一致性哈希murmur
可避免热点问题
热点问题:一直查询一个表
5.2.1 修改配置文件schema.xml
新增一段 <table name="article" dataNode="dn1,dn2" rule="sharding-by-murmur"/>
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><!-- TESTDB数据库给user表进行映射到dn1,dn2库中 --><schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"><!-- 表--><!-- <table name="user" primaryKey="id" type="global" rule="auto-sharding-long" dataNode="dn1,dn2"/>--><table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true"></table><!-- 如果想有多个表,继续加table,安装想要的规则即可--><table name="article" dataNode="dn1,dn2" rule="sharding-by-murmur"/></schema><!-- 创建数据库lqz--><dataNode name="dn1" dataHost="localhost1" database="lqz"/><dataNode name="dn2" dataHost="localhost2" database="lqz"/><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 数据库地址 --><writeHost host="hostM1" url="106.14.42.253:3306" user="root"password="123456"></writeHost></dataHost><dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 数据库地址 --><writeHost host="hostM1" url="106.14.42.253:3307" user="root"password="123456"></writeHost></dataHost></mycat:schema>
配置完成重启myCat,新建表即可
6. 新建数据库和表
6.1 按主键范围分片rang-long新建表
6.2 按照一致性哈希murmur新建表
myCat实现分库分表相关推荐
- Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
转载自 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件 Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件! 一个彻底开源 ...
- MySQL使用Mycat实现分库分表-读写分离
MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...
- Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战
目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...
- 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理
目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...
- 【mycat】分库分表
在分库分表时,我们先安装好mycat:https://blog.csdn.net/wangyunzhao007/article/details/107330854 一.垂直切分 按照业务模块进行切分, ...
- mycat配置访问oracle_MySQL:如何使用MyCAT实现分库分表?
分库分表介绍 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为很多可以独立提供服务的小应用.每个应用都有独立的数据库. 数据的切分分为两种: 垂直切分:按照业务模块进行切分,将不同模块的 ...
- Windows环境下使用Mycat模拟分库分表-读写分离案例
一.基本环境 W7 64位.Mycat1.6.MySQL8.0 二.Mycat核心配置文件配置 解压Mycat1.6,并对server.xml.schema.xml.rule.xml三个核心配置文件做 ...
- mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置
一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...
- MySQL使用MyCat实现分库分表
MySQL分库分表的实现方式有: shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析.改写.路由处理.需要自行编码配置实现,只支持java语言,性能较高. MyCa ...
最新文章
- react-router-dom v6 中的Routes
- 比特币分叉两年记:聊聊当年为什么要分叉?
- LPC55S69 MicroPython模组和库函数
- (格式化字符串漏洞).fini.array劫持,使程序流程循环进行
- 每天一道LeetCode-----将有序序列转成高度平衡二叉搜索树
- storm mysql druid_Druid 集成
- 计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲
- CryptoPunks历史总交易额达1亿美元,近30天交易涨幅超900%
- python连接access 参数太少_paip. 解决php 以及 python 连接access无效的参数量。参数不足,期待是 1”的错误...
- 剖析 AI 和大数据的分布式实践 —— 2018 UCan下午茶·北京站
- 语音识别方案设计书.doc
- Linux虚拟机添加新硬盘的全程图解
- 【水】弱化版魔术球问题
- Redis commands 官方
- 异或鉴相器 matlab 数字鉴相器,一种异或门鉴相器的制作方法
- 【数据仓库】数仓好坏衡量标准
- netty 高匿ip检测_高匿代理ip不用担心被网站检测
- 5G通信在应急系统中的应用
- MySQL存储引擎概叙
- ddt数据驱动 python_Python ddt数据驱动
热门文章
- 如何建立一个属于自己的网站(小白教程)
- Warning: Accessing non-existent property ‘cat‘ of module exports inside circular dependency
- 软实力:权力,从硬实力到软实力
- sd和sem啥区别_生物统计学-标准差(SD)和标准误(SEM)有何区别.pdf
- Android Studio开发:简单的登录注册界面
- 使用JDBC 获取相关的数据
- Angular 个人深究(一)【Angular中的Typescript 装饰器】
- 机械键盘入门:教你如何正确选择机械键盘!学习游戏两不误
- ImageIO 本地读取,网络下载图片
- 视频打开后从头开始_后端软件体系结构清单:如何从头开始构建产品