Как исправить ситуацию с MariaDB, если она зависает во время завершения работы (ожидание page_cleaner)?

Как исправить ситуацию с MariaDB, если она зависает во время завершения работы (ожидание page_cleaner)?

Я использую MariaDB (v 10.3.13) на Arch Linux (Manjaro). Он работал нормально в течение последних месяцев, но теперь есть некоторые проблемы. Когда я пытаюсь перезагрузить компьютер, он зависает на

A stop job is running for MariaDB 10.3.13 database server

Время, которое должно пройти, увеличивается с каждой минутой, пока оно наконец не истечет (примерно через 20 минут).

Остановка MariaDB вручную также приводит к зависанию, когда я пытаюсь перезапустить/остановить ее с помощью

sudo systemctl stop/restart mariadb

Затем запуск sudo systemctl status mariadbшоу

/usr/bin/mysqld (initiated by: unknown): Normal shutdown
Event Scheduler: Purging the queue. 0 events
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
InnoDB: Buffer pool(s) dump completed at 190402 20:31:01
InnoDB: Waiting for page_cleaner to finish flushing of buffer pool 

с каждой минутой InnoDB: Waiting for page_cleaner to finish flushing of buffer poolдобавляется еще одна строка.

Есть ли способ сбросить настройки MariaDB? Или способ получить больше информации о проблеме?

PS: Недавно я установил несколько обновлений через менеджер пакетов, после чего впервые заметил эту проблему.

Обновлять:

Когда я удаляю, перезагружаю и переустанавливаю MariaDB, я могу остановить/перезапустить MariaDB без проблем, и выключение происходит без проблем. Но после повторной загрузки я снова сталкиваюсь с вышеописанными проблемами.

решение1

После многочасовой борьбы мне наконец удалось решить проблему.

Причиной была настройка времени ( timedatectl set-local-rtc 1) для двойной загрузки с Win10.

Из-за недавнего изменения времени часы сбились. (Записи в журнале состояния sudo systemctl status mariadbбыли на 1 час вперед)

Параметр

timedatectl set-local-rtc 0

и перезагрузка решила эту проблему.

решение2

Также вы можете изменить и уменьшить TimeoutSec=300значение тайм-аута с (5 минут) до меньшего значения в файле конфигурации службы запуска MySQL:

vi /usr/lib/systemd/system/mariadb.service

### after editing timout value in above config file you can apply it by using:
systemctl daemon-reload

Примечание: Это не исправление.или решение этой проблемы. Он просто уменьшает значение тайм-аута завершения службы. Вам следует рассмотреть возможность поиска правильного решения на основе ситуации или ошибки, вызвавшей это в вашей ОС и службе, и вернуть тайм-аут к рекомендуемому значению по умолчанию после решения проблемы.

Связанный контент