Skip_name_resolve
Dynamic | No |
---|---|
Default Value | OFF |
默認值是off,也就是在檢查客戶端連接時在第一次要解析主機名(如果有開啟DNS服務器,則做 “ IP->hostname & hostname->IP反向解析 ”;如沒有開啟DNS,則不做解析);
連接成功則將信息存儲在host cache中。
Host Cache Operation
MySQL服務用host cache來保存非本地TCP連接,不保存127.0.0.1、::1和Unix socket創建的連接。
>由於保存了IP-to-Host列表,MySQL服務避免每次去做DNS檢查,只在第一次做解析和反解析
>host cache保存着一些連接錯誤信息,max_connect_errors決定了連接錯誤次數后鎖定該IP,鎖定后需要 Flushing the Host Cache來解除
host cache的行記錄如下:
1.當首次TCP客戶端連接通過一個給定的地址訪問MySQL服務,一行新的cache記錄被創建,記錄IP,host name,client 查找檢驗標識。初始,host name是null,標識是false,此條目還用於
后續同樣IP的客戶端連接
2.如果檢驗標識是false,MySQL服務嘗試IP-to-host name-to-IP DNS這樣的解決方式。如果成功則更新標識為true。如果嘗試的解決方式不成功,則分永久和短暫,如果永久失敗則置host
name為null,flag為true;如果是短暫失敗則保持host name為null,flag為false。
設置host cache的大小
[mysqld] host_cache_size=200
當連接失敗達到max_connect_error設置的次數,該host將被鎖定
[mysqld] max_connect_errors=10000
客戶端連接
1.一個應用的新建的客戶端連接過來,MySQL服務首先檢查host name是否在host cache,如果是,服務決定是否繼續提供請求看該主機是否被鎖住;
2.如果客戶端連接的不在cache,服務試圖去解析host name,嘗試IP-to-host name-to-IP DNS這樣的解決方式,如果一切正常則存儲信息到host cache;
3.如果cache滿了,則最近最少用的記錄則被丟棄