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

На работе мы переместили некоторых людей с компьютеров Windows на Ubuntu. Похвала, которую я слышал больше всего, это то, что Ubuntu работает быстро. Да, обычно есть пара проблем.

1
задан 28 April 2015 в 07:02

5 ответов

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

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

1
ответ дан 23 May 2018 в 20:55
  • 1
    У меня была та же проблема на Ubuntu LTS 16.04. Работала только отключение error.log. Теперь mysqld записывает с помощью опции --log-syslog в журнал. Возможно, причина: корневая файловая система была btrfs. – ingopingo 25 March 2017 в 19:46

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

Например: у вас есть 2 ядра CPU с 4 потоками. Если вы установите его 1-4 - он будет работать нормально. Если вы установите его на 16, как указано во многих «высокопроизводительных» блогах, он будет потерян.

1
ответ дан 23 May 2018 в 20:55

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

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

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

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

1
ответ дан 23 May 2018 в 20:55
  • 1
    Это решило мою проблему. Однако очень важно отметить, что перед переустановкой MySql вы должны отключить функцию delay_mysql.service, иначе вы получили сообщение об ошибке. – SiGe 9 October 2017 в 12:42

Просто при копировании mysql.service вам нужно будет выполнить chmod после.

cp /lib/systemd/system/mysql.service /etc/systemd/system/
chmod 755 /etc/systemd/system/mysql.service
0
ответ дан 23 May 2018 в 20:55
в моем случае это был пароль расстройка для обслуживания пользователей 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: [d4 ]

~$ mysql -u root -p

Введите пароль для доступа к MySQL

mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';**

После того, что не больше проблем с выключением, не 10 минут ожидания, никаких проблем с установкой приложений, которые используют этот обслуживание счета, как PHPMyAdmin. [ ! d6]

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

0
ответ дан 23 May 2018 в 20:55

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

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