本文介绍如何在RDS MySQL实例上使用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*/语法,会导致后续所有请求都发往该实例,读写分离失效。