![MySQL 服务器丢失连接](https://linux22.com/image/700131/MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%A2%E5%A4%B1%E8%BF%9E%E6%8E%A5.png)
让我解释一下这个问题的历史,
我在专用服务器上运行 Centos 7,当我第一次安装它时,我没有进行任何分区,因为我不太清楚如何做,实际上我认为这是不可能的,因为我无法在其他机器上对整个服务器进行任何备份。
这是我的磁盘:
[root@ns527667 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1004.5K 0 part
└─sda2 8:2 0 19.5G 0 part /
└─sda3 8:3 0 1.8T 0 part /home
└─sda4 8:4 0 511M 0 part [SWAP]
我在分区上安装了 MySQL 服务器/
,但随着时间的推移,我的所有数据库都显著增长,所以我决定将它们移动到分区/home
,这很好。我当时忘记了空间问题。在移动之前,我能够使用localhost
数据库主机连接到我的数据库,但它开始出现连接问题,有时我的应用程序会丢失连接,所以我将数据库主机更改为127.0.0.1
当时它解决了问题,但现在有时它再次丢失连接。有时查询和结果之间的响应时间很长(大约 0-5000 毫秒)。
我运行MySQLTunner
后它建议我改变一些变量,所以我改变了很多变量,例如:
SET GLOBAL max_connections = 500;
SET @@GLOBAL.long_query_time = 1;
SET GLOBAL tmp_table_size = 128000000;
SET GLOBAL max_heap_table_size = 128000000;
SET GLOBAL key_buffer_size = 32000000;
SET GLOBAL thread_cache_size = 20;
SET GLOBAL max_allowed_packet = 8000000;
实际上我的人脉大概有 150-200 个
我优化了(至少我认为我优化了)我的所有 InnoDB
mysqlcheck --user=root --password="pass" -o --all-databases
这是我的/etc/my.cnf
[mysqld]
datadir=/home/var/lib/mysql
socket=/home/var/lib/mysql/mysql.sock
interactive_timeout=86400
wait_timeout=86400
max_connections=1000
innodb_buffer_pool_size=256M
skip-name-resolve
slow-query-log = 1
slow-query-log-file = /home/var/lib/mysql/mysql-slow.log
long_query_time = 2
bind-address="127.0.0.1"
port=3306
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/home/var/lib/mysql/mysql.sock
port=3306
我正在使用各种 Java 应用程序,它们在我的个人机器上运行良好,但在服务器上有时会丢失连接并出现如下错误:
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
或者
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
现在我不知道该怎么办了。