准备
-
两台服务器并且安装mysql,不可以克隆mysql!
1数据库:192.168.0.106
2数据库:192.168.0.107 -
mycat一枚
简单的配置mycat
- 下载
github太慢直接网盘下就行,版本是1.6
链接: https://pan.baidu.com/s/1QQyIUj_Y03Ctpo22yIuNxA 密码: 3arv
安装
安装详细
解压
tar -zxvf Mycat-server-1.6.7.1-linux.tar.gz
移动到/usr/local目录下
mv mycat /usr/local
进入/usr/local/mycat/conf 目录
cd /usr/local/mycat/conf
配置分库
-
首先修改server.xml
server.xml 是mycat的配置文件。
修不修改都行,就是登陆mycat需要的用户和密码
-
修改schema.xml
schema.xml是用来配置数据库之间的关系,比如多主多从,分库分表啥的
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--schema标签配置的是mycat的虚拟库,schema里面的DataNode配置的是默认数据库节点 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
<!-- 需要分出来的表 name配置表名 dataNode是为这个表分配的数据库节点-->
<table name="t_user" dataNode="dn2"></table>
</schema>
<!-- dataNode标签将mycat的数据库请求分发给指定的数据库,相当于请求转发这个样子 -->
<dataNode name="dn1" dataHost="host1" database="testdb" />
<dataNode name="dn2" dataHost="host2" database="testdb" />
<!-- 第一个数据库的配置等待引用 -->
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- 数据库的访问配置 ip以及用户名密码 -->
<writeHost host="hostM1" url="192.168.0.106:3306" user="root" password="123456">
</writeHost>
</dataHost>
<!-- 第二个数据库的配置等待引用 -->
<dataHost name="host2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.0.107:3306" user="root" password="123456">
</writeHost>
</dataHost>
</mycat:schema>
在服务器里创建真实库
在服务器里创建真实库testdb,testdb使我们在配置文件里指定的
两个数据库都要创建
106:
107:
启动
安装java-jdk:https://blog.csdn.net/qq_42094345/article/details/106954139
- 控制台启动 :去 mycat/bin 目录下执行 ./mycat console
- 后台启动 :去 mycat/bin 目录下 ./mycat start
为了能第一时间看到启动日志,方便定位问题,我们选择1控制台启动。
成功会有提示【successfully】
登陆mycat
mysql -umycat -p123456 -h 192.168.0.106 -P 8066
使用mysql命令登陆
用户名和密码是schema.xml 的 标签里面配置的用户名和密码
登陆成功
测试是否成功
我们创建一张t_user表看是否会创建在107的数据库里就可以
在mycat操作台执行ddl:
-- 进入mycat虚拟库
use TESTDB;
-- 创建t_user的表并查看是否成功
create table t_user(id int(11),name varchar(20));show tables;
创建成功:
接下来我们来看看106有没有这张表:
106没有是正确的因为我们把t_user的表分发到107上面了,纳闷门继续来看107有没有,如果107有则表示此次垂直分库成功:
107创建成功,本次垂直分库成功!
附:
下一篇会写水平分表如何做,一般项目中分布分表的规则就是垂直库+水平表,无非就是mycat配置了,想看的话请在我的分栏 - mycat学习笔记里找一下