Après la mise à niveau vers 15.04, j'ai eu beaucoup de plaisir à découvrir systemd. Je pense que tout fonctionne, sauf que je ne peux pas arrêter mysql.service; la commande systemctl se bloque et mysql continue de fonctionner. Quelqu'un d'autre a-t-il vécu cela ou pourrait-il savoir ce qui se passe?
17
mysql.service
script natif ou avez-vous lancé le vôtre?Réponses:
J'ai eu le même problème (mise à niveau vers 15.04, en utilisant les fichiers officiels et la configuration).
J'ai dû apporter les modifications suivantes pour pouvoir arrêter le
mysql
démon manuellement avecsytemctl
et automatiquement lors du redémarrage / arrêt du système:Rendre
/etc/mysql/debian.cnf
lisible pour l'mysql
utilisateur avecFournissez un
mysql.service
fichier légèrement modifié :Fournissez une commande d'arrêt explicite en ouvrant le fichier copié dans un éditeur:
et en ajoutant la ligne suivante sous la
[Service]
section:Dans Nano, utilisez Ctrl + O pour sauvegarder (façon Linux!), Ctrl + X pour quitter.
Faites connaître le nouveau fichier de service au système:
la source
J'ai eu le même problème avec Ubuntu 15.10 Desktop et j'ai trouvé un moyen de le résoudre:
Le paramètre log_error dans /etc/mysql/mysql.conf.d/mysqld.cnf a été mis en commentaire. Après avoir décommenté le paramètre, systemd effectue l'arrêt de mysqld sans problème.
la source
--log-syslog
option dans le journal. Peut-être une raison: le système de fichiers racine était btrfs.Votre problème est thread_pool_size. S'il est beaucoup plus élevé que le nombre de cœurs / threads, vous ne pourrez pas arrêter correctement, sauf en utilisant la commande d'arrêt mysqladmin.
Par exemple: Vous avez 2 cœurs CPU avec 4 threads. Si vous le définissez 1-4 - cela fonctionnera bien. Si vous le définissez sur 16, comme conseillé dans de nombreux blogs «haute performance», il sera brisé.
la source
J'ai eu un problème similaire avec mysql / mariadb ne s'arrêtant pas lorsque cela était demandé par systemd , à l'arrêt ou appelé manuellement avec
sudo service mysql stop
.Dans mon cas, je double Ubuntu / Windows en mode UEFI, et ces systèmes d'exploitation interprètent l'heure matérielle différente, de sorte que les deux systèmes d'exploitation se synchronisent avec les serveurs de temps Internet au démarrage.
MySQL (et Mariadb) n'arrivait pas à s'arrêter si l'heure du matériel changeait pendant son exécution.
Vous devez différer le démarrage de MySQL après la synchronisation horaire. Idéalement, cela serait fait en insérant une dépendance temporelle sur mysql avec
After: time-sync
mais cela n'a pas fonctionné pour moi.La solution qui a fonctionné pour moi (vous pouvez remplacer mysql par mariadb pour le même effet):
Désactivez mysql avec
sudo systemctl disabled mysql.service
Créez un script (assurez-vous qu'il est exécutable) qui démarrera mysql après un certain délai
/usr/bin/delay_mysql
avec le contenu:Créez un service systemd pour exécuter votre nouveau script
/etc/systemd/system/delay_mysql.service
avec son contenu:Enregistrez votre nouveau service avec
sudo systemctl enable delay_mysql.service
Cela entraînera l'exécution de votre script à des niveaux multi-utilisateurs, qui sur Ubuntu sont 3,4,5.
la source
Au moment de la copie,
mysql.service
vous devrez faire unchmod
après.la source
dans mon cas, il n'y avait pas de correspondance de mot de passe pour l'utilisateur de maintenance
debian-sys-maint
entre un/etc/mysql/debian.cnf
et un dans la base de données MySQL.Cet utilisateur est utilisé pour l'arrêt de MySQL et d'autres fonctions. Après la mise à jour de MySQL, il peut arriver qu'il y ait un décalage entre le fichier et la base de données. Cela peut également se produire si vous déplacez votre base de données d'un MySQL à un autre. Si vous importez toutes les bases de données et les utilisateurs d'autres MySQL sur une machine différente, vous devez resynchroniser votre
debian-sys-maint
mot de passe utilisateur de maintenance ( ).Vous devez faire: vérifiez votre mot de passe actuel dans le fichier ubuntu / debian:
Vous pouvez voir votre mot de passe que ce système utilisera ici:
password = n4aSHUP04s1J32X5
L'étape suivante consiste à mettre à jour MySQL avec le même mot de passe: Connectez-vous à MySQL:
Tapez votre mot de passe pour accéder à MySQL
Après cela, plus de problèmes d'arrêt, pas d'attente de 10 minutes, plus de problèmes d'installation d'applications qui utilisent ce compte de maintenance comme phpmyadmin.
MISE À JOUR: Malheureusement, cela n'a pas résolu le problème. Cela l'a rendu un peu aléatoire - parfois je peux arrêter le service sans problème une autre fois, il se bloquera à l'arrêt du service.
la source