专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

数据库连接失败怎么办(数据库连接解决方法)

来源:小易整编  作者:小易  发布时间:2022-12-30 05:11
摘要:数据库连接失败怎么办(数据库连接解决方法)。MySQLRouter是一个轻量级的连接转发代理,用来将应用程序的连接转发到MySQL数据库。Oracle官方建议MySQLRouter与应用部署在相同服务器上,当底层MySQL高可用集群(通常是...

数据库连接失败怎么办(数据库连接解决方法)。MySQL Router是一个轻量级的连接转发代理,用来将应用程序的连接转发到MySQL数据库。Oracle官方建议MySQL Router与应用部署在相同服务器上,当底层MySQL高可用集群(通常是指MGR)的角色或服务器发生变化时,MySQL Router能自动识别变化情况,并进行连接控制,无需应用修改配置,实现应用对数据库的透明访问。

当前使用MySQL Router的用户越来越多,但是关于MySQL Router的问题分析较少。本文总结了常见的MySQL Router连接失败案例,供大家参考。

数据库连接失败怎么办(解决方法)

原因一:连接失败次数(连续的)达到上限

1、问题现象

MySQL客户端或应用代码报错出现关键字:Too many connection errors

[kingly@rhel7]$ mysql -uapp -pxxx -h127.0.0.1 -P23306 mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1129 (HY000): Too many connection errors from 127.0.0.1:25084

2、问题原因

应用到MySQL Router的连接失败次数(连续的)达到上限(默认100)。

这里的错误连接不是指密码输入错误,而是指三次握手失败。应用到数据库的连接会先连接MySQL Router,而MySQL Router是一个http服务,所以在连接时,需先进行三次握手。三次握手失败的原因,可能是网络原因,也可能是应用本身连接异常。

这里的连接失败次数是指连续失败次数,如果失败在未达到上限时连接成功了,则错误次数自动清零。

对于连接失败的报错,MySQL Router日志中会提示“closed connection before finishing handshake”,表示三次握手未正常完成;同时,会记录连接失败的统计情况“1 connection errors for 127.0.0.1 (max 100)”,其中 1 是当前已连续错误的次数,max 100 表示最大的错误次数为100。当达到上限时,会提示连接已被阻止(blocking client host 127.0.0.1)。以下是日志示例:

2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:47520 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 1 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:50818 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 2 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:52844 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 3 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:54380 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 4 connection errors for 127.0.0.1 (max 100) ...... 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 95 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:29112 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 96 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:34896 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 97 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:44970 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 98 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:63526 closed connection before finishing handshake 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 99 connection errors for 127.0.0.1 (max 100) 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:24348 closed connection before finishing handshake 2022-02-26 14:50:15 routing WARNING [3gd6e9270700] [routing:mycluster_rw] blocking client host 127.0.0.1 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:23440 closed connection before finishing handshake 2022-02-26 14:50:15 routing WARNING [3gd6e9270700] [routing:mycluster_rw] blocking client host 127.0.0.1 2022-02-26 14:50:15 routing INFO [3gd6e9270700] [routing:mycluster_rw] 127.0.0.1:30882 closed connection before finishing handshake 2022-02-26 14:50:15 routing WARNING [3gd6e9270700] [routing:mycluster_rw] blocking client host 127.0.0.1

3、解决方法

  • 方法一:重启MySQL Router

此方法会清零MySQL Router当前的错误连接计数情况,能快速解决当前服务器上应用连不上数据库的问题。

  • 方法二:调大最大错误连接次数

查看mysqlrouter.conf配置文件中,是否有设置最大连接数max_connect_errors,如果没有配置,默认是100。

修改配置文件mysqlrouter.conf,在[routing:mycluster_rw]模块下添加max_connect_errors=XXXX,XXXX为需要调整的最大错误连接数。

[kingly@rhel7]$vi /home/mw/mysqlrouter/mycluster_23306/mysqlrouter.conf [routing:mycluster_rw] max_connect_errors=10000 bind_address=0.0.0.0 bind_port=23306 destinations=metadata-cache://mycluster/?role=PRIMARY routing_strategy=first-available protocol=classic

重启MySQL Router。

此种方法适合网络稳定性差、或忽略这种连接异常多的场景,避免短时连接失败影响新连接到数据库。

4、验证结果

测试连接情况,通过MySQL客户端尝试连接数据库,看能否正常连接数据库。

[kingly@rhel7]$ mysql -uapp -pxxx -h127.0.0.1 -P23306

本文地址:IT问答频道 https://www.hkm168.com/itwenda/886528.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


IT问答
小编:小易整编
相关文章相关阅读
  • 数据库的substr函数用法是什么

    数据库的substr函数用法是什么

    数据库的substr函数用法:1、【substr(str,pos,len)】从pos开始的位置,截取len个字符;2、【substr(str,pos)】pos开始的位置,一直截取到最后。数据库的substr函数用法:1、SUBSTR(st...

  • 什么是数据库架构?数据库架构有几层

    什么是数据库架构?数据库架构有几层

    一:什么是数据库架构DBMS体系结构有助于数据库的设计,开发,实现和维护,数据库可以存储企业的关键信息,选择正确的数据库体系结构有助于快速安全地访问数据。二:数据库架构有几层1层架构最简单的数据库体系结构是1层,其中客户端,服务器和数据库都...

  • 关系型数据库系统事务的ACID特性是什么

    关系型数据库系统事务的ACID特性是什么

    关系型数据库系统事务的acid特性:1、原子性;事务里的所有操作要么全部做完,要么都不做。2、一致性;数据库要一直处于一致的状态。3、独立性;并发的事务之间不会互相影响。4、持久性;一旦事务提交后,它所做的修改将会永久的保存在数据库上。本教...

  • MySQL中如何快速更改数据库名称

    MySQL中如何快速更改数据库名称

    1、新建数据库centos_old.mysql>createdatabasecentos_old;登录后复制2、使用selectconcat拼成所有renametable的语句。mysql-uroot-p-e"s...

  • mysql怎么查询数据库版本

    mysql怎么查询数据库版本

    方法:1、利用“selectversion();”语句查询;2、利用“showvariableslike‘%version%’”语句查询;3、在mysql客户端中利用“status”命令查询;4、在终端中用“mysql-v”查询。...

  • 如何快速生成MySQL数据库关系图

    如何快速生成MySQL数据库关系图

    需求描述:在公司老旧系统里,数据库表很多,但是在设计之初并没有建立好关系图,导致新人刚入职,面对n个库,每个库几百张表,很不方便。例如:公司某一个系统的库有三百张表,在不熟悉项目的情况下,打开数据库看到一列列的表,很不清晰,对新入职同事很不...

  • 数据库三范式是什么

    数据库三范式是什么

    数据库三范式是:1、确保关系型数据库中的每个列都是不可再分的原子值,即每个列不能再分解出更小的数据项;2、在满足第一范式的基础上,消除非主键列对于主键的部分依赖;3、在满足第二范式的基础上,消除非主键列之间的传递依赖。数据库三范式是一种设计...

  • 如何建立数据库

    如何建立数据库

    数据是,学习编程的基本操作,下面为大家介绍一下mysql如何创建数据库。推荐教程:MySQL入门视频教程前提:电脑安装了mysql服务。如果不知道怎么安装mysql服务,可以参考www.php/mysql-tutorials-362227....

  • 周排行
  • 月排行
  • 年排行

精彩推荐