У меня относительно большая база данных (> 500 ГБ), и я запустил yum update
прошлой ночью это улучшило mysql-community-server
.
С тех пор сервер MySQL находится в состоянии «Выполняется завершение работы сервера» вот уже 16 часов:
# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mysqld.service.d
└─override.conf
Active: deactivating (stop-sigterm) since Mon 2020-07-20 01:18:28 CEST; 14h ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 8318 (mysqld)
Status: "Server shutdown in progress"
CGroup: /system.slice/mysqld.service
└─8318 /usr/sbin/mysqld
Плюс, mysqld
теперь постоянно использует 300% ЦП.
Есть ли проблема или это просто следствие большого размера базы данных? Есть ли способ получить некоторое представление об оставшемся времени или посмотреть, что на самом деле делает сервер?
И что я могу сделать, чтобы ускорить этот процесс?
Для информации, сервер представляет собой 6-ядерный Xeon с 128 ГБ ОЗУ и накопителями NVMe, поэтому он довольно быстрый.
Имеется достаточно свободного места на диске и свободной оперативной памяти.
# free -m
total used free shared buff/cache available
Mem: 128889 88292 11189 2225 29407 37145
Swap: 16381 5168 11213
Обновить: Сейчас прошло 72 часа. Ничего не изменилось.
Кажется, это известная ошибка и причина, по которой это произошло, потому что вы не остановили базу данных перед обновлением и выполнялся некоторый запрос.
Вы можете найти более подробную информацию на Статья Percona
Попробуйте использовать утилиту командной строки mytop чтобы увидеть, что происходит. Но вы упомянули, что не можете получить доступ к базе данных, попробуйте под пользователем root. Если это возможно, сделайте резервную копию базы данных, если вы не можете, в худшем случае, вы попытаетесь восстановить БД, используя команды в Документация MySQL
В этом ответ Предполагается, что это может быть связано с настройками времени на вашем сервере.
Чтобы получить информацию о зависшем процессе, вы можете использовать lsof -c mysqld
должен дать вам подсказку.
Вместо того, чтобы убить процесс mysqld, попробуйте перезапустить сервер с помощью команды systemctl reboot
или shutdown -r now
, не вынимайте его из розетки.