не может остановить mysql / mariadb с помощью `systemctl stop`

EDIT он начал работать сам по себе. Я не понимаю, как удалить или отметить этот вопрос.

Mariadb запущен и работает на CentOS 7

$ ps aux | grep mysqld
mysql     4249  0.0  9.0 841448 89576 pts/0    Sl   12:25   0:00 /usr/libexec/mysqld ...snip...
$ mysqladmin ping && echo ok
mysqld is alive
ok

Но когда я пытаюсь его остановить.

$ sudo systemctl stop mariadb.service && echo ok
ok

Выполняется systemctl status mariadb раньше и after показывает, что эта строка была зарегистрирована:

Nov 17 13:02:31 sk-test1 systemd[1]: Stopped MariaDB database server.

Тем не менее, приведенная выше команда ps / ping показывает, что mysqld все еще работает с тем же PID .

Почему служба не останавливается?

1
задан 17 November 2016 в 16:05
2 ответа

Чтобы проверить состояние MySQL или MariaDB

systemctl status mariadb

Чтобы остановить MySQL / MariaDB

systemctl stop mariadb
3
ответ дан 3 December 2019 в 17:03

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

Лучший способ решить эту проблему - добавить больше места на диске, но если это невозможно, я останавливаю все приложения, а затем убиваю службу. Вы потеряете некоторые ожидающие транзакции, но целостность базы данных должна быть в порядке, если вы используете XtraDB или движок InnoDB.

XtraDB используется по умолчанию для MariaDB. InnoDB используется по умолчанию для последней версии Oracle MySQL и сервера Percona.

Редактировать 1: Чтобы завершить работу MariaDB или службы Mysql, вы можете использовать mysqladmin shutdown . Или просто запустите: kill -SIGTERM pid-of-mysqld-process . См. Также: https://mariadb.com/kb/en/mariadb/shutdown/

Редактировать 2:

Если вы перезапустите MySQL во время операции записи (INSERT, UPDATE, DELETE, ALTER), транзакция будет отменена движком InnoDB. Вы можете увидеть ход отката с помощью show engine innodb status . См. Ниже.

Проверьте, какие запросы выполняются медленно. Следующая команда возвращает все запущенные запросы, которые были запущены 10 или более секунд назад.

mysql -e "SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND<>'Sleep' and TIME > 10"

Если у вас медленный запрос, использующий механизм InnoDB, вы можете увидеть, как он продвигается:

mysql -e "show engine innodb status \G"|less
2
ответ дан 3 December 2019 в 17:03

Теги

Похожие вопросы