Mycat-01-概述

是什么

Mycat 是数据库中间件。

为什么要用Mycat

  1. Java与数据库紧耦合。
  2. 高访问量高并发对数据库的压力。
  3. 读写请求数据不一致

Mycat官网

https://github.com/MyCATApache/

中文网站: http://mycat.org.cn/

干什么

读写分离
在这里插入图片描述

数据分片

垂直拆分(分库) 、 水平拆分(分表) 、 垂直+水平拆分(分库分表)
在这里插入图片描述

多数据源整合
在这里插入图片描述

原理

Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库, 并将返回的结果做适当的处理,最终再返回给用户。

这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用 Mycat 还是MySQL。

安装启动

安装

下载&安装

国内下载: http://dl.mycat.org.cn/ 查看release清单,

选定1.6.7.4-release

[root@vm1 opt]# wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

[root@vm1 opt]# tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

[root@vm1 opt]# cp -r  mycat/ /usr/local/

[root@vm1 mycat]# ll
总用量 12
drwxr-xr-x 2 root root  190 5月  13 21:30 bin
drwxr-xr-x 2 root root    6 5月  13 21:30 catlet
drwxr-xr-x 4 root root 4096 5月  13 21:30 conf
drwxr-xr-x 2 root root 4096 5月  13 21:30 lib
drwxr-xr-x 2 root root    6 5月  13 21:30 logs
-rwxr-xr-x 1 root root  227 5月  13 21:30 version.txt

三个配置文件

  1. schema.xml: 定义逻辑库,表、分片节点等内容
  2. rule.xml: 定义分片规则
  3. server.xml: 定义用户以及系统相关变量,如端口等.

配置

server.xml

<!-- 为了跟mysql root用户区分,这里用户名改为mycat -->
<user name="mycat" defaultAccount="true">
        <property name="password">123456</property>
        <!-- mycat 逻辑库-->
        <property name="schemas">TESTDB</property>
        <property name="defaultSchema">TESTDB</property>
        <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->

        <!-- 表级 DML 权限设置 -->
        <!--            
        <privileges check="false">
                <schema name="TESTDB" dml="0110" >
                        <table name="tb01" dml="0000"></table>
                        <table name="tb02" dml="1111"></table>
                </schema>
        </privileges>           
         -->
</user>

schema.xml

<!-- dataNode 指定数据节点-->
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
</schema>

<!-- 
     dataHost 指定虚拟主机 
     database 指定数据库
-->
<dataNode name="dn1" dataHost="host1" database="sm_01" />

<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
                  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <!--心跳检测 -->
        <heartbeat>select user()</heartbeat>

        <!-- write 主机, read主机-->
        <writeHost host="hostM1" url="vm1:3306" user="root" password="123456">
                <readHost host="hostS1" url="vm2:3306" user="root" password="123456"></readHost>
        </writeHost>
</dataHost>

vim 如何显示行号? :set nu

启动

验证数据库能否访问

[root@vm1 conf]# mysql -h vm1 -P 3306 -uroot -p123456

[root@vm1 conf]# mysql -h vm2 -P 3306 -uroot -p123456

启动程序

#1. 控制台启动 ---  能看到启动日志,方便定位问题
[root@vm1 bin]# ./mycat console

#2. 后台启动
[root@vm1 bin]# ./mycat start

登录

登录后台管理窗口(9066)

此登录方式用于管理维护mycat.

[jhs@vm2 ~]$ mysql -umycat -p123456 -P 9066 -h vm1
mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |
+----------+

mysql> show @@help;查看帮助信息

在这里插入图片描述

登录数据窗口(8066)

此登录方式用于通过 Mycat 查询数据,我们选择这种方式访问 Mycat

[jhs@vm2 ~]$ mysql -umycat -p123456 -P 8066 -h vm1

mysql> use TESTDB;
Database changed

mysql> show tables;
+-----------------+
| Tables_in_sm_01 |
+-----------------+
| test_book       |
+-----------------+
1 row in set (0.01 sec)

此时,vm1和vm2的 sm_01库上,实际上确实是有且只有一张表test_book.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值