数据库重启后连接不上问题复盘

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 服务器管理人员增加完内存后,笔者进行验证服务时,首先看了下mysql的进程是否起来了,发现mysql进程正常,然后就去管理后台查看数据是否查询正常。进去后发现数据查询并不能正常响应。心里一慌,完蛋!!!!

项目场景:



生产一台数据库服务器因为内存吃紧,需要增加内存。然后决定将数据库服务器的内存由16G增加到32G。 该服务器系统是ubuntu16.04


问题描述:



服务器管理人员增加完内存后,笔者进行验证服务时,首先看了下mysql的进程是否起来了,发现mysql进程正常,然后就去管理后台查看数据是否查询正常。进去后发现数据查询并不能正常响应。心里一慌,完蛋!!!!


原因分析:



笔者经历了几个阶段最后定位了错误。


1.首先看了下ubuntu系统的防火墙是否开启了,发现是关闭的。说明不是端口放行的问题。

#这里列举下ubuntu系统里关于防火墙的操作
sudo apt-get install ufw # 安装防火墙
sudo ufw status # 查看防火墙装态,inactive关闭,active开启
sudo ufw enable # 开启防火墙
sudo ufw disable # 关闭防火墙
sudo ufw version # 查看防火墙版本
sudo ufw default allow # 默认允许外部访问
sudo ufw default deny # 默认拒绝外部访问
sudo ufw allow 3306 # 放行3306端口
sudo ufw delete allow 3306 # 关闭放行端口
sudo ufw allow from 192.168.0.1 # 允许该ip访问所有端口


2.既然防火墙没事,然后测试下其他机器telnet一下该机的3306,发现是正常的说明端口正常。排除了端口问题。

telnet 10.10.1.1 3306 # telnet测试端口是否可以正常联通


3.端口既然也联通了,为什么程序访问数据库时老超时呢,使用Navicat连接报了一个“too many connetions ”,好了然后知道问题了。此时就知道应该是因为服务有人在用,数据库服务刚起来,数据库的连接池就被占满了。然后连接又没释放,就一直连不上超时了。


解决方案:



既然知道了是因为连接迅速被占满导致的问题,那么就更改连接池大小就行了。


1.更改数据库配置文件中连接池的大小设置。


whereis my.cnf # 寻找数据库配置文件的位置,使用find命令也一样
vim /etc/my.cnf # 更改数据库的配置文件。


更改配置文件时注意,我们应该在mysqld模块增加连接池的配置,如下图max_connections=1000所示:

1f7fb2925c634067a80f7add614342d1.png


笔者这里更改了1000。


2.更改完了配置文件我们就可以重启mysql了。


service mysql stop # ubuntu中可以使用该命令停止mysql
service mysql start # ubuntu中可以使用该命令启动mysql

2a2f6901da18432d85f1997dfb695ec6.png


竟然找不到mysql.service,那就只能找下mysql.server所在位置了。

find / -name mysql.server # 全局查找mysql.server文件
# 发现在这里 : /app/mysql/support-files/mysql.server
/app/mysql/support-files/mysql.server stop # 停止mysql服务
/app/mysql/support-files/mysql.server start # 启动mysql服务
ps -ef|grep mysql # 验证mysql是否正常启动


3.搞定了。

相关文章
|
1月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
150 3
|
20天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
120 68
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
23天前
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
114 9
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
16天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
32 1
|
25天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
64 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
19天前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
44 0
|
1月前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析