Systemd Mysql не остановится

После обновления до 15,04, у меня была большая забава, узнающая systemd. Я думаю, что у меня есть все работающее кроме, я не могу остановить mysql.service; команда systemctl просто зависает, и mysql просто продолжает работать. Кто-либо еще испытал это или мог бы знать то, что продолжается?

17
задан 27 April 2015 в 21:02

6 ответов

У меня была та же проблема (обновите до 15,04, с помощью официальных файлов и конфигурации).

Я должен был внести следующие изменения, чтобы смочь остановиться mysql демон вручную с sytemctl и автоматически на системной перезагрузке/завершении работы:

  1. Сделать /etc/mysql/debian.cnf читаемый для mysql пользователь с

    sudo chgrp mysql /etc/mysql/debian.cnf; sudo chmod 640 /etc/mysql/debian.cnf
    
  2. Обеспечьте немного измененный mysql.service файл:

    sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
    sudo chmod 755 /etc/systemd/system/mysql.service
    
  3. Обеспечьте явную команду остановки путем открытия скопированного файла в редакторе:

    sudo nano /etc/systemd/system/mysql.service
    

    и добавление следующей строки под [Service] раздел:

    ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
    

    В Нано используйте Ctrl+O для сохранения (Linux путь!), Ctrl+X для выхода.

  4. Сделайте новый сервисный файл известным системе:

    sudo systemctl daemon-reload
    
25
ответ дан 23 November 2019 в 02:21

У меня была та же проблема с Рабочим столом Ubuntu 15.10, и я нашел способ зафиксировать его:

log_error параметр в/etc/mysql/mysql.conf.d/mysqld.cnf был прокомментирован. После некомментария параметра systemd делает завершение работы mysqld без проблем.

1
ответ дан 23 November 2019 в 02:21

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

, Например: у Вас есть 2 ядра процессора с 4 потоками. При установке его 1-4 - это будет хорошо работать. При установке его на 16, как рекомендуется во многих 'высокопроизводительных' блогах, это получит pooched.

1
ответ дан 23 November 2019 в 02:21

Как раз в то самое время, когда копирование mysql.service необходимо будет сделать chmod после.

cp /lib/systemd/system/mysql.service /etc/systemd/system/
chmod 755 /etc/systemd/system/mysql.service
0
ответ дан 23 November 2019 в 02:21

в моем случае это было несоответствие пароля для пользователя обслуживания 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.

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

0
ответ дан 23 November 2019 в 02:21

У меня была подобная проблема с mysql / mariadb не удающийся остановиться при инструктировании systemd, или на завершении работы или ручном вызове с sudo service mysql stop.

В моем случае я - двойная загрузка Ubuntu / Windows в режиме UEFI и них, ОС интерпретирует другое аппаратное время, таким образом, обе синхронизации OSs против интернет-серверов времени, когда они запускают.

MySQL (и Mariadb) не удавалось остановиться, если аппаратное время изменилось, в то время как он работает.

Необходимо задержать стартовый MySQL до окончания timesync. Идеально это было бы сделано путем вставки временной зависимости от mysql с After: time-sync но это не работало на меня.

Решение, которое работало на меня (Можно заменить mysql mariadb для того же эффекта):

  1. Отключите mysql с sudo systemctl disabled mysql.service

  2. Создайте сценарий (удостоверьтесь, что это - исполняемый файл), который запустит mysql после некоторой задержки /usr/bin/delay_mysql с содержанием:

    #!/bin/sh
    sleep 30s
    /etc/init.d/mysql start
    
  3. Создайте 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  
    
  4. Зарегистрируйте свой новый сервис в sudo systemctl enable delay_mysql.service

Это заставит Ваш сценарий работать на многопользовательских уровнях, которые на Ubuntu являются 3,4,5.

1
ответ дан 23 November 2019 в 02:21

Другие вопросы по тегам:

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