позвольте мне объяснить историю этого вопроса,
Я запускаю 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
Теперь не знаю, что делать ..