本文介绍如何在RDS MySQL实例上使用Hint语法。
限制
Hint语法仅支持读写分离地址,不支持只读地址。更多信息,请参见读写分离。
使用方法
- 使用MySQL命令行进行连接并使用Hint语句时,需要在命令中增加
-c
选项,否则Hint会被MySQL命令行工具过滤。 - 支持通过
/*FORCE_MASTER*/
和/*FORCE_SLAVE*/
指定在主实例或备实例执行查询命令。说明- 因为Hint的路由优先级最高,例如Hint不受一致性、事务的约束,需要您评估是否可以用于业务。
- Hint语句里不能包含改变环境变量的语句,例如
/*FORCE_SLAVE*/ set names utf8;
,可能导致后续业务出错。
- 支持通过
/*force_node='<实例ID>'*/
命令指定在某个实例执行查询命令。例如/*force_node='rr-bpxxxxx'*/ show processlist;
,该show processlist;
命令只在rr-bpxxxxx实例执行。如果这个实例发生故障,则返回报错force hint server node is not found, please check.
。 - 支持通过
/*force_proxy_internal*/set force_node = '<实例ID>';
命令永久指定在某个实例执行查询命令。例如/*force_proxy_internal*/set force_node = 'rr-bpxxxxx';
,执行该命令后,后续所有命令只发往rr-bpxxxxx实例,如果这个实例发生故障,则返回报错set force node 'rr-bpxxxxx' is not found, please check.
。说明 通常不建议使用/*force_proxy_internal*/
语法,会导致后续所有请求都发往该实例,读写分离失效。