首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 遠程訪問極慢排查:skip_name_resolve 關閉 DNS 反向解析,連接速度提升數量級

     編輯:MySQL 綜合教學

現場

  • 內網應用正常,新增海外節點遠程訪問極慢。
  • 防火牆放行、ping/ssh 正常、MySQL 運行指標無異常。

根因定位

mysql> SHOW VARIABLES LIKE 'skip_%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
| skip_name_resolve     | OFF   |  <-- 關鍵:啟用 DNS 反向解析
| skip_networking       | OFF   |
| skip_show_database    | OFF   |
+-----------------------+-------+

MySQL 默認對每個新連接執行 DNS 反向解析(IP → 主機名),用於權限表 mysql.user 的 Host 欄位匹配。海外節點 DNS 解析延遲高、或無 PTR 記錄導致超時重試,直接卡住握手階段。

解決方案

1. 修改配置文件

[mysqld]
skip_name_resolve

2. 重啟生效驗證

mysql> SHOW VARIABLES LIKE 'skip_name_resolve';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| skip_name_resolve | ON    |
+-------------------+-------+

副作用與應對

副作用應對
權限表 mysql.user 不再支援主機名,僅能用 IP/通配符 %將現有 Host='hostname' 賬號改為 Host='IP' 或 Host='%'
SHOW PROCESSLIST 的 Host 列顯示 IP 而非主機名習慣適應,排查時直接用 IP 關聯防火牆/應用日志

最佳實踐建議

  1. 所有生產實例默認開啟 skip_name_resolve=ON:消除 DNS 依賴,穩定連接建立延遲。
  2. 權限管理統一用 IP/網段 或 %,避免主機名解析不穩定。
  3. 若業務強依賴主機名權限,考慮在應用層/Proxy 層做 IP→主機名映射,而非依賴 MySQL 內建解析。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved