本文基于docker启动mysql
JDK:要求jdk必须是1.8及以上版本
MySQL:推荐mysql是5.6以上版本
Java Archive | Oracle
https://www.oracle.com/java/technologies/downloads/archive/#JavaSE


- # 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/profile
-
- export 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
- docker run -di --name=test1_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1
-
- docker run -di --name=test2_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1
MyCat2
http://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
我这边用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
坑一:primaryKey="id" id要小写,不然后期分表失败,全部都有
- "1.0"?>
- mycat:schema SYSTEM "schema.dtd">
- <mycat:schema xmlns:mycat="http://io.mycat/">
-
- <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
-
- <table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true">table>
-
- schema>
-
- <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>
-
- <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>
-
- <writeHost host="hostM1" url="106.14.42.253:3307" user="root"
- password="123456">
- writeHost>
- dataHost>
-
- mycat:schema>
- # ctrl +f,找到自己配置的规则,我这边是auto-sharding-long
-
5.1.3 修改text

以上配置全部完成,重启myCat,如果用的pycharm,需要把文件同步上传,接着去navicat新建数据库即可,新建的数据库名称,跟你schema.xml中database中名称一样
可避免热点问题
热点问题:一直查询一个表
新增一段
- "1.0"?>
- mycat:schema SYSTEM "schema.dtd">
- <mycat:schema xmlns:mycat="http://io.mycat/">
-
- <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
-
-
- <table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true">table>
-
- <table name="article" dataNode="dn1,dn2" rule="sharding-by-murmur"/>
- schema>
-
- <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>
-
- <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>
-
- <writeHost host="hostM1" url="106.14.42.253:3307" user="root"
- password="123456">
- writeHost>
- dataHost>
-
- mycat:schema>
配置完成重启myCat,新建表即可

