文章目录
前言
- 通过实战案例掌握MyCat的基本用法
一、准备数据库
四台服务器,其中三台用来搭建数据库,一台用来搭建MyCat。
下面通过docker的方式快速将三个数据库搭建出来。
1. 安装docker
2. 安装数据库
二、下载、解压Mycat
1. 下载
wget http://dl.mycat.org.cn/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz
2. 解压
tar -xzvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz
三、Mycat配置
主要的配置文件server.xml、schema.xml、rule.xml和具体的分片配置文件。
1. server.xml
包含系统配置信息
system标签: 例如字符集、线程数、心跳、分布式事务开关等等。
user标签:配置登录用户和权限。
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">db1</property>
</user>
2. schema.xml
schema在MySQL里面跟数据库是等价的。
schema.xml包括逻辑库、表、分片规则、分片节点和数据源,可以定义多个schema
这里面三个主要的标签(dataHost、dataNode、table):
2.1 dataHost标签
配置物理主机的信息,readhost是从属于writehost的。将三个数据库的地址配置到dataHost标签下
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="39.99.214.161:3306" user="root" password="123456"></writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="39.103.158.11:3306" user="root" password="123456"></writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
<dataHost name="host3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="39.103.137.201:3306" user="root" password="123456"></writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
2.2 dataNode标签
一个Node节点就是一个schema,相当于MySQL中的一个库,数据节点与物理数据库的对应关系。
<dataNode name="host1-db1" dataHost="host1" database="db1" />
<dataNode name="host2-db1" dataHost="host2" database="db1" />
<dataNode name="host3-db1" dataHost="host3" database="db1" />
2.3 table标签
<schema name="db1" checkSQLschema="true" sqlMaxLimit="100">
<!-- id取模分片 -->
<table name="t1" dataNode="host1-db1,host2-db1,host3-db1" primaryKey="id" autoIncrement="true" rule="mod-long" />
<!-- 全局表,会在每个节点保存一份完整表 -->
<table name="t2" type="global" primaryKey="id" autoIncrement="true" dataNode="host1-db1,host2-db1,host3-db1"/>
<!-- 单节点表 -->
<table name="t3" primaryKey="id" autoIncrement="true" dataNode="host1-db1"/>
</schema>
3. 配置java
检查环境变量配置:conf/wrapper.conf
wrapper.java.command=/usr/local/jdk1.8.0_181/bin/java