• MyCat的介绍与安装以及基本使用


    MyCat

    MyCat概述

    Mycat是数据库中间件,连接java应用程序和数据库。

    Java程序与数据库紧密关联耦合严重,高访问量高并发对数据库的压力巨大,因此可以引入数据库中间件MyCat解决。

    Mycat的官网:http://www.mycat.org.cn/mycat1.html

    Mycat学习指南:https://www.yuque.com/books/share/0576de75-ffc4-4c34-8586-952ae4636944

    GitHub地址:https://github.com/MyCATApache/Mycat-Server

    特性

    在这里插入图片描述

    核心功能

    1.读写分离

    Java操作MyCat,Mycat作为数据源访问,根据Java读、写请求分发到主从Mysql上,从而实现了读写分离。

    2.数据分片

    对数据库垂直拆分(分库)、对表水平拆分(分表)、对数据库垂直与表水平拆分(分库分表)

    3.多数据源整合

    Java操作MyCat,Mycat作为数据源访问,根据不同业务进行数据源划分,MyCat访问不同的数据源(MySql、MongoDB),从而实现多数据源整合。

    原理

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

    MyCat的基本使用

    安装MyCat

    下载地址:http://dl.mycat.org.cn/

    wget http://dl.mycat.org.cn/1.6.7.6/20220524101549/Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz
    
    • 1

    解压mycat

    tar -zxvf Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz
    
    • 1

    核心配置

    1.MYCAT_HOME/conf/schema.xml中定义逻辑库,表、分片节点等内容
    
    2.MYCAT_HOME/conf/rule.xml中定义分片规则
    
    3.MYCAT_HOME/conf/server.xml中定义用户以及系统相关变量,如端口等
    
    • 1
    • 2
    • 3
    • 4
    • 5
    [root@administrator mycat]# ls conf/
    autopartition-long.txt      dbseq.sql                    log4j2.xml                partition-range-mod.txt   sequence_db_conf.properties           server.xml            zkdownload
    auto-sharding-long.txt      dbseq - utf8mb4.sql          migrateTables.properties  rule.xml                  sequence_distributed_conf.properties  sharding-by-enum.txt
    auto-sharding-rang-mod.txt  ehcache.xml                  myid.properties           schema.xml                sequence_http_conf.properties         wrapper.conf
    cacheservice.properties     index_to_charset.properties  partition-hash-int.txt    sequence_conf.properties  sequence_time_conf.properties         zkconf
    
    • 1
    • 2
    • 3
    • 4
    • 5

    基本配置

    1.修改配置文件server.xml

    修改用户信息,由root用户改为mycat用户,与MySQL区分,同时这个账号是连接MyCat的账号

    110         <!--<user name="root" defaultAccount="true">-->
    110         <user name="mycat" defaultAccount="true">
    111                 <property name="password">123456</property>
    112                 <property name="schemas">TESTDB</property>
    113                 <property name="defaultSchema">TESTDB</property>
    114                 <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
    115 
    116                 <!-- 表级 DML 权限设置 -->
    117                 <!--            
    118                 <privileges check="false">
    119                         <schema name="TESTDB" dml="0110" >
    120                                 <table name="tb01" dml="0000"></table>
    121                                 <table name="tb02" dml="1111"></table>
    122                         </schema>
    123                 </privileges>           
    124                  -->
    125         </user>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.修改配置文件schema.xml

    先备份schema.xmlschema.xml.back

    cp schema.xml schema.xml.back
    
    • 1

    配置schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
    	<!-- 配置逻辑库 -->
    	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
    		<!-- 配置逻辑库下的表 -->
           <table name="mytb" primaryKey="id" dataNode="dn1" ></table>
        </schema>
    
    	<!-- 数据节点配置-->
    	<dataNode name="dn1" dataHost="host1" database="mydb" />
    
    	<!-- 节点具体配置-->
    	<dataHost name="host1" maxCon="1000" minCon="10" balance="0"  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
    		<!-- 心跳检测 -->
    		<heartbeat>select user()</heartbeat>
    		<writeHost host="hostM1" url="jdbc:mysql://localhost:3306" user="mycat"   password="123456"></writeHost>
    	</dataHost>
    
    </mycat:schema>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    启动MyCat

    ./mycat start 启动
    
    ./mycat stop 停止
    
    ./mycat console 前台运行
    
    ./mycat restart 重启服务
    
    ./mycat pause 暂停
    
    ./mycat status 查看启动状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    [root@administrator mycat]# bin/mycat console
    Running Mycat-server...
    wrapper  | --> Wrapper Started as Console
    wrapper  | Launching a JVM...
    jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
    jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
    jvm 1    | 
    jvm 1    | Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
    jvm 1    | MyCAT Server startup successfully. see logs in logs/mycat.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    测试验证

    MyCat安装、配置完毕后,就可以让应用程序、客户端连接MyCat,通过Mycat操作MySQL,从而实现程序与数据库的解耦。

    1.9066是MyCat管理窗口的端口,主要用于管理维护Mycat

    mysql -umycat -p123456 -P 9066 -h IP
    
    • 1

    2.8066是MyCat数据查询的端口,主要用于通过Mycat查询数据

    mysql -umycat -p123456 -P 8066 -h IP
    
    • 1
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | TESTDB             |
    +--------------------+
    14 rows in set (0.00 sec)
    
    mysql> use TESTDB;
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_mydb |
    +----------------+
    | mytb           |
    +----------------+
    1 row in set (0.01 sec)
    
    mysql> select * from mytb;
    +------+-------+
    | id   | name  |
    +------+-------+
    |    1 | mycat |
    +------+-------+
    1 row in set (0.00 sec)
    
    mysql> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    Mycat的安全设置

    标签权限控制

    1.user标签

    <!-- 应用程序连接中间件逻辑库的用户名 -->
    <user name="user">
    		<!-- 应用程序连接中间件逻辑库的密码 -->
    		<property name="password">user</property>
    		<!-- 逻辑库名称 -->
    		<property name="schemas">TESTDB</property>
    		<!-- true:只读;默认false:可读可写 -->
    		<property name="readOnly">true</property>
    		<!-- 默认逻辑库名称 -->
    		<property name="defaultSchema">TESTDB</property>
    </user>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.privileges标签

    privileges 标签可以对逻辑库(schema)、表(table)进行精细化的DML权限控制

    	<user name="mycat" defaultAccount="true">
    		<property name="password">123456</property>
    		<property name="schemas">TESTDB</property>
    		<property name="defaultSchema">TESTDB</property>
    		<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
    		
    		<!-- 表级 DML 权限设置 -->
    		<!-- 是否开启权限检查,默认false --> 		
    		<privileges check="false">
    			<schema name="TESTDB" dml="0110" >
    				<table name="tb01" dml="0000"></table>
    				<table name="tb02" dml="1111"></table>
    			</schema>
    		</privileges>		
    		 -->
    	</user>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    DML权限增加insert更新update查询select删除select
    0000NNNN
    0010NNYN
    1110YYYN
    1111YYYY

    SQL拦截

    firewall标签用来定义防火墙;firewall下whitehost标签用来定义IP白名单 ,blacklist用来定义SQL黑名单。

    1.白名单

    设置白名单,实现指定的某主机某用户可以访问Mycat

     <!-- 全局SQL防火墙设置 -->
      <firewall>
    	  <!--白名单 -->
         <whitehost>
           <!--白名单可以使用通配符%或着*-->
         	<!--对于127.0.0.1能以root账户登录-->
            <host host="1*7.0.0.*" user="root"/>
         </whitehost>
           <blacklist check="false">
           </blacklist>
      </firewall>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.黑名单

    设置黑名单,实现Mycat对具体SQL操作的拦截,如增删改查等操作的拦截。

     <!-- 全局SQL防火墙设置 -->
      <firewall>
      	<!--白名单 -->
         <whitehost>
           <!--白名单可以使用通配符%或着*-->
         	<!--对于127.0.0.1能以root账户登录-->
            <host host="1*7.0.0.*" user="root"/>
         </whitehost>
         	<!-- 黑名单 -->
           <blacklist check="true">
           		<!-- 禁止root用户进行删除操作 -->
           		<property name="deleteAllow">false</property>
           </blacklist>
      </firewall>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    配置项缺省值描述
    selelctAllowtrue是否允许执行SELECT语句
    deleteAllowtrue是否允许执行DELETE语句
    updateAllowtrue是否允许执行UPDATE语句
    insertAllowtrue是否允许执行INSERT语句
    createTableAllowtrue是否允许创建表
    setAllowtrue是否允许使用set语法
    alterTableAllowtrue是否允许执行Alter Table语句
    dropTableAllowtrue是否允许修改表
    commitAllowtrue是否允许执行commit操作
    rollbackAllowtrue是否允许执行roll back操作

    MyCat的常用管理命令

    9066是Mycat的管理端口,登录Mycat管理窗口:mysql -umycat -h127.0.0.1 -P9066 -p123456

    1.查看所有管理命令

    列出59个Mycat的管理命令

    mysql> show @@help;
    +--------------------------------------------------------------+--------------------------------------------+
    | STATEMENT                                                    | DESCRIPTION                                |
    +--------------------------------------------------------------+--------------------------------------------+
    | show @@time.current                                          | Report current timestamp                   |
    | show @@time.startup                                          | Report startup timestamp                   |
    | show @@version                                               | Report Mycat Server version                |
    | show @@server                                                | Report server status                       |
    | show @@threadpool                                            | Report threadPool status                   |
    | show @@database                                              | Report databases                           |
    | show @@datanode                                              | Report dataNodes                           |
    | show @@datanode where schema = ?                             | Report dataNodes                           |
    | show @@datasource                                            | Report dataSources                         |
    | show @@datasource where dataNode = ?                         | Report dataSources                         |
    | show @@datasource.synstatus                                  | Report datasource data synchronous         |
    | show @@datasource.syndetail where name=?                     | Report datasource data synchronous detail  |
    | show @@datasource.cluster                                    | Report datasource galary cluster variables |
    | show @@processor                                             | Report processor status                    |
    | show @@command                                               | Report commands status                     |
    | show @@connection                                            | Report connection status                   |
    | show @@cache                                                 | Report system cache usage                  |
    | show @@backend                                               | Report backend connection status           |
    | show @@session                                               | Report front session details               |
    | show @@connection.sql                                        | Report connection sql                      |
    | show @@sql.execute                                           | Report execute status                      |
    | show @@sql.detail where id = ?                               | Report execute detail status               |
    | show @@sql                                                   | Report SQL list                            |
    | show @@sql.high                                              | Report Hight Frequency SQL                 |
    | show @@sql.slow                                              | Report slow SQL                            |
    | show @@sql.resultset                                         | Report BIG RESULTSET SQL                   |
    | show @@sql.sum                                               | Report  User RW Stat                       |
    | show @@sql.sum.user                                          | Report  User RW Stat                       |
    | show @@sql.sum.table                                         | Report  Table RW Stat                      |
    | show @@parser                                                | Report parser status                       |
    | show @@router                                                | Report router status                       |
    | show @@heartbeat                                             | Report heartbeat status                    |
    | show @@heartbeat.detail where name=?                         | Report heartbeat current detail            |
    | show @@slow where schema = ?                                 | Report schema slow sql                     |
    | show @@slow where datanode = ?                               | Report datanode slow sql                   |
    | show @@sysparam                                              | Report system param                        |
    | show @@syslog limit=?                                        | Report system mycat.log                    |
    | show @@white                                                 | show mycat white host                      |
    | show @@white.set=?,?                                         | set mycat white host,[ip,user]             |
    | show @@directmemory=1 or 2                                   | show mycat direct memory usage             |
    | show @@check_global -SCHEMA= ? -TABLE=? -retry=? -interval=? | check mycat global table consistency       |
    | switch @@datasource name:index                               | Switch dataSource                          |
    | kill @@connection id1,id2,...                                | Kill the specified connections             |
    | stop @@heartbeat name:time                                   | Pause dataNode heartbeat                   |
    | reload @@config                                              | Reload basic config from file              |
    | reload @@config_all                                          | Reload all config from file                |
    | reload @@route                                               | Reload route config from file              |
    | reload @@user                                                | Reload user config from file               |
    | reload @@sqlslow=                                            | Set Slow SQL Time(ms)                      |
    | reload @@user_stat                                           | Reset show @@sql  @@sql.sum @@sql.slow     |
    | rollback @@config                                            | Rollback all config from memory            |
    | rollback @@route                                             | Rollback route config from memory          |
    | rollback @@user                                              | Rollback user config from memory           |
    | reload @@sqlstat=open                                        | Open real-time sql stat analyzer           |
    | reload @@sqlstat=close                                       | Close real-time sql stat analyzer          |
    | offline                                                      | Change MyCat status to OFF                 |
    | online                                                       | Change MyCat status to ON                  |
    | clear @@slow where schema = ?                                | Clear slow sql by schema                   |
    | clear @@slow where datanode = ?                              | Clear slow sql by datanode                 |
    +--------------------------------------------------------------+--------------------------------------------+
    59 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    2.重新加载配置文件

    只能重新加载Mycat常用配置文件,如果修改一些特殊的配置文件,需要重启Mycat

    mysql>reload @@config;
    Query OK, 1 row affected (0.07 sec)
    Reload config success
    
    • 1
    • 2
    • 3

    3.查看逻辑库

    mysql> show @@databases;
    +----------+
    | DATABASE |
    +----------+
    | TESTDB   |
    +----------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.查看数据节点

    mysql> show @@datanode;
    +------+------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    | NAME | DATHOST    | INDEX | TYPE  | ACTIVE | IDLE | SIZE | EXECUTE | TOTAL_TIME | MAX_TIME | MAX_SQL | RECOVERY_TIME |
    +------+------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    | dn1  | host1/mydb |     0 | mysql |      0 |   10 | 1000 |      12 |          0 |        0 |       0 |            -1 |
    | dn2  | host2/mydb |     0 | mysql |      0 |   10 | 1000 |      10 |          0 |        0 |       0 |            -1 |
    +------+------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    2 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意:可以使用\G进行格式化结果输出

    mysql> show @@datanode \G
    *************************** 1. row ***************************
             NAME: dn1
          DATHOST: host1/mydb
            INDEX: 0
             TYPE: mysql
           ACTIVE: 0
             IDLE: 10
             SIZE: 1000
          EXECUTE: 12
       TOTAL_TIME: 0
         MAX_TIME: 0
          MAX_SQL: 0
    RECOVERY_TIME: -1
    *************************** 2. row ***************************
             NAME: dn2
          DATHOST: host2/mydb
            INDEX: 0
             TYPE: mysql
           ACTIVE: 0
             IDLE: 10
             SIZE: 1000
          EXECUTE: 10
       TOTAL_TIME: 0
         MAX_TIME: 0
          MAX_SQL: 0
    RECOVERY_TIME: -1
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    5.查看逻辑库对应物理库所在的数据节点

    查看TESTDB逻辑库对应的物理数据库所在的数据节点

    mysql> show @@datanode where schema=TESTDB;
    +------+------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    | NAME | DATHOST    | INDEX | TYPE  | ACTIVE | IDLE | SIZE | EXECUTE | TOTAL_TIME | MAX_TIME | MAX_SQL | RECOVERY_TIME |
    +------+------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    | dn1  | host1/mydb |     0 | mysql |      0 |   10 | 1000 |      12 |          0 |        0 |       0 |            -1 |
    | dn2  | host2/mydb |     0 | mysql |      0 |   10 | 1000 |      10 |          0 |        0 |       0 |            -1 |
    +------+------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6.查看可用数据节点

    mysql> show @@heartbeat;
    +--------+-------+-----------+------+---------+-------+--------+---------+--------------+---------------------+-------+
    | NAME   | TYPE  | HOST      | PORT | RS_CODE | RETRY | STATUS | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME    | STOP  |
    +--------+-------+-----------+------+---------+-------+--------+---------+--------------+---------------------+-------+
    | hostM1 | mysql | localhost | 3306 |       1 |     0 | idle   |       0 | 14,14,14     | 2022-07-19 17:03:09 | false |
    | hostS1 | mysql | localhost | 3308 |       1 |     0 | idle   |       0 | 14,14,14     | 2022-07-19 17:03:09 | false |
    | hostM2 | mysql | localhost | 3307 |       1 |     0 | idle   |       0 | 14,14,14     | 2022-07-19 17:03:09 | false |
    | hostS2 | mysql | localhost | 3309 |       1 |     0 | idle   |       0 | 14,14,14     | 2022-07-19 17:03:09 | false |
    +--------+-------+-----------+------+---------+-------+--------+---------+--------------+---------------------+-------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    RS_CODE值说明:

    -1:代表连接出错
    
     0:初始化的状态
     
     1:代表连接后端的MySQL正常
     
     2:代表连接超时
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    7.查看连接信息

    1.查看上层应用连接Mycat的所有连接信息

    mysql> show @@connection;
    +------------+------+-----------+------+------------+-------+--------+---------+--------+---------+---------------+-------------+------------+---------+------------+
    | PROCESSOR  | ID   | HOST      | PORT | LOCAL_PORT | USER  | SCHEMA | CHARSET | NET_IN | NET_OUT | ALIVE_TIME(S) | RECV_BUFFER | SEND_QUEUE | txlevel | autocommit |
    +------------+------+-----------+------+------------+-------+--------+---------+--------+---------+---------------+-------------+------------+---------+------------+
    | Processor0 |    3 | 127.0.0.1 | 9066 |      58110 | mycat | NULL   | utf8:33 |    483 |    7788 |           246 |        4096 |          0 |         |            |
    +------------+------+-----------+------+------------+-------+--------+---------+--------+---------+---------------+-------------+------------+---------+------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以使用:kill @@connection ID的方式来杀死连接Mycat的进程

    mysql> kill @@ connection 3;
    
    • 1

    2.查看Mycat连接后端数据库的信息

    mysql> show @@backend;
    +------------+------+---------+-----------+------+--------+--------+---------+------+--------+----------+------------+--------+---------+---------+------------+-------------+
    | processor  | id   | mysqlId | host      | port | l_port | net_in | net_out | life | closed | borrowed | SEND_QUEUE | schema | charset | txlevel | autocommit | tx_readonly |
    +------------+------+---------+-----------+------+--------+--------+---------+------+--------+----------+------------+--------+---------+---------+------------+-------------+
    | Processor0 |   32 |       0 | localhost | 3309 |      0 |      0 |       0 |  812 | false  | false    |          0 |        |         |         |            |             |
    | Processor0 |    2 |       0 | localhost | 3306 |      0 |      0 |       0 | 1413 | false  | false    |          0 |        |         |         |            |             |
    | Processor0 |   34 |       0 | localhost | 3308 |      0 |      0 |       0 |  512 | false  | false    |          0 |        |         |         |            |             |
    | Processor0 |    4 |       0 | localhost | 3306 |      0 |      0 |       0 | 1413 | false  | false    |          0 |        |         |         |            |             |
    +------------+------+---------+-----------+------+--------+--------+---------+------+--------+----------+------------+--------+---------+---------+------------+-------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    8.查看Mycat中的缓存状态

    mysql> show @@cache;
    +-------------------------------------+-------+------+--------+------+------+-------------+----------+
    | CACHE                               | MAX   | CUR  | ACCESS | HIT  | PUT  | LAST_ACCESS | LAST_PUT |
    +-------------------------------------+-------+------+--------+------+------+-------------+----------+
    | ER_SQL2PARENTID                     |  1000 |    0 |      0 |    0 |    0 |           0 |        0 |
    | SQLRouteCache                       | 10000 |    0 |      0 |    0 |    0 |           0 |        0 |
    | TableID2DataNodeCache.TESTDB_ORDERS | 50000 |    0 |      0 |    0 |    0 |           0 |        0 |
    +-------------------------------------+-------+------+--------+------+------+-------------+----------+
    3 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    各缓存的类型说明:

    ER_SQL2PARENTID:缓存ER分片中,表与父表之间的关系
    
    SQLRouteCache:缓存SQL的路由信息
    
    TableID2DataNodeCache.TESTDB_ORDERS:缓存表与表的主键与分片的对应关系。如果主键不为分片键时,为了加快查询的速度,可以缓存主键与分片键的对应关系
    
    • 1
    • 2
    • 3
    • 4
    • 5

    9.查看数据节点所在主机节点

    mysql> show @@datasource;
    +----------+--------+-------+-----------+------+------+--------+------+------+---------+-----------+------------+
    | DATANODE | NAME   | TYPE  | HOST      | PORT | W/R  | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
    +----------+--------+-------+-----------+------+------+--------+------+------+---------+-----------+------------+
    | dn1      | hostM1 | mysql | localhost | 3306 | W    |      0 |   10 | 1000 |      12 |         2 |          0 |
    | dn1      | hostS1 | mysql | localhost | 3308 | R    |      0 |    8 | 1000 |      10 |         0 |          0 |
    | dn2      | hostM2 | mysql | localhost | 3307 | W    |      0 |   10 | 1000 |      10 |         0 |          0 |
    | dn2      | hostS2 | mysql | localhost | 3309 | R    |      0 |    8 | 1000 |       8 |         0 |          0 |
    +----------+--------+-------+-----------+------+------+--------+------+------+---------+-----------+------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    10.总结

    上述Mycat命令行操作便是常用于管理Mycat服务,更多命令行操作参考 show @@help命令

    Mycat命令行管理方式常用于管理单台Mycat服务,如果需要同时管理Mycat集群中的多个Mycat服务,就需要使用Mycat-Web进行管理。

    Mycat-Web性能监控

    Mycat-Web是Mycat可视化运维的管理和监控平台,帮助Mycat分担统计任务和配置管理任务。

    Mycat-Web引入了ZooKeeper作为配置中心,可以管理多个节点。

    Mycat-Web主要管理和监控Mycat的流量、连接、活动线程和内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分析慢SQL和高频SQL等。

  • 相关阅读:
    Spring源码解析——@Transactional注解的声明式事物介绍
    【设计模式】建造者模式
    open3d 点云去掉 nan 点和 infinite 点(附python open3d 代码)
    FPGA 学习笔记:IP Clocking Wizard 的基本操作
    linux 启动命令
    SpringCloud微服之Nacos的学习
    详细了解 synchronized 锁升级过程
    C到C++/编译过程/链接方式/内存模型/STL
    基于JAVA新冠疫苗接种管理系统设计与实现
    JDBC(Java数据库连接)
  • 原文地址:https://blog.csdn.net/qq_38628046/article/details/125831133