在使用Mysql的过程中,你总是会遇到这样那样的问题,每次去网上查找也相对比较麻烦,所以在此整理一下(以linux ubantu16 系统为例)。

=====================================================================

本文由 www.webfunny.cn 前端监控提供;只需要简单几步就可以搭建一套属于自己的前端监控系统,快来试试吧 ^ _ ^。

=====================================================================

1. mysql 连接数太多(SequelizeConnectionError: Too many connections)

这个就是最常见的问题了。因为我做的这个是前端监控系统,日志上报量比较大,所以经常会遇到连接数不够用的情况。 除了你要使用其他技术来缓解并发量,还需要适当的设置mysql数据库的最大连接数。那么怎么增加mysql的最大连接数呢,设置多大为合适呢,这又是一个比较麻烦的问题了。下边是我的一些浅见,仅供参考。

首先我们需要登录mysql, 进入mysql的命令行:

查看当前mysql的连接数:

mysql> show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 403 |
+----------------------+-------+
1 row in set (0.00 sec)

如何设置mysql的最大连接数呢?

第一种方法:通过mysql命令设置(这种方法是临时性的,重启mysql以后就会失效)

mysql> set GLOBAL max_connections=2000;
Query OK, 0 rows affected (0.00 sec)

第二种方法:进入mysql目录(/usr/local/mysql)找到my.cnf文件,添加如下配置(注意:最大连接数不要设置过大,有可能会在启动的时候爆掉哦),然后执行命令$: service mysql restart

[mysqld]
max_connections=1000

Mysql的最大连接数设置多少合适呢?

对照阿里云的TCP连接数来看一下,阿里云的TCP连接数可以看出瞬间并发量的多少,然后跟我们的数据库连接数做个对比。正常情况下TCP连接数为1K左右的时候,MySQL的连接数为400左右。本来瞬间的并发量能达到9K, 但是我将一部分流量导入到其他服务器上,所以现在最高的并发量能够达到3.4K。当最大3.4K并发量的时候,有两台服务器同时访问mysql,我的数据库连接数是1153个左右。

 

所以,如何设置mysql最大连接数,可以参考一下我的这个数值。

2. Mysql连接错误太多(SequelizeConnectionError: Host 'xx.xx.xx.xx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts')

这个问题并不常见,因为一般mysql的默认值是100。只有当同一个IP对mysql访问出现100次连接错误的时候,mysql就会拒绝这个ip的请求访问。因为我的日志服务和数据库是分离的,所以,经常会在量大的时候出现这个问题。

查看连接报错配置:

mysql> show variables like '%max_connect_errors%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| max_connect_errors | 100 |
+--------------------+-------+
1 row in set (0.01 sec)

单个ip连接报错查询:

select SUM_CONNECT_ERRORS as count from performance_schema.host_cache where ip='xxx.xxx.xxx.xxx'

设置连接数报错最大数量:

mysql> set GLOBAL max_connect_errors=1000;
Query OK, 0 rows affected (0.00 sec)

3. mysql字符集配置错误,导致无法插入数据库(Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation)

  在数据库执行查找的命令,判断条件含有特殊字符,再执行的时候报了以上错误;

  查看字段编码发现是 latin1 字符集的latin1_german1_ci排序规则,而数据库是utf-8编码,确定错误是编码导致。

  修改数据库字段为utf-8编码  再次执行 顺利查出结果

  

