全部產品
Search
文件中心

ApsaraDB RDS:在RDS MySQL上使用Hint文法

更新時間:Jun 19, 2024

本文介紹如何在RDS MySQL的讀寫分離情境下使用Hint文法。

限制

Hint文法僅支援讀寫分離地址,不支援唯讀地址。更多資訊,請參見什麼是讀寫分離

使用方法

  • 使用MySQL命令列進行串連並使用Hint語句時,需要在命令中增加-c選項,否則Hint會被MySQL命令列工具過濾。

  • 支援通過/*FORCE_MASTER*//*FORCE_SLAVE*/指定在主執行個體或備執行個體執行查詢命令。

    說明
    • 因為Hint的路由優先順序最高,例如Hint不受一致性、事務的約束,需要您評估是否可以用於業務。

    • Hint語句裡不能包含改變環境變數的語句,例如/*FORCE_SLAVE*/ set names utf8; ,可能導致後續業務出錯。

    • 如果唯讀節點的權重配置為0,但是使用Hint文法強制路由到該節點,用戶端串連會斷開。

  • 支援通過/*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*/文法,會導致後續所有請求都發往該執行個體,讀寫分離失效。