MySQL skip_name_resolve参数的设置

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满了,则最近最少用的记录则被丢弃

 

posted @   江曹  阅读(2436)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示