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

MySQL 5.6 關閉 DNS 反向解析優化連線效能:skip-name-resolve 完整配置指南

     編輯:MySQL 綜合教學

MySQL 關閉 DNS 反向解析:消除連線延遲、修正 Host 快取警告完整指南

一、問題現象

錯誤日誌出現警告:

[Warning] IP address '104.223.72.XXX' has been resolved to the host name 
'104.223.72.XXX.static.quadranet.com', which resembles IPv4-address itself.

原因:MySQL 為每個新 TCP 連線執行反向 DNS 解析(IP → Hostname),再正向驗證(Hostname → IP)。防火牆/網路環境導致解析失敗或極慢,阻塞連線處理執行緒。

二、Host 快取機制

  • 記憶體內維護 IP → Hostname、錯誤計數 映射
  • 本地回環 (127.0.0.1/::1)、Unix Socket、Named Pipe、Shared Memory **不使用** Host 快取
  • 快取滿時用 LRU 淘汰
  • max_connect_errors 達標封鎖該 Host
  • FLUSH HOSTS 或 mysqladmin flush-hosts 清理快取解封

三、解決方案:關閉 DNS 解析

修改 /etc/my.cnf ([mysqld] 區段):

[mysqld]
skip-name-resolve

重啟服務:service mysqld restart

四、驗證生效

mysql> SHOW VARIABLES LIKE '%skip%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| skip_name_resolve      | ON    |
| skip_networking        | OFF   |
| skip_show_database     | OFF   |
+------------------------+-------+

五、副作用與應對

六、替代方案:保留解析但跳過快取

[mysqld]
skip-host-cache  # 不快取,每次都解析(不推薦,效能差)

七、適用場景建議

  • 內網/雲內網:強烈建議開啟 skip-name-resolve,IP 固定、無 DNS 依賴
  • 公網暴露:謹慎評估,需配合防火牆白名單
  • Docker/K8s 容器:服務發現用 DNS,通常**不關閉**,改優化 DNS 解析速度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
影響說明應對
GRANT/權限表 Host 欄位不再支援主機名,僅 IP權限配置改用 IP 或 %
SHOW PROCESSLISTHost 欄顯示 IP正常現象
複寫/從庫連線CHANGE MASTER TO MASTER_HOST 需用 IP配置檔/指令用 IP
應用程式連線JDBC/ODBC 連線字串用 IP修改配置