После обновления до 15,04, у меня была большая забава, узнающая systemd. Я думаю, что у меня есть все работающее кроме, я не могу остановить mysql.service; команда systemctl просто зависает, и mysql просто продолжает работать. Кто-либо еще испытал это или мог бы знать то, что продолжается?
У меня была та же проблема (обновите до 15,04, с помощью официальных файлов и конфигурации).
Я должен был внести следующие изменения, чтобы смочь остановиться mysql
демон вручную с sytemctl
и автоматически на системной перезагрузке/завершении работы:
Сделать /etc/mysql/debian.cnf
читаемый для mysql
пользователь с
sudo chgrp mysql /etc/mysql/debian.cnf; sudo chmod 640 /etc/mysql/debian.cnf
Обеспечьте немного измененный mysql.service
файл:
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo chmod 755 /etc/systemd/system/mysql.service
Обеспечьте явную команду остановки путем открытия скопированного файла в редакторе:
sudo nano /etc/systemd/system/mysql.service
и добавление следующей строки под [Service]
раздел:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
В Нано используйте Ctrl+O для сохранения (Linux путь!), Ctrl+X для выхода.
Сделайте новый сервисный файл известным системе:
sudo systemctl daemon-reload
У меня была та же проблема с Рабочим столом Ubuntu 15.10, и я нашел способ зафиксировать его:
log_error параметр в/etc/mysql/mysql.conf.d/mysqld.cnf был прокомментирован. После некомментария параметра systemd делает завершение работы mysqld без проблем.
Вашей проблемой является thread_pool_size. Если это будет намного выше, чем количество ядер/потоков, то Вы не сможете завершить работу правильно, если при помощи mysqladmin не завершат работу команды.
, Например: у Вас есть 2 ядра процессора с 4 потоками. При установке его 1-4 - это будет хорошо работать. При установке его на 16, как рекомендуется во многих 'высокопроизводительных' блогах, это получит pooched.
Как раз в то самое время, когда копирование mysql.service
необходимо будет сделать chmod
после.
cp /lib/systemd/system/mysql.service /etc/systemd/system/
chmod 755 /etc/systemd/system/mysql.service
в моем случае это было несоответствие пароля для пользователя обслуживания debian-sys-maint
между одним в /etc/mysql/debian.cnf
и один в базе данных MySQL.
Этот пользователь используется для завершения работы MySQL и других функций. После того, как обновление MySQL, это могло бы, произошло, что существует несоответствие передачи между файлом и базой данных. Это могло также произойти при перемещении базы данных от одного MySQL до другого. При импорте всех баз данных и пользователей от другого MySQL на другой машине, необходимо повторно синхронизировать пользователя обслуживания (debian-sys-maint
) пароль.
необходимо сделать: проверьте свой текущий пароль в ubuntu/debian файл:
sudo cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
Вы видите свой пароль, который система будет использовать здесь: password = n4aSHUP04s1J32X5
Следующий шаг должен обновить MySQL к тому же паролю: Войдите в MySQL:
~$ mysql -u root -p
Тип Ваш пароль для доступа к MySQL
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';**
После этого больше никаких проблем с завершением работы минуты № 10 ожидают, никакие проблемы с установкой приложений, которые используют эту учетную запись обслуживания как phpmyadmin.
ОБНОВЛЕНИЕ: Поэтому, к сожалению, это не решило проблему. Это сделало это довольно случайным - иногда я могу остановить сервис без проблемы другое время, которое заморозит на сервисной остановке.
У меня была подобная проблема с mysql / mariadb не удающийся остановиться при инструктировании systemd, или на завершении работы или ручном вызове с sudo service mysql stop
.
В моем случае я - двойная загрузка Ubuntu / Windows в режиме UEFI и них, ОС интерпретирует другое аппаратное время, таким образом, обе синхронизации OSs против интернет-серверов времени, когда они запускают.
MySQL (и Mariadb) не удавалось остановиться, если аппаратное время изменилось, в то время как он работает.
Необходимо задержать стартовый MySQL до окончания timesync. Идеально это было бы сделано путем вставки временной зависимости от mysql с After: time-sync
но это не работало на меня.
Решение, которое работало на меня (Можно заменить mysql mariadb для того же эффекта):
Отключите mysql с sudo systemctl disabled mysql.service
Создайте сценарий (удостоверьтесь, что это - исполняемый файл), который запустит mysql после некоторой задержки /usr/bin/delay_mysql
с содержанием:
#!/bin/sh
sleep 30s
/etc/init.d/mysql start
Создайте systemd сервис для запущения нового скрипта /etc/systemd/system/delay_mysql.service
с содержанием:
[Unit]
Description=Delay start of MySQL / MariaDB
[Service]
Type=oneshot
ExecStart=/usr/bin/delay_mysql
[Install]
WantedBy=multi-user.target
Зарегистрируйте свой новый сервис в sudo systemctl enable delay_mysql.service
Это заставит Ваш сценарий работать на многопользовательских уровнях, которые на Ubuntu являются 3,4,5.