Что делать, если база данных mysql заполнена? - PullRequest
0 голосов
/ 16 февраля 2020

Пожалуйста, ответьте, большое спасибо. При вставке данных в базу данных было обнаружено, что диск переполнен, и появилась следующая информация:

Первоначально подключенный сеанс не может быть подключен к базе данных:

mysql> use music;
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/mysql/socketfile/mysql.sock' (2)
ERROR:
Can't connect to the server

Не удается подключиться в базу данных из ОС:

-bash-4.2$ mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/mysql/socketfile/mysql.sock' (13)

Невозможно завершить работу базы данных с помощью mysqladmin:

Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/mysql/socketfile/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/mysql/socketfile/mysql.sock' exists!

Невозможно закрыть базу данных с помощью служебной команды:

-bash-4.2$ service mysql start
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
Starting MySQL.. ERROR! The server quit without updating PID file (/mysqldata/freelab.pid).

Через некоторое время я обнаружил, что процесс mysql исчез, но я не смог запустить его с помощью команды mysql_safe:

-bash-4.2$ mysqld_safe --user=mysql
2020-02-16T11:02:42.912816Z mysqld_safe Logging to '/mydiaglog/mysql-error.log'.
2020-02-16T11:02:42.955018Z mysqld_safe Starting mysqld daemon with databases from /mysqldata
2020-02-16T11:02:44.479551Z mysqld_safe mysqld from pid file /mysql/mysql.pid ended

[1]-  Done                    mysqld_safe --user=mysql
[2]+  Exit 127                --user=mysql

-bash-4.2$ id
uid=997(mysql) gid=1000(mysql) groups=1000(mysql)
-bash-4.2$ ps -ef|grep mysql
root       2307   1825  0 Feb15 pts/0    00:00:00 su - mysql
mysql      2308   2307  0 Feb15 pts/0    00:00:00 -bash
root      19582   1844  0 05:58 pts/1    00:00:00 su - mysql
mysql     19583  19582  0 05:58 pts/1    00:00:00 -bash
mysql     20707   2308  0 06:02 pts/0    00:00:00 ps -ef
mysql     20708   2308  0 06:02 pts/0    00:00:00 grep --color=auto mysql

Информация в журнале ошибок:

[root@freelab music]# tail -f /mydiaglog/mysql-error.log
/mysql/bin/mysqld(buf_page_io_complete(buf_page_t*, bool)+0xbe8) [0x2220bc8]
/mysql/bin/mysqld(fil_aio_wait(unsigned long)+0xff) [0x22dff0f]
/mysql/bin/mysqld() [0x2160850]
/mysql/bin/mysqld(std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, void (*)(unsigned long), unsigned long> > >::_M_run()+0xa9) [0
/mysql/bin/mysqld() [0x265d64f]
/lib64/libpthread.so.0(+0x7e65) [0x7fc5ed7d1e65]
/lib64/libc.so.6(clone+0x6d) [0x7fc5eb90f88d]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
2020-02-16T11:00:13.978473Z mysqld_safe mysqld from pid file /mysql/mysql.pid ended

Файл сокета становится:

[root@freelab socketfile]# ls
mysql.sock.lock

В то время файл pid не был найден, и при удалении таблицы не было освобождено места. После перезапуска системы база данных вернулась в нормальное состояние.

В этом случае, если файловая система не может быть расширена и данные таблицы могут быть очищены для освобождения места, что мне делать дальше? Есть ли безопасный способ и предложения, кроме перезапуска?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...