Mysql连接数过多、Mysql连接错误过多的问题处理的更多相关文章

  1. 微软云Linux服务器 Mysql、tomcat远程连接错误解决办法

    在微软云linux服务器成功配置好mysql.tomcat,通过外部链接却发现一直错误.Mysql 一直提示错误代码2003, tomcat连接一直提示EOF. 反复检查配置都无问题,最后得知是微软云 ...

  2. MYSQL与Navicat的连接错误问题

    唱,跳,RAP,Basketball MySQL版本安装 遇到的一个坑(密码加密规则被修改导致Navicat连接不上) 众所周知,老师的一些任务,往往做起来不是很困难,只要按着步骤就可以,但是在程序的 ...

  3. 连接mysql用mysql_connect不能连接

    用mysqli_connect就可以解决. mysqli_array()有连个参数,第一个是连接mysql名. php遇到这个警告Warning: Use of undefined constant ...

  4. mysql 连接数过多内存增长过快

    mysql连接允许长连接和短链接,但是本身建立连接会有很大开销所以一般连接mysql会使用长连接.但是全部是使用长连接后,可能会出现mysql有时占用内存涨的特别快,这是因为mysql在执行过程中临时 ...

  5. 等保审核 --- MySQL密码复杂度--和连接错误超时等

    系统版本: Centos 7 MySQL版本: 5.7.19 架构: 主从架构 审计插件: validate_password.so(数据库自带5.6后版本都拥有此插件) 操作过程: 1). 安装va ...

  6. 【先定一个小目标】怎么解决mysql不允许远程连接的错误

    最近使用Navicat for MySQl访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to ...

  7. Navicat for mysql 远程连接 mySql数据库10061、1045错误

    原文地址:http://www.111cn.net/database/mysql/46377.htm 有朋友可能会碰到使用Navicat for mysql 远程连接 mySql数据库会提示10061 ...

  8. 我用工具怎么连接不上mysql数据库的? MySql access denied for user错误

    MySql access denied for user错误 方法/步骤   MySql远程连接时的"access denied for user **@**"错误,搞的我很头大, ...

  9. 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server

    这段时间在研究火车头的入库教程,在“配置登陆信息和数据库(mysql)”连接中,出现“服务器连接错误Host 'XXX' is not allowed to connect to this MySQL ...

随机推荐

  1. Hyperparameters

    参数是机器学习算法的关键.它们通常由过去的训练数据中总结得出.在经典的机器学习文献中,我们可以将模型看作假设,将参数视为对特定数据集的量身打造的假设. 模型是否具有固定或可变数量的参数决定了它是否可以 ...

  2. 从Oop-Klass模型看透反射

    <红楼梦>第十二回,贾瑞因痴迷王熙凤,被王熙凤折腾的眼看就快不行了.当然这里面是没有多少爱的,完全因王熙凤的美貌而起.就在这时来了一个跛足道人,带来了一面宝镜,说能治好贾瑞的病.当然这可不 ...

  3. ABP 报错1

    报错:.net core 2.2 HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure 解决:安装.net core 2.2就解决了, 本地安装 ...

  4. postman使用--Monitor

    前戏 现在我们已经能完成接口的批量执行,添加断言,数据驱动,设置变量等等方法.但是有一天,用户反应说我们的网站访问不了了.这时候,那帮程序猿查日志的查日志,看数据库的看数据库,找到原因在发布到线上已经 ...

  5. 通过rpm安装crontab

    可以在对应的虚拟机centos上查看 所安装的crontab安装信息,然后选中rpm包进行安装,命令:rpm -qa |grep cron 如: 如没有上述信息,表名没有安装,也可以直接用cronta ...

  6. Computer-Hunters——项目系统设计与数据库设计

    Computer-Hunters--项目系统设计与数据库设计 前言 本次作业属于2019秋福大软件工程实践Z班 本次作业要求 团队名称: Computer-Hunters 本次作业目标:撰写一份针对团 ...

  7. laravel代码规范强制检查

    目录 介绍 代码规范检查与修复 在git commit时自动检查代码规范 后记 介绍 在团队协作开发中,代码规范是必要的.以前的规范都是自己定,然后手动检查,很难做到有效的约束. 现代的PHP,则有得 ...

  8. Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组

    Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组 import time dt=time.strptime('2019-08-08 11:32:23', ...

  9. 【C++】const,static和static const类型成员变量声明及其初始化

    1)const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间 void f1() { ; cout<<x<<endl; ...

  10. [转帖]Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31

    Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31 https://www.kubernetes.org.cn/6252.html 2019-12-13 11:59 ali ...