參數類
更新時間 2025-03-27 10:41:23
最近更新時間: 2025-03-27 10:41:23
分享文章
本節介紹了全局參數相關問題與處理方法。
客戶端修改全局參數失敗
場景描述
客戶端修改全局參數,報錯“ERROR 1227 (42000): Access denied”。
原因分析
TaurusDB不支持在數據庫中執行修改全局參數的命令,需要通過管理控制臺修改。
解決方案
登錄管理控制臺修改參數。
步驟 1 登錄管理控制臺。
步驟 2 單擊管理控制臺右上角的
,選擇Region。
步驟 3 在頁面左上角單擊
,選擇“數據庫 > 云數據庫TaurusDB”。
步驟 4 在“實例管理”頁面,選擇指定的實例,單擊實例名稱,進入實例的基本信息頁面。
步驟 5 在左側導航欄中選擇“參數修改”,在“參數”頁簽查看并修改對應參數。
客戶端超時參數設置導致連接超時退出
場景描述
使用數據庫時,經常遇到連接退出,導致后續語句執行失敗的情況。
原因分析
在使用連接器或API連接數據庫時,客戶端會有一些默認的參數配置。其中有一些比較重要的參數如socketTimeout、connectTimeout等,會影響客戶端連接的超時時間。如果超過這個時間,一直沒使用的連接就會斷開。
解決方案
- 將socketTimeout、connectTimeout等參數的默認值調整為合適的值。
- 在程序中注意處理斷線重連的功能。
- 推薦直接使用連接池 。
修改全局變量成功但未生效
場景描述
使用Console上的參數修改功能修改long_query_time成功,但未生效。
原因分析
使用Console修改參數時,系統實際使用“set global 變量名=新的變量值;”修改全局參數。
在使用set global命令修改全局變量值時需要注意,該參數在當前連接和已經連接上數據庫的其他連接中是不生效的,只對新連接生效,所以此時將所有連接斷開重連,即可看到變量修改生效。
示例
舉例中使用的是命令的方式做描述。
- 創建會話1。
# 查看參數值。
show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.08 sec)
# 修改變量值
set global long_query_time=1;
Query OK, 0 rows affected (0.02 sec)
# 重新查看,發現未生效。
show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
- 創建會話2。
show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
- 在會話1中執行。
show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
- 會話2斷開,重新連接,發現修改生效。
show variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.01 sec)
TaurusDB timeout相關參數簡介
MySQL中有多種timeout參數,TaurusDB也將相關參數提供給用戶設置,如下表:
表 參數說明
| 參數名稱 | 修改是否需要重啟 | 參數含義 |
|---|---|---|
| connect_timeout | 否 | TaurusDB數據庫在回Bad handshake響應之前等待連接數據包的時間(秒)。 |
| innodb_flush_log_at_timeout | 否 | 每N秒寫入并刷新日志。當innodb_flush_log_at_trx_commit值為2時,此設置有效。 |
| innodb_lock_wait_timeout | 否 | 該變量控制innodb事務獲取行鎖等待的最長時間,如果超過該時間還未獲取到鎖資源,則會返回執行失敗 |
| parallel_queue_timeout | 否 | 請求并行執行的查詢的等待時間。如果超過該等待時間后,系統中并行執行的線程數仍然大于parallel_max_threads,則不再等待而進入單線程執行。 |
| lock_wait_timeout | 否 | 試圖獲得元數據鎖的超時時間(秒)。 |
| net_read_timeout | 否 | 中止讀數據之前從一個連接等待更多數據的秒數。 |
| net_write_timeout | 否 | 中止寫之前等待一個塊被寫入連接的秒數。 |
| interactive_timeout | 否 | 服務器在關閉交互式連接之前等待活動的秒數。 |
| wait_timeout | 否 | 服務器關閉連接之前等待非交互式連接活動的秒數。 |