web-dev-qa-db-fra.com

Le serveur MariaDB 10.1 ne démarre pas après la mise à jour

Aujourd'hui, j'ai exécuté apt-get upgrade et une mise à niveau de MariaDB 10.1 ob Ubuntu Server 14.04 a échoué:

Setting up libmysqlclient18 (10.1.9+maria-1~trusty) ...
Setting up libmariadbclient18 (10.1.9+maria-1~trusty) ...
Setting up mariadb-client-core-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-client-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-server-core-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-server-10.1 (10.1.9+maria-1~trusty) ...
Installing new version of config file /etc/init.d/mysql ...

 * Stopping MariaDB database server mysqld [ OK ] 
 * Starting MariaDB database server mysqld [fail] 

invoke-rc.d: initscript mysql, action "start" failed.

dpkg: error processing package mariadb-server-10.1 (--configure):
 subprocess installed post-installation script returned error exit status 1

dpkg: dependency problems prevent configuration of mariadb-server:
 mariadb-server depends on mariadb-server-10.1 (= 10.1.9+maria-1~trusty); however:

  Package mariadb-server-10.1 is not configured yet.

dpkg: error processing package mariadb-server (--configure):
 dependency problems - leaving unconfigured
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
No apport report written because the error message indicates its a followup error from a previous failure. 

Errors were encountered while processing:

 mariadb-server-10.1
 mariadb-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

C'est un cauchemar, je ne peux plus accéder à la base de données. J'ai essayé de le supprimer, de le purger et de l'installer à nouveau, mais il se termine toujours par la même erreur.

Selon /var/log/syslog, cela a quelque chose à voir avec les sockets et mysqld (après avoir exécuté service mysql restart):

mysqld: 151127 11:51:07 [ERROR] mysqld got signal 11 ;

...

mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
/etc/init.d/mysql[14132]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
/etc/init.d/mysql[14132]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
/etc/init.d/mysql[14132]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")'
/etc/init.d/mysql[14132]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Eh bien, /var/run/mysqld/mysqld.sock existe absolument. De plus, je ne suis pas sûr de savoir pourquoi cela dit quelque chose sur l'utilisation de /etc/mysql/debian.cnf - mon fichier de configuration mysql principal devrait en fait être /etc/mysql/my.cnf, non? Je suis vraiment à court d'idées, toutes les nouvelles seraient appréciées!


Mise à jour (2015-12-11)

Je ne pouvais toujours pas comprendre le problème et la mise à niveau ne fonctionnait toujours pas, donnant toujours la même erreur. Comme le disent certaines des réponses (maintenant supprimées), la seule solution consistait à revenir à un instantané plus ancien du serveur. Heureusement, sauvegarder la base de données était aussi simple que de tout copier de /var/lib/mysql vers un autre instantané.

J'espère qu'il existe ou qu'il y aura une solution à ce problème, car je n'ai rien trouvé qui puisse fonctionner sur Google.

3
Quasdunk

Voici comment j'ai résolu mon problème, je n'avais pas de sauvegarde du serveur, alors j'ai en quelque sorte "réinitialisé" MariaDB:

Tout d’abord, j’ai sauvegardé mon dossier /var/lib/mysql: je suppose que j’ai un dossier /home/ubuntu et que je le copie.

cp -r /var/lib/mysql /home/ubuntu/

Deuxièmement, j'ai sauvegardé mon dossier /etc/mysql: je suppose que j'ai un dossier /home/ubuntu et que je le copie.

mkdir /home/ubuntu/etc_mysql
cp -r /etc/mysql /home/ubuntu/etc_mysql

Puis j'ai supprimé les dossiers /var/lib/mysql et /etc/mysql

rm -rf /etc/mysql
rm -rf /var/lib/mysql

Après cela, j'ai purgé MariaDB:

apt-get purge mariadb-server mariadb-* mysql-*
apt-get autoremove

Après la purge, j'ai réinstallé mariadb-server et je l'ai reconfiguré:

apt-get install mariadb-server
mysql_secure_installation

Copiez la configuration souhaitée dans le dossier /home/ubuntu/etc_mysql.

Après cela, j'ai créé ma base de données et mon utilisateur à partir de mysql cli (ou comme vous le souhaitez).

Enfin, j'ai copié mon dossier /home/ubuntu/mysql/**databaseName** dans /var/lib/mysql/**databaseName**

cp -r /home/ubuntu/mysql/databaseName /var/lib/mysql/

Et puis, je pouvais accéder à mes données sans perte, exactement comme je l'avais laissée.

4
Arda