内部命令是指使用自定义SQL指令, 对proxy内部状态进行查询和管控.

  • 内部命令包含两种,(1)与mysql兼容的内部命令,proxy直接处理回应客户端,不与observer交互;(2)proxy专用内部命令,该命令并不是对所有租户用户开放的,只有制定的租户or用户才有权限执行proxy专用内部命令;

  • 内部命令识别成功,但是在解析并封装数据包的过程中发生的错误,将统一返回客户端ERROR 4081 (HY000): Unknown result错误信息;

  • 对于内部命令仅部分能识别,但确定该命令一定是proxy内部的,如show proxysession ??等,proxy视其为错误的内部命令,统一返回客户端ERROR 5010 (21000): Unknown operator错误信息;

  • 对于proxy当前不支持的命令,默认将转发给observer进行处理.

使用权限

只有指定用户才能执行内部命令:

  1. root@sys, 对于observer的超级管理员, proxy内部命令权限对其完全开放, 所有request将首先经过obproxy进行过滤处理, 识别为(MySQL兼容+Proxy专用)内部命令的请求obproxy将直接处理并回应相应的报文, 识别失败的再转发到observer进行处理;

  2. root@proxysys, 对于proxy的超级管理员, 其所有request将不经过observer, obproxy将尝试客户端请求解析为内部命令(MySQL兼容+Proxy专用), 当识别不成功时统一返回客户端ERROR 5010 (21000): Unknown operator错误信息;

  3. 除以上两种之外的其他用户租户时, 其所有request将首先经过obproxy进行过滤处理, 识别为(MySql兼容)内部命令的请求obproxy将直接处理回应相应的报文, 识别失败的的再转发到observer进行处理; 对于proxy专用的内部命令不对其开放.

注意事项

mysql兼容内部命令, 目前也拥有权限限制.

  • observer的系统租户SYS可以show所有租户用户session, 但只能kill本租户内任意一个session;

  • proxy的超级管理员root@proxysys可以show所有集群租户用户session, 以及kill任意一个集群租户用户session;

  • 其他普通用户只能根据自身权限对相同租户用户下的session进行操作.