用戶認證
用戶賬號如果需要使用數據庫代理登錄,則必須賦予賬號遠程登錄權限,否則無法通過數據庫讀寫分離訪問。
操作步驟
1、連接TaurusDB實例。
2、實例連接成功后,執行下列SQL語句,查看使用的賬號的host是否包含數據庫讀寫分離地址。
SELECT user,host FROM mysql.user;


讀寫分離地址獲取方式:
- 登錄管理控制臺。
- 單擊管理控制臺左上角的
,選擇區域和項目。 - 在頁面左上角單擊

,選擇“數據庫 > 云數據庫TaurusDB”。 - 在“實例管理”頁面,選擇目標實例,單擊實例名稱,進入實例的“基本信息”頁面。
- 在左側導航欄,單擊“數據庫代理”。
方法一:在“數據庫代理”頁面中,在“代理地址”模塊“鏈接地址”,獲取當前實例的數據庫讀寫分離地址。
方法二:在“讀寫分離”頁面中,在“讀寫分離信息”模塊“讀寫分離地址”處,獲取當前實例的數據庫讀寫分離地址。
3、如果查詢的host不包含數據庫代理所在網段,則需要賦予遠程訪問權限。例如root用戶從192.168.0網段連接到TaurusDB數據庫:
GRANT
ALL PRIVILEGES ON . TO 'root'@'192.168.0.%' IDENTIFIED BY password WITH GRANT OPTION;
flush privileges;
4、當修改安全組時,確保入方向規則和出方向規則允許讀寫分離的地址訪問,讀寫分離默認端口號為3306。
- 登錄管理控制臺。
- 單擊管理控制臺右上角的

,選擇Region。 - 在頁面左上角單擊

,選擇“數據庫 > 云數據庫TaurusDB”。 - 在“實例管理”頁面,選擇目標實例,單擊實例名稱,進入實例的“基本信息”頁面。
- 在“基本信息”頁面中,在“網絡信息”模塊的“內網安全組”處,單擊安全組名稱,進入安全組頁面。
- 在入方向規則頁簽下,默認允許3306端口訪問。如果沒有該條規則,單擊“快速添加規則”,彈框頁面中勾選“MySQL(3306)”,單擊“確定”。
圖 放通3306端口


圖 快速添加3306端口


說明當您使用MySQL8.0客戶端訪問數據庫讀寫分離時,可能會報錯auth?user failed。
在連接數據庫時添加?--default-auth=mysql_native_password。
連接池設置
使用連接池時,需要設置連接探活機制,確保部分連接超時斷開時不會被繼續使用。
- jdbc連接池和Druid連接池設置:
testOnBorrow=true,
- HikariCP連接池設置:
connectionTestQuery=”SELECT 1”


讀請求路由到主實例的場景
- 如果查詢語句被放在事務中,事務請求都會路由到主實例。如果在查詢語句前設置set autocommit=0時也當做事務處理路由到主實例。
- 如果所有只讀節點都均異常或只讀節點權重為0時,則查詢會路由到主實例。對于成功開啟讀寫分離功能的實例,您可以設置其主實例和只讀實例的權重。
- 在執行SQL語句時:
如果執行了Multi-Statements(如“ insert xxx;select xxx ”),當前連接的后續請求會全部路由到主節點,需斷開當前連接并重新連接才能恢復讀寫分離。
帶鎖的讀操作(如SELECT for UPDATE)會被路由到主節點。
當使用 / FORCE_MASTER / 這個Hint語句時,會被路由到主實例。