快速学习&搭建mycat

正文

什么是Mycat?

Mycat是一个开源的分布式数据库系统,数据库中间件。可以将之理解为数据库的代理,它屏蔽了物理数据库,应用连接MyCat,然后MyCat再连接物理数据库。

有什么用?

当我们的应用只需要一台数据库服务器的时候我们并不需要Mycat,而如果你需要分库甚至分表,这时候应用要面对很多个数据库的时候,这个时候就需要对数据库层做一个抽象,来管理这些数据库,而最上面的应用只需要面对一个数据库层的抽象或者说数据库中间件就好了,这就是Mycat的核心作用。

怎么用(搭建&应用)?

注意:

  • 搭建mycat之前,至少须搭建好一个mysql数据库。
  • 下载相应版本的Mycat :mycat下载 http://www.mycat.io/(这里使用的是windows->学习起来比较快)
  • 解压就能用。。嗯,感觉这个文章写到这里没有一点意义
  • 进入目录,双击 startup_nowrap.bat 文件,搭建完成。(windows环境这样操作,linux 环境运行 ./mycat start,之前操作和windos一样)
  • 打开cmd,输入 mysql -h127.0.0.1 -P8066 -uroot -p123456(8066端口那个P一定要大写)看是否能进入mysql命令行模式

使用:

进入解压的mycat目录

bin          mycat命令,启动、重启、停止等
catlet      catlet为Mycat的一个扩展功能
conf        Mycat 配置信息,重点关注()
lib           Mycat引用的jar包,Mycat是java开发的
logs        日志文件,包括Mycat启动的日志和运行的日志。

进入conf目录里面,主要修改Mycat的配置文件有三个:

server.xml        Mycat的配置文件,设置账号、参数等
schema.xml     Mycat对应的物理数据库和数据库表的配置
rule.xml            Mycat分片(分库分表)规则
  1. server.xml

    123456
    TESTDB
    false




schemas属性:数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,db2
privileges属性:配置用户针对表的增删改查的权限,具体见文档吧

  1. schema.xml



    
        
select user(); select user(); select user()

schema 数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应
dataNode 分片信息,也就是分库相关配置
dataHost 物理数据库,真正存储数据的数据库

schema:
name 逻辑数据库名,与server.xml中的schema对应
checkSQLschema 数据库前缀相关设置,建议看文档,这里暂时设为folse
sqlMaxLimit select 时默认的limit,避免查询全表

table:
name 表名,物理数据库中表名
dataNode 表存储到哪些节点,多个节点用逗号分隔。节点为下文dataNode设置的name
primaryKey 主键字段名,自动生成主键时需要设置
autoIncrement 是否自增
rule 分片规则名,具体规则下文rule详细介绍

dataNode
name 节点名,与table中dataNode对应
datahost 物理数据库名,与datahost中name对应
database 物理数据库中数据库名

dataHost
name 物理数据库名,与dataNode中dataHost对应
balance 均衡负载的方式
writeType 写入方式
dbType 数据库类型
heartbeat 心跳检测语句,注意语句结尾的分号要加。

  1. rule.xml
    Mycat支持10种分表分库的规则,基本能满足需求
    table中的rule属性对应的就是rule.xml文件中tableRule的name,具体有哪些分表和分库的实现,建议还是看下文档。这里选择的mod-long就是将数据平均拆分。因为我后端是两台物理库,所以rule.xml中mod-long对应的function count为2,见下面部分代码:
    1543230112(1).jpg

    这里有其中一个分片规则,还有很多,详情参照下文档。

遇到问题

  1. 一般来讲分片的数据库在插入时,一定要将字段确认sql中,否则会报异常。
  2. 分片时,分片的表结构和字段一定要一致。如不一致会显示第一个分片表结构(有风险)。

你可能感兴趣的:(快速学习&搭建mycat)