MySQL DNS的使用过程详细分析
程序员文章站
2024-02-17 14:30:16
当 mysql 客户端连接 mysql 服务器 (进程为:mysqld),mysqld 会创建一个新的线程来处理该请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程...
当 mysql 客户端连接 mysql 服务器 (进程为:mysqld),mysqld 会创建一个新的线程来处理该请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名。
如果系统是线程安全的,则 gethostbyaddr_r () 和 gethostbyname_r() 被调用,来执行主机名解析;
如果系统不支持线程安全调用,则线程会锁定一个互斥体并调用 gethostbyaddr() 和 gethostbyname() 。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。
通过 --skip-name-resolve 选项启动 mysqld 来禁用dns主机名查找。此时,只可以使用 mysql 授权表中的 ip 地址,不能使用主机名。
如果 dns 解析很慢且包括许多主机,通过用--skip-name-resolve 禁用dns查找或增加host_cache_size定义(默认值:128)并重新编译mysqld来提高性能;
通过 --skip-host-cache 选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行 flush hosts 语句或执行 mysqladmin flush-hosts 命令。
如果要完全禁止 tcp/ip 连接,用 --skip-networking 选项启动 mysqld 。
如果系统是线程安全的,则 gethostbyaddr_r () 和 gethostbyname_r() 被调用,来执行主机名解析;
如果系统不支持线程安全调用,则线程会锁定一个互斥体并调用 gethostbyaddr() 和 gethostbyname() 。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。
通过 --skip-name-resolve 选项启动 mysqld 来禁用dns主机名查找。此时,只可以使用 mysql 授权表中的 ip 地址,不能使用主机名。
如果 dns 解析很慢且包括许多主机,通过用--skip-name-resolve 禁用dns查找或增加host_cache_size定义(默认值:128)并重新编译mysqld来提高性能;
通过 --skip-host-cache 选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行 flush hosts 语句或执行 mysqladmin flush-hosts 命令。
如果要完全禁止 tcp/ip 连接,用 --skip-networking 选项启动 mysqld 。
上一篇: 简单了解java函数式编码结构及优势
下一篇: 基于Java的正则表达式
推荐阅读
-
MySQL DNS的使用过程详细分析
-
使用Netbeans操作MySQL 数据库的方法(1)[组图]_MySQL
-
PL/SQL开发中动态SQL的使用方法_MySQL
-
基于ubuntu中使用mysql实现opensips用户认证的解决方法
-
使用MySQL Slow Log来解决MySQL CPU占用高的问题
-
mysql 无法连接问题的定位和修复过程分享
-
在EF中使用MySQL的方法及常见问题
-
详解使用pymysql在python中对mysql的增删改查操作(综合)
-
MySql5.6使用validate password 插件加强密码强度的安装及使用方法
-
thinkPHP使用pclzip打包备份mysql数据库的方法,thinkphppclzip_PHP教程