J'ai récemment mis à niveau le précédent LTS Ubuntu vers Precise et maintenant mysql refuse de démarrer. Il se plaint de ce qui suit lorsque j'essaie de le démarrer:
╰$ Sudo service mysql restart
stop: Unknown instance:
start: Job failed to start
Et cela apparaît dans "/var/log/mysql/error.log":
120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting
120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete
J'ai vérifié les autorisations sur tous les répertoires mysql pour m'assurer qu'il en était le propriétaire et j'ai également renommé les ib_logs précédents afin qu'il puisse les refaire. Je ne parviens à rien avec ce problème en ce moment, après avoir consulté les résultats de Google pendant 2 heures.
Après avoir vérifié les journaux, j'ai trouvé l'erreur suivante:
[ERROR] Unknown/unsupported storage engine: InnoDB
J'ai supprimé ces fichiers:
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1
à /var/lib/mysql
Cela a résolu mon problème après le redémarrage.
Si vous avez vraiment besoin de skip-innodb
(cas d'utilisation: faible encombrement mémoire), alors bien sûr, vous n'avez pas à le commenter. Cependant, si InnoDB est le moteur de stockage par défaut, le serveur ne démarrera pas jusqu'à ce que vous lui indiquiez le moteur de stockage à utiliser à la place, par exemple default-storage-engine=myisam
pour MyISAM.
Alors, essayez ceci:
$ Sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam
Si vous utilisez MySQL 5.6+ et que vous souhaitez désactiver InnoDB, n'oubliez pas " - default-tmp-storage " ou il ne le fera pas travail:
Pour désactiver InnoDB, utilisez --innodb = OFF ou --skip-innodb. Dans ce cas, étant donné que le moteur de stockage par défaut est InnoDB, le serveur ne démarre pas, sauf si vous utilisez également --default-storage-engine et --default-tmp-storage-engine pour définir la valeur par défaut sur un autre moteur à la fois permanent et Tables TEMPORAIRES.
http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb
Vous pouvez l'ajouter à votre my.cnf:
[mysqld]
innodb=OFF
ignore-builtin-innodb
skip-innodb
default-storage-engine=myisam
default-tmp-storage-engine=myisam
juste pour être sûr que ça va marcher.
Vérifiez votre journal des erreurs mysql.
tail -100 /var/log/mysql/error.log
Si votre journal indique (comme le mien):
InnoDB: Initialisation du pool de tampons, taille = 128,0 M InnoDB: mmap (137363456 octets) a échoué; errno 12 [ERREUR] InnoDB: impossible d'allouer de la mémoire pour le pool de tampons
Vous n'avez pas assez de mémoire pour utiliser la taille de mémoire tampon par défaut de 128 Mo
Modifiez le fichier de configuration / etc/mysql/my.cnf en ajoutant une ligne pour spécifier une taille plus petite innodb_buffer_pool_size.
# make the buffer pool smaller than 128M since we only have 1 GB of total RAM
innodb_buffer_pool_size = 16M
Enregistrez le fichier de configuration et démarrez mysql
Sudo service mysql start
J'ai obtenu cette erreur lorsque j'ai supprimé l'emplacement que j'utilise pour tmpdir
. Si vous avez récemment modifié votre tmpdir
, vous voudrez peut-être vérifier qu'il s'agit d'un emplacement valide et accessible en écriture.
Essayez deux autres choses. 1. Réduisez la taille du pool de mémoire tampon innodb. 2. Modifiez le script initial mysql et ajoutez l'option --innodb.
Je me demande aussi si votre paquet est buggé. Pourriez-vous essayer une autre version mineure?
En outre, je suppose que votre serveur mysql a également été mis à niveau? Peut-être que cette version est cassée? La précision n'est pas encore définitive.