从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分库分表,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
image-20210608135202725
> wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
> tar -xzvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
> cp -rf mycat /usr/local
> vim /etc/profile
MYCAT_HOME=/usr/local/mycat
export PATH=.:${PATH}:${MYCAT_HOME}/bin
> source /etc/profile
> vim conf/server.xml
<user name="test">
<property name="password">test</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
<property name="benchmark">11111</property>
<property name="usingDecrypt">1</property>
<privileges check="false">
<schema name="TESTDB" dml="0010">
<table name="tbl_user" dml="0110"></table>
<table name="tbl_dynamic" dml="1111"></table>
</schema>
</privileges>
</user>
TESTDB
是逻辑库
<user>
标签主要用于定义登录 mycat 的用户和权限,如上面,定义了一个用户,用户名为 test、密码也为 test,可访问的 schema 也只有 TESTDB 一个。
<property>
标签则是具体声明的属性值:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
#name的值需要和server.xml中的值对应
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
#需注释掉table标签,否则通过mycayt连接时创建的逻辑库中只会生成这travelrecord,address两张表,不会显示真实数据库中的表,注释掉后上面schema标签 需增加dataNode否则报错;
<!--
<table name="travelrecord,address" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" splitTableNames ="true"/>-->
</schema>
#name的值和上面schema标签中dataNode相匹配 databaHost可默认,database为真实数据库名称
<dataNode name="dn1" dataHost="localhost1" database="test" />
#name的值与dataNode中dataHost相匹配
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user</heartbeat>
<!-- can have multi write hosts -->
#只写服务器的信息,注意这边的密码为主从数据库中对mycat所在服务器授权的密码,并不是服务器的登录密码,可配置多个writeHost
<writeHost host="192.168.1.128" url="192.168.1.128:3306" user="root" password="123456">
<!-- can have multi write hosts -->
#读属于写,该标签配置只读服务器信息,如果写服务器宕机,读服务器也不能使用,也可配置多个读服务器标签
<readHost host="192.168.1.129" url="192.168.1.129:3306" user="root" password="123456" />
</writeHost>
</dataHost>
> mycat start
> mycat start 启动
> mycat stop 停止
> mycat console 前台运行
> mycat restart 重启服务
> mycat pause 暂停
> mycat status 查看启动状态
> mysql -uroot -p -P 8066 -h 192.168.1.127
MyCat默认的端口是
8066
> show databases; //查看所有库
TESTDB
> use TESTDB; //使用TESTDB库
> show tables; //查看TESTDB库中所有的表
one
> desc one; // 查看one表的结构
> tail -f logs/wrapper.log
Startup failed: Timed out waiting for a signal from the JVM.
JVM did not exit on request, terminated
> vim conf/wrapper.conf
wrapper.startup.timeout=300 //超时时间300秒
wrapper.ping.timeout=120
相关文章