暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hint语法使用说明

2023-12-18
337

本文介绍如何在读写模式为可读可写(自动读写分离)的集群地址中使用Hint语法。

使用限制

仅读写模式为可读可写(自动读写分离)的集群地址支持Hint语法,只读模式下的集群地址和主地址均不支持Hint语法。关于集群地址的读写模式信息,请参见集群地址的读写模式

注意事项

Hint的路由优化级别最高,不受一致性级别和事务拆分的约束,使用前请进行评估。

使用方法

  • 支持在SQL语句前加上/*FORCE_MASTER*//*FORCE_SLAVE*/强制指定这条SQL的路由方向。

    例如select * from test默认会路由到只读节点,改为/*FORCE_MASTER*/ select * from test就会路由到主节点。需要注意的是,/*FORCE_MASTER*/只能在可读可写的地址上生效,对于只读地址即使使用//*FORCE_MASTER*/也不会路由到主节点。

  • 支持在SQL语句前加上/*force_node='<节点ID>'*/强制指定在某节点执行某查询命令。

    例如/*force_node='pi-bpxxxxxxxx'*/ show processlist,该show processlist命令只在pi-bpxxxxxxxx节点执行。如果该节点发生故障,则返回报错force hint server node is not found, please check.

  • 支持在SQL语句前加上/*force_proxy_internal*/set force_node = '<节点ID>'强制指定在某节点执行所有查询命令。

    例如/*force_proxy_internal*/set force_node = 'pi-bpxxxxxxxx',执行该命令后,后续所有查询命令只发往pi-bpxxxxxxxx节点,如果该节点发生故障,则返回报错set force node 'rr-bpxxxxx' is not found, please check.

    说明

    • 若您需要通过MySQL官方命令行执行上述Hint语句,请在命令行中加上-c参数,否则该Hint会被MySQL官方命令行过滤导致Hint失效,具体请参见MySQL官方命令行

    • 通常不建议使用/*force_proxy_internal*/语法,会导致后续所有查询请求都发往该节点,读写分离失效。

    • Hint语句里不要有改变环境变量的语句,例如/*FORCE_SLAVE*/ set names utf8; 等,这类语句可能导致后续的业务出错。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论