文档章节

修改Mysql的默认配置

紫系流月
 紫系流月
发布于 2017/09/08 22:47
字数 840
阅读 1
收藏 0

我理解了一些mysql的默认变量配置,这些默认配置在高压力的生产环境中被证明是有问题的,这些默认配置在网络震荡或一些其他情况下会产生一些让人非常讨厌的问题。

max_connect_errors

如果客户端连接mysql的时候有错误发生,服务器将会放弃等待在(connect_timeout)秒之后,并且会增加错误连接主机的计数。然后直到这个值达到(max_connect_errors)https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_connect_errors,然后客户端的ip会被锁定禁止连接,直到你执行 FLUSH HOST命令。更糟糕的情况是,如果你的网络不稳定,并且你一直不重启mysql服务器,这个错误会随着时间积累 直至在某个深夜给你造成无限麻烦。

阅读Mysql官网的文章(Host 'host name' is blocked)https://dev.mysql.com/doc/refman/5.7/en/blocked-host.html。不幸的是他们没有办法全完彻底的避免这种情况。这是这个值为0也不能避免这种情况。比较现实的解决方案是设置一个比较大的值 (max_connect_errors=1844674407370954751),并且时不时的运行一下FLUSH HOSTS命令。

connect_timeout

这个值和上面的问题相关.在网络拥堵的情况下(包含客户端和服务器),有可能在几秒钟之后完成连接。但是这个参数的默认值是5秒,当你尝试忽略这个错误,上面的max_connect_errors 会给你造成麻烦。

为了避免这种情况,可以尝试设置connect_timeout的值在15到20 之间。也可以考虑设置thread_cache_size为一个非零值。如果服务器需要在很短的时间内新建大量连接,这样的配置会非常有帮助.

skip-name-resolve

默认情况下对进入服务器的连接mysql会进行反向查找.在这种情况下,不管你的基础服务有多好,对DNS服务总是会有干扰.mysql 的主机缓存是为了将这些查找降到最低.但是这种情况困扰了我8年了.当有错误发生的时候,我只能假设在主机缓存或者解析器之中存在bug.

我推荐在/etc/my.cnf增加skip-name-resolve完全跳过DNS查找。只使用ip地址或者被允许的ip段.这样从DNS得到应答将会十分缓慢,非常容易的达到connect_timeout值。我猜测有2到3个DNS服务配置,但是第一个DNS服务是不可用的.

slave_net_timeout

当主数据库和从数据库之间的网络连接出现故障,但是主从都没有检测到(比如防火墙或者路由的改变)。你一定希望从服务器在slave_net_timeout秒之后可以自己明白发生了某些错误.他会尝试再次连接主服务器,在丢失连接的地方重新上线.这样就太了不起。

然而,这个值很令人沮丧 3600秒 整整一个小时.

如果发生某些错误,难道会有人希望他的从服务器空转吗?我不认为有人希望这种情况发生.

我的建议是你,如果你在一个非常混乱的环境,你可以设置这个值为30秒。

文章翻译自mysql

© 著作权归作者所有

共有 人打赏支持
紫系流月
粉丝 7
博文 8
码字总数 5293
作品 0
郑州
程序员
PHPWAMP配置应该如何修改,Web服务器、php、mysql的具体配置修改

phpwamp支持Nginx、apache、iis(均为完整版更稳定) 默认集成了多个php版本,包含TS与NTS,(支持自定义php版本) Mysql默认集成了mysql5.5、mysql5.6、mysql7(支持自定义Mysql版本) 今天...

Lccee
2017/10/07
0
0
Pentaho6.1资源库MySQL迁移

一、软件环境 操作系统:Windows10 64位 Pentaho版本: biserver-ce-6.1.0.1-196 MySQL版本:5.5.15 MySQL Community Server (GPL) JDK版本:Java 1.7.0_80 二、执行官方sql脚本文件 1、 sq...

灯下黑鬼吹灯
2016/11/10
546
4
CentOS7安装mysql5.7 使用YUM方式

1、配置YUM源 检查mysql源是否安装成功 看到上图所示表示安装成功。 可以修改源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0...

哥本哈根的小哥
08/16
0
0
centos7 配置mysql

1.配置yum源 检查mysql源是否安装成功 看到上图所示表示安装成功 2.安装mysql 3、启动MySQL服务 查看MySQL的启动状态 4、开机启动 5、修改root默认密码 mysql安装完成之后,在/var/log/mysq...

GOToo
01/23
0
0
CentOS7 64位下MySQL5.7安装与配置(YUM)

安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ 检查mysql源是否安装成功 看到上图所示表示安装成...

AnyLiem
01/14
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Java异常处理最佳实践

总结一些Java异常的处理原则 Java异常处理最佳实践 不要忘记关闭资源 在finally里关闭资源 public void readFile() { FileInputStream fileInputStream = null; File file = new Fil...

yysue
35分钟前
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
123
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部