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实现分库分表相关推荐

  1. Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件

    转载自 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件 Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件! 一个彻底开源 ...

  2. MySQL使用Mycat实现分库分表-读写分离

    MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...

  3. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  4. 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...

  5. 【mycat】分库分表

    在分库分表时,我们先安装好mycat:https://blog.csdn.net/wangyunzhao007/article/details/107330854 一.垂直切分 按照业务模块进行切分, ...

  6. mycat配置访问oracle_MySQL:如何使用MyCAT实现分库分表?

    分库分表介绍 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为很多可以独立提供服务的小应用.每个应用都有独立的数据库. 数据的切分分为两种: 垂直切分:按照业务模块进行切分,将不同模块的 ...

  7. Windows环境下使用Mycat模拟分库分表-读写分离案例

    一.基本环境 W7 64位.Mycat1.6.MySQL8.0 二.Mycat核心配置文件配置 解压Mycat1.6,并对server.xml.schema.xml.rule.xml三个核心配置文件做 ...

  8. mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

    一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...

  9. MySQL使用MyCat实现分库分表

    MySQL分库分表的实现方式有: shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析.改写.路由处理.需要自行编码配置实现,只支持java语言,性能较高. MyCa ...

最新文章

  1. react-router-dom v6 中的Routes
  2. 比特币分叉两年记:聊聊当年为什么要分叉?
  3. LPC55S69 MicroPython模组和库函数
  4. (格式化字符串漏洞).fini.array劫持,使程序流程循环进行
  5. 每天一道LeetCode-----将有序序列转成高度平衡二叉搜索树
  6. storm mysql druid_Druid 集成
  7. 计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲
  8. CryptoPunks历史总交易额达1亿美元,近30天交易涨幅超900%
  9. python连接access 参数太少_paip. 解决php 以及 python 连接access无效的参数量。参数不足,期待是 1”的错误...
  10. 剖析 AI 和大数据的分布式实践 —— 2018 UCan下午茶·北京站
  11. 语音识别方案设计书.doc
  12. Linux虚拟机添加新硬盘的全程图解
  13. 【水】弱化版魔术球问题
  14. Redis commands 官方
  15. 异或鉴相器 matlab 数字鉴相器,一种异或门鉴相器的制作方法
  16. 【数据仓库】数仓好坏衡量标准
  17. netty 高匿ip检测_高匿代理ip不用担心被网站检测
  18. 5G通信在应急系统中的应用
  19. MySQL存储引擎概叙
  20. ddt数据驱动 python_Python ddt数据驱动

热门文章

  1. 如何建立一个属于自己的网站(小白教程)
  2. Warning: Accessing non-existent property ‘cat‘ of module exports inside circular dependency
  3. 软实力:权力,从硬实力到软实力
  4. sd和sem啥区别_生物统计学-标准差(SD)和标准误(SEM)有何区别.pdf
  5. Android Studio开发:简单的登录注册界面
  6. 使用JDBC 获取相关的数据
  7. Angular 个人深究(一)【Angular中的Typescript 装饰器】
  8. 机械键盘入门:教你如何正确选择机械键盘!学习游戏两不误
  9. ImageIO 本地读取,网络下载图片
  10. 视频打开后从头开始_后端软件体系结构清单:如何从头开始构建产品