linux中MyCat(分库分表)入门安装
什么是MyCat
-
一个彻底开源的,面向企业应用开发的大数据库集群 -
支持事务、ACID、可以替代MySQL的加强版数据库 -
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 -
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server -
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 -
一个新颖的数据库中间件产品
从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分库分表,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
下载MyCat
> wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
安装MyCat
> tar -xzvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
> cp -rf mycat /usr/local
配置MyCat
> vim /etc/profile
MYCAT_HOME=/usr/local/mycat
export PATH=.:${PATH}:${MYCAT_HOME}/bin
> source /etc/profile
配置MyCat
配置MyCat账号
> 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>
标签则是具体声明的属性值:
-
user 用户配置节点 -
name 登录的用户名,也就是连接Mycat的用户名 -
password 登录的密码,也就是连接Mycat的密码 -
readOnly true/false,限制用户是否只是可读的 -
benchmark 连接服务降级处理基准值,当前端的整体 connection 数达到基准值是, 对来自该账户的请求开始拒绝连接,0 或不设表示不限制 -
usingDecrypt 是否对密码加密默认 0 否 如需要开启配置 1,同时使用加密程序对密码加密 -
schemas 数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,dbs -
privileges 配置对用户的 schema 及下级的 table 进行精细化的 DML 权限控制,privileges 节点中的 check 属性是用于标识是否开启 DML 权限检查, 默认 false 标识不检查,当然 privileges 节点不配置,等同 check=false,由于 Mycat 一个用户的 schemas 属性可配置多个 schema ,所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。insert,update,select,delete 表示0000。如果设置了 schema , 但只设置了个别 table 或 未设置 table 的 DML,会自动继承 schema 的 DML 属性
配置schema.xml
<?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
> mycat start
常用命令
> mycat start 启动
> mycat stop 停止
> mycat console 前台运行
> mycat restart 重启服务
> mycat pause 暂停
> mycat status 查看启动状态
连接mycat
> 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表的结构
查看 Mycat 日志
> 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
相关文章
近期热文
入门小站
全栈入门知识
Official Account