第一章 入门概述
 1.1 是什么
 Mycat 是数据库中间件。
 1、数据库中间件
 中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟
 通。
 例子:Tomcat,web中间件。
 数据库中间件:连接java应用程序和数据库
 2、为什么要用Mycat?
 1 Java与数据库紧耦合。
 2 高访问量高并发对数据库的压力。
 3 读写请求数据不一致
 3、数据库中间件对比
 
 1.Cobar属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数
 据库的schema,集群日处理在线SQL请求50亿次以上。由于Cobar发起人的离职,
 Cobar停止维护。
 2. Mycat是开源社区在阿里cobar基础上进行二次开发,解决了cobar存在的问题,并
 且加入了许多新的功能在其中。青出于蓝而胜于蓝。
 3. OneProxy基于MySQL官方的proxy思想利用c进行开发的,OneProxy是一款商业收费
 的中间件。舍弃了一些功能,专注在性能和稳定性上。
 4. kingshard由小团队用go语言开发,还需要发展,需要不断完善。
 5. Vitess是Youtube生产在使用,架构很复杂。不支持MySQL原生协议,使用需要大量
 改造成本。
 6. Atlas是360团队基于mysql proxy改写,功能还需完善,高并发下不稳定。
 7. MaxScale是mariadb(MySQL原作者维护的一个版本) 研发的中间件
 8.MySQLRoute是MySQL官方Oracle公司发布的中间件
Mycat的官网
 http://www.mycat.org.cn/
 1.2 干什么
 1、读写分离
 
 2、数据分片
 垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)
 
 3、多数据源整合
 
 1.3 原理
 Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语
 句,首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、
 缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,
 最终再返回给用户。
 
 这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用
 Mycat 还是 MySQL。
第二章 安装启动
 2.1 安装
 1、下载安装包
 下载对应的 tar 安装包,以及对应的 jar 包
 tar(zip)包 :
 http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template1.20.zip
 jar
 包 :
 http://dl.mycat.org.cn/2.0/1.21-release/ (下载最新的 jar 包)
 下载所需的 mycat2 的 fat jar 一般大小为 100mb 的一个 jar 文件
 把这个 jar 放进解压的 tar 中的 mycat\lib 文件夹下
 
 
 2、解压后即可使用
 把整合好的文件夹拷贝到 linux 下 /usr/local/
 
 3、修改文件夹及以下文件的权限
 修改成最高权限,否则运行启动命令时,会因权限不足而报错
 
 2.2 启动
 1、在mycat连接的mysql数据库里添加用户
 创建用户 ,用户名为mycat,密码为123456,赋权限,如下:
…
CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
--必须要赋的权限mysql8才有的
GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';
---视情况赋权限
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' ;
flush privileges;
…
2、修改mycat的prototype的配置
 启动mycat之前需要确认prototype数据源所对应的mysql数据库配置,修改对应的
 user(用户),password(密码),url中的ip
…
vim conf/datasources/prototypeDs.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"123123",
"type":"JDBC",
"url":"jdbc:mysql://localhost:3306/mydb1?useUnicode=true&serverTimezone=Asi
a/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
…
3、验证数据库访问情况
 Mycat 作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问
 情况。
mysql -uroot -p123123 -h 192.168.140.100 -P 3306
mysql -uroot -p123123 -h 192.168.140.99 -P 3306
#如远程访问报错,请建对应用户
grant all privileges on *.* to root@'缺少的host' identified by '123123';
4、启动mycat
 linux启动命令
cd mycat/bin
./mycat start
./mycat status
./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat install 添加到系统自动启动(暂未实现)
./mycat remove 取消随系统自动启动(暂未实现)
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态…
2.3 登录
 1、登录后台管理窗口
 此登录方式用于管理维护 Mycat
mysql -umycat -p123456 -P 9066
#常用命令如下:
show database
`
``
help;

2、登录数据窗口
此登录方式用于通过 Mycat 查询数据,我们选择这种方式访问 Mycat```java
mysql -umycat -p123456 -P 8066