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

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云防火墙,500元 1000GB
简介: 服务器管理人员增加完内存后,笔者进行验证服务时,首先看了下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.搞定了。

相关文章
|
5天前
|
SQL Java 数据库连接
连接数据库实现查询员工信息
该博客文章展示了如何在Java中使用JDBC连接SQL Server数据库,并执行查询操作来检索员工信息,包括加载数据库驱动、建立连接、创建SQL查询、处理结果集以及关闭数据库资源的完整示例代码。
连接数据库实现查询员工信息
|
5天前
|
SQL Java 数据库连接
java连接数据库加载驱动到java项目
该博客文章介绍了如何在Java项目中通过代码加载数据库驱动并连接SQL Server数据库,包括具体的加载驱动和建立数据库连接的步骤,以及如何将驱动包添加到Java项目的构建路径中。
|
5天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
5天前
|
SQL Java 数据库连接
连接数据库修改用户信息
该博客文章通过Java JDBC代码示例演示了如何连接SQL Server数据库,并执行更新操作来修改用户信息,具体将小张的工作改为教授,并检查更新操作是否成功。
|
13天前
|
数据可视化 搜索推荐 数据挖掘
基于Python flask 的数据可视化平台,可定制,可连接数据库
本文介绍了一个基于Python Flask框架开发的可定制数据可视化平台,该平台支持多种数据库连接,并提供丰富的图表类型和个性化设置,以实现交互式数据分析和展示。
基于Python flask 的数据可视化平台,可定制,可连接数据库
|
20天前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之使用polardb for mysql数据库的外网地址在程序中连接经常超时,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
20天前
|
SQL 关系型数据库 数据库
|
20天前
|
SQL 存储 关系型数据库
|
24天前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何使用本地电脑连接PolarDB数据库
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。