
# 数据库代理的约束与限制
#### 版本约束
- 以下TaurusDB实例内核版本，不支持开通数据库代理。
  - 大于等于2.0.26.2且小于等于2.0.28.3
  
  - 等于2.0.29.1
   
- TaurusDB实例内核版本低于2.0.42.230601时，仅支持创建1个代理实例。
- TaurusDB实例内核版本高于或等于2.0.42.230601时，最多支持创建4个代理实例。
内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。
#### 功能限制
表1数据库代理注意事项 
| **分类**   | **注意事项**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| 不支持的功能   | - 数据库代理不支持压缩协议。  - 数据库代理仅支持库级权限校验，不支持校验单表的权限。  - 数据库代理不支持使用**show errors** 和**show warnings**命令。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| HTAP实时分析 | - 不支持一致性级别和连接池。  - 路由模式仅支持权重负载模式。  - 代理模式仅支持读写模式。  - 如果数据库代理关联了HTAP实例，则在HTAP实例上创建的账户名和密码必须与连接数据库代理时使用的账户名和密码一致，否则无法通过数据库代理将请求分流至HTAP实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 使用约束     | - 至少创建1个只读节点才能开启读写分离功能。  - 开启读写分离功能后，不允许修改TaurusDB实例的端口。  - 当使用数据库代理时，不能使用中文数据库和中文用户名。  - 开启读写分离功能后，删除TaurusDB实例，会同步删除代理实例。  - rdsProxy是数据库代理账户，属于数据库内置账号，建议您不要创建同名账户，避免影响读写分离功能正常运行。  - 读写分离不支持MySQL 8.0的caching_sha2_password身份认证插件。  - 当使用数据库代理时，批量提交执行SQL不超过100条，多语句拼接的SQL大小不超过100MB，避免数据库代理解析SQL消耗过多的资源。  - 使用.net客户端连接数据库代理时，需要客户端的MySQL.Data驱动版本不低于8.0.19，低版本MySQL.Data与数据库代理存在兼容性风险。      |
| 语法限制     | - 使用代理地址时，**show processlist** 和直连数据库有差异。因为数据库代理的**show processlist**是逻辑的，仅仅将通过数据库代理节点下发的业务展示出来，所以和直连数据库有差异。  - 当某一个代理节点处于异常状态时，通过代理执行**show processlist** 或者**Kill**时，有可能会出现命令执行时间稍微变长的情况，此时无需关注，业务不会受到影响。  - 当数据库代理进行缩容后，通过代理执行**show processlist**命令时，可能会将被缩容的节点上的业务展示出来。  - 通过数据库代理进行**Kill** 时，偶尔可能会出现超时等报错信息，此时可以通过再次执行**show processlist** 查看业务是否真正被**Kill**成功。  - 当数据库代理的某个节点处于异常状态时，执行**show processlist**命令时，可能会出现2秒卡顿，此时无需关注，结果会正常返回。  - 使用读写分离的连接地址时，如果存储过程(**procedure** )和函数(**function** )中依赖了用户变量，即**@variable**，则运行结果可能不正确。  - 如果开启了会话连接池，SELECT LAST_INSERT_ID() 的结果将始终为 0。   |
   
