Nach dem Upgrade auf 15.04 hatte ich viel Spaß beim Kennenlernen von systemd. Ich glaube, ich habe alles am Laufen, außer ich kann mysql.service nicht stoppen. Der Befehl systemctl bleibt einfach hängen und mysql läuft einfach weiter. Hat jemand anderes dies erlebt oder weiß er vielleicht, was los ist?
17
mysql.service
Skript verwendet oder dein eigenes gerollt?Antworten:
Ich hatte das gleiche Problem (Upgrade auf 15.04, mit offiziellen Dateien und Config).
Ich musste die folgenden Änderungen vornehmen, um den
mysql
Dämon manuell mitsytemctl
und automatisch beim Neustart / Herunterfahren des Systems stoppen zu können :Stellen
/etc/mysql/debian.cnf
lesbar für denmysql
Benutzer mitGeben Sie eine leicht geänderte
mysql.service
Datei an:Geben Sie einen expliziten Stoppbefehl ein, indem Sie die kopierte Datei in einem Editor öffnen:
und die folgende Zeile unter dem
[Service]
Abschnitt hinzufügen :Verwenden Sie in Nano Strg + O zum Speichern (Linux-Modus!) Und Strg + X zum Beenden.
Machen Sie die neue Servicedatei dem System bekannt:
quelle
Ich hatte das gleiche Problem mit Ubuntu 15.10 Desktop und fand einen Weg, es zu beheben:
Der Parameter log_error in /etc/mysql/mysql.conf.d/mysqld.cnf wurde auskommentiert. Nachdem der Parameter aus dem Kommentar entfernt wurde, fährt systemd mysqld ohne Probleme herunter.
quelle
--log-syslog
Option ins Journal. Vielleicht ein Grund: Das Root-Dateisystem war btrfs.Ihr Problem ist thread_pool_size. Wenn es viel höher als die Anzahl der Kerne / Threads ist, können Sie nicht ordnungsgemäß herunterfahren, es sei denn, Sie verwenden den Befehl mysqladmin shutdown.
ZB: Sie haben 2 Kerne CPU mit 4 Threads. Wenn Sie 1-4 einstellen, funktioniert es einwandfrei. Wenn Sie den Wert auf 16 setzen, wie in vielen "Hochleistungs" -Blogs empfohlen, wird der Wert gestrichen.
quelle
Ich hatte ein ähnliches Problem mit mysql / mariadb, das nicht beendet werden konnte, wenn es von systemd angewiesen wurde , entweder beim Herunterfahren oder manuell mit
sudo service mysql stop
.In meinem Fall boote ich Ubuntu / Windows doppelt im UEFI-Modus und diese Betriebssysteme interpretieren unterschiedliche Hardwarezeiten, sodass beide Betriebssysteme beim Start mit Internet-Zeitservern synchronisiert werden.
MySQL (und Mariadb) konnten nicht gestoppt werden, wenn sich die Hardware-Zeit während der Ausführung geändert hat.
Sie müssen den Start von MySQL bis nach der Zeitsynchronisation verschieben. Im Idealfall würde dies durch Einfügen einer temporären Abhängigkeit von mysql mit erfolgen,
After: time-sync
aber das hat bei mir nicht funktioniert.Die Lösung, die bei mir funktioniert hat (Sie können mysql mit mariadb ersetzen, um den gleichen Effekt zu erzielen):
Deaktivieren Sie MySQL mit
sudo systemctl disabled mysql.service
Erstellen Sie ein Skript (stellen Sie sicher, dass es ausführbar ist), das mysql nach einiger Zeit
/usr/bin/delay_mysql
mit folgendem Inhalt startet :Erstellen Sie einen systemd-Dienst, um Ihr neues Skript
/etc/systemd/system/delay_mysql.service
mit Inhalten auszuführen :Registrieren Sie Ihren neuen Dienst bei
sudo systemctl enable delay_mysql.service
Dadurch wird Ihr Skript auf Mehrbenutzerebenen ausgeführt, die unter Ubuntu 3,4,5 betragen.
quelle
Gerade beim Kopieren muss
mysql.service
man einchmod
After machen.quelle
In meinem Fall war es ein Passwortkonflikt für den Wartungsbenutzer
debian-sys-maint
zwischen einem in/etc/mysql/debian.cnf
und einem in der MySQL-Datenbank.Dieser Benutzer wird für das Herunterfahren von MySQL und andere Funktionen verwendet. Nach dem MySQL-Update kann es vorkommen, dass zwischen Datei und Datenbank ein Pass-Konflikt besteht. Dies kann auch passieren, wenn Sie Ihre Datenbank von einem MySQL-System auf ein anderes verschieben. Wenn Sie alle Datenbanken und Benutzer von einem anderen MySQL-Computer importieren möchten, müssen Sie Ihr Wartungsbenutzer-
debian-sys-maint
Kennwort ( ) erneut synchronisieren .Sie müssen Folgendes tun: Überprüfen Sie Ihr aktuelles Passwort in der Ubuntu / Debian-Datei:
Hier können Sie Ihr Passwort sehen, das das System verwenden wird:
password = n4aSHUP04s1J32X5
Der nächste Schritt besteht darin, MySQL auf dasselbe Passwort zu aktualisieren: Melden Sie sich bei MySQL an:
Geben Sie Ihr Passwort ein, um auf MySQL zuzugreifen
Danach gibt es keine Probleme mehr mit dem Herunterfahren, keine 10 Minuten Wartezeit, keine Probleme mit der Installation von Apps, die dieses Wartungskonto verwenden, wie z. B. phpmyadmin.
UPDATE: Leider hat dies das Problem nicht gelöst. Es wurde zufällig ausgewählt - manchmal kann ich den Dienst ohne Probleme beenden, wenn er beim Beenden des Dienstes ein weiteres Mal einfriert.
quelle