mycat常用后端管理命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat常用后端管理命令相关的知识,希望对你有一定的参考价值。

参考技术A mycat常用后端管理命令

首先通过show @@helap; 就可以大致的了解Mycat  管理端口的常用命令(dbserver.xml配置)!

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 = ?         | ReportdataNodes                          |

| 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 synchronousdetail  |

| 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 = ?           | Reportexecute 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 currentdetail            |

| show @@slow where schema = ?             |Report schema slow sql                    |

| show @@slow where datanode = ?           | Reportdatanode 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             |

| switch @@datasource name:index           | SwitchdataSource                         |

| kill @@connection id1,id2,...            | Killthe 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 = ?          | Clearslow sql by datanode                 |

+------------------------------------------+--------------------------------------------+

58 rows in set (0.00 sec)

1、连接mycat 9066管理端口

  命令:mysql -uusername -ppasswd -P9066 -hIP

  -u:用户名

  -p:密码

  -P:端口

  -h:ip地址例:linux路径切换到mycat安装路径的bin目录中:输入命令

显示如此则登录成功。

2、显示后端物理库连接信息,包括当前连接数,端口等信息。

   命令:Show @@backend

3、显示当前前端客户端连接情况

  命令:Show @@connection

4、当前线程池的执行情况,是否有积压(active_count)以及task_queue_size,后者为积压的待处理的SQL,若积压数目一直保值,

   则说明后端物理连接可能不够或者SQL执行比较缓慢

  命令:show @@threadpool;

5、当前后端物理库的心跳检测情况,RS_CODE为1表示心跳正常

  命令:show @@heartbeat;

6、显示数据节点的访问情况,包括每个数据节点当前活动连接数(active),空闲连接数(idle)以及最大连接数(maxCon) size,EXECUTE参数表示从该节点获取连接的次数,

   次数越多,说明访问该节点越多

  命令:show @@datanode;

6、显示当前processors的处理情况,包括每个processor的IO吞吐量(NET_IN/NET_OUT)、IO队列的积压情况(R_QUEY/W_QUEUE),Socket Buffer Pool的使用情况

 BU_PERCENT为已使用的百分比、BU_WARNS为Socket Buffer Pool不够时,临时创建的新的BUFFER的次数,若百分比经常超过90%并且BU_WARNS>0,则表明BUFFER

  不够,需要增大,参见性能调优手册。

  命令:show @@processor;

7、显示缓存的使用情况,对于性能监控和调优很有价值

  命令:show @@cache;

  MAX为缓存的最大值(记录个数),CUR为当前已经在缓存中的数量,ACESS为缓存读次数,HIT为缓存命中次数,PUT 为写缓存次数,LAST_XX为最后操作时间戳,比较重要的几个参数:CUR:若CUR接近MAX,而PUT大于MAX很多,则表明MAX需要增大,HIT/ACCESS为缓存命中率,这个值越高越好。

8、杀掉客户端的连接,参数为连接的ID值,通过show @@connection,可以展示当前连接到MyCAT的所有客户端进程,若某个进程异常,则可以通过该命令杀掉连接,如 KILL @@CONNECTION26907;

9、重新加载配置文件schema.xml

  如果我们在原有的schema.xml中进行了修改,需要重新加载该文件使其生效。

  命令:reload @@config;

MySQL——MyCat代理MySQL集群

一、MyCat代理MySQL集群

1.1 MyCat概述

  • 从定义和分类来看,它是一个开源的分布式数据库系统,
  • 是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,
  • 用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,
  • 也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
  • 名词:DB Proxy 数据库中间件

1.2 MyCat功能

  • 读写分离 M-S-S M-M-S-S
  • 负载均衡 Galera Cluster
  • 支持数据的分片自动路由与聚合

1.3 MyCat图示

在这里插入图片描述

二、Mycat实战详解

本实验基于MySQL集群做铺垫 双主双从架构

如未搭建,请参考 MySQL集群搭建

#使用Xshell的发送键到所有会话功能
[root@mycat ~]# vim /etc/hosts
192.168.100.254 mysql0.sixeleven.com
192.168.100.253 mysql1.sixeleven.com
192.168.100.252 mysql2.sixeleven.com
192.168.100.251 mysql3.sixeleven.com
192.168.100.250 mycat

2.1 MyCat实战案例

2.1.1 配置JAVA环境

因为Mycat是使用java编写的

[root@mycat ~]# tar -xvzf jdk-8u65-linux-x64.tar.gz -C /usr/local/ #加压java软件开发工具包
[root@mycat ~]# ln -s /usr/local/jdk1.8.0_65/ /usr/local/java      #创建软链接使其简洁

2.1.2 设置JAVA变量

[root@mycat ~]# vim /etc/profile
...
#文件最后添加三行
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH                           #设置JAVA变量,便于JAVA调用
[root@mycat ~]# source /etc/profile             #让系统读取省去重启时间
[root@mycat ~]# echo $JAVA_HOME                 #检查是否赋予变量
/usr/local/java
[root@mycat ~]# java -version                   #查看JAVA版本信息同时验证变量

2.1.3 下载并解压MyCat

官方站点:http://www.mycat.org.cn/

[root@mycat ~]# tar -xvzf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

2.2 配置MyCat前端

2.2.1 注释多余用户

[root@mycat ~]# vim /usr/local/mycat/conf/server.xml
<!--                              
        <user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
        </user>
-->                                  #user账户是默认账户,通过<!-- -->注释

2.2.2 启动MyCat管理员

        <user name="root">                                   #name="root"连接mycat数据库的账户
                <property name="password">123456</property>  #password 123456 连接mycat数据库的密码
                <property name="schemas">tianyun</property>  #schemas:tianyun 后方数据库群的统称

2.3 配置MyCat后端

[root@mycat ~]# cp /usr/local/mycat/conf/schema.xml . #备份文件

schema:架构

[root@mycat ~]# vim /usr/local/mycat/conf/schema.xml   #文中省略部分与本实验无关的内容
<?xml version="1.0"?>                                  #版本
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">            #文档声明
<mycat:schema xmlns:mycat="http://io.mycat/">          #官方地址声明

# 架构名称 tianyun(虚拟)   ↓       关闭库校验 ↓            每分钟支持最大100次        
        <schema name="tianyun" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema> #dataNode :数据节点 定义节点为dn1
       
        <!-- 中间部分删除 ovo -->
        
        <dataNode name="dn1" dataHost="localhost1" database="tianyun" />   #与前方tianyun数据节点关联

        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"  #表示具体的集群位置 maxcon最大链接 balance 均衡 详解如下注释
        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
#writeType:写类型详解如下注释  dbType:数据库类型 dbDriver:数据库驱动程序  switchType:交换类型解释如下 slaveThreshole:延迟时间 100毫秒 解释如下
                <heartbeat>select user()</heartbeat>  #健康状态检查
                
                <writeHost host="mysql0.sixeleven.com" url="mysql0.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611">
#writeHost:写主机  路径为mysql0.sixeleven.com 使用mycatproxy账户登陆面对后端等下进行授权
                        <readHost host="mysql2.sixeleven.com" url="mysql2.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" />  #写入从服务器地址
                        <readHost host="mysql3.sixeleven.com" url="mysql3.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" />
                </writeHost>
                
				<writeHost host="mysql1.sixeleven.com" url="mysql1.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611">
                        <readHost host="mysql2.sixeleven.com" url="mysql2.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" />  #写入从服务器地址
                        <readHost host="mysql3.sixeleven.com" url="mysql3.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" />
                </writeHost>
        </dataHost>
</mycat:schema>

★ 文件中某些属性的具体解释 ★

#balance类型
balance:0 关闭读写分离,所有读操作都随机的发送到readHost
balance:1 开启读写分离,所有操作都随机发送到readHost
#writeType类型
备份型:1、writeType=0 所有写操作发送到配置的第一个writeHost
		第一个挂了切换到还生存的第二个writeHost
		重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
负载型:2、writeType=1 所有写操作都随机的发送到配置的writeHost
#switchType模式
switchType:指的是切换的模式,目前的取值也有四种
switchType=-1 负一表示不自动切换
switchType=1 默认值,表示根据延时自动切换
switchType=2 根据MySQL主从同步的状态决定是否切换,心跳语句为show slave status
#slaveThreshole
主从的延迟在多少秒以内,则把读请求分发到这个从节点,否则不往这个节点分发
假设生产环境能容忍的主从延迟为60秒,则设置此值为60,此例中设置值为100

2.4 配置MySQL集群

M-M-S-S 基于双主双从数据库集群架构

[root@mysql0 ~]# mysql -uroot -p'Pakho@611'
mysql> grant all on *.* to 'mycatproxy'@'mycat' identified by 'Pakho@0611'; #为mycat服务器
mysql> flush privileges;

2.5 启动MyCat

mycat 192.168.100.250

[root@mycat ~]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...
[root@mycat ~]# netstat -anpt | grep java          #查看端口并过滤JAVA端口

在这里插入图片描述

[root@mycat ~]# cat /usr/local/mycat/logs/*           #如有报错可以查看mycat日志 

2.6 安装Mariadb客户端测试

[root@mycat ~]# ps aux | grep mycat
[root@mycat ~]# yum -y install mariadb                #为了验证数据库集群可用性也尽量节省资源在本机安装客户端测试

2.7 在主服务器上创库创表

mysql0 192.168.100.254

[root@mysql0 ~]# mysql -uroot -p'Pakho@611'
mysql> create database tianyun;
mysql> create table tianyun.t1 (id int);
mysql> insert into tianyun.t1 values (1);
mysql> flush privileges;

2.8 测试检查

2.8.1 在MyCat上查看数据

[root@mycat ~]# mysql -hmycat -uroot -p123456 -P8066
MySQL [(none)]> show databases;
MySQL [(none)]> use tianyun;
MySQL [tianyun]> select * from tianyun.t1;

在这里插入图片描述

MySQL [tianyun]> insert into tianyun.t1 values (2);  #在Mycat服务器插入数据在主服务器查看

2.8.2 在主服务器上查看数据

mysql0 :192.168.100.254

mysql> select * from tianyun.t1 ;

在这里插入图片描述
在MySQL集群能够查询到数据,实验完成!

三、总结一下

3.1 关于MyCat后端配置文件的总结

此内容及上述实验仅限于双主双从架构

如下图为刚才后端配置文件总结
在这里插入图片描述

3.2 关于企业数据库服务器过多,如何进行设置?

用户名的设置
在这里插入图片描述
Mycat后端配置文件的设置
在这里插入图片描述

以上是关于mycat常用后端管理命令的主要内容,如果未能解决你的问题,请参考以下文章

mysql 第十五篇文章~mycat常用管理命令

MyCat 9066管理端口常用命令

管理mycat命令详解

MySQL——MyCat代理MySQL集群

Mycat实现读写分离

Mycat 配置文件概述