Problème mysql/mariadb

Bonsoir,
alors voilà, j’ai un problème avec mariadb,
Suite à un crash (ou une coupure de cournat pendant la journée, je ne suis pas sur), ma base de donnée est corrompue:
systemctl status mysql.service
● mysql.service - LSB: Start and stop the mysql database server daemon
Loaded: loaded (/etc/init.d/mysql)
Active: failed (Result: exit-code) since Tue 2018-01-16 22:51:42 CET; 28min ago
Process: 1184 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)

Jan 16 22:51:42 YunoHost /etc/init.d/mysql[2121]: 0 processes alive and ‘/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping’ resulted in
Jan 16 22:51:42 YunoHost /etc/init.d/mysql[2121]:
Jan 16 22:51:42 YunoHost /etc/init.d/mysql[2121]:
Jan 16 22:51:42 YunoHost mysql[1184]: Starting MariaDB database server: mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . failed!
Jan 16 22:51:42 YunoHost systemd[1]: mysql.service: control process exited, code=exited status=1
Jan 16 22:51:42 YunoHost systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.
Jan 16 22:51:42 YunoHost systemd[1]: Unit mysql.service entered failed state.

et

tail -n 50 /var/lib/mysql/*.err
180116 23:07:30 [Note] InnoDB: Using Linux native AIO
180116 23:07:30 [Note] InnoDB: Not using CPU crc32 instructions
180116 23:07:30 [Note] InnoDB: Initializing buffer pool, size = 256.0M
180116 23:07:30 [Note] InnoDB: Completed initialization of buffer pool
180116 23:07:30 [Note] InnoDB: Highest supported file format is Barracuda.
InnoDB: 1 transaction(s) which must be rolled back or cleaned up
InnoDB: in total 1 row operations to undo
InnoDB: Trx id counter is 16074240
180116 23:07:31 [Note] InnoDB: 128 rollback segment(s) are active.
180116 23:07:31 [Note] InnoDB: Starting in background the rollback of recovered transactions
2018-01-16 23:07:31 54bff420 InnoDB: Rolling back trx with id 16072969, 1 rows to undo
180116 23:07:31 [Note] InnoDB: Waiting for purge to start
2018-01-16 23:07:31 54bff420 InnoDB: Assertion failure in thread 1421866016 in file fut0lst.ic line 83
InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
180116 23:07:31 [ERROR] mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.

To report this bug, see https://mariadb.com/kb/en/reporting-bugs

We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.

Server version: 10.0.32-MariaDB-0+deb8u1
key_buffer_size=16384
read_buffer_size=262144
max_used_connections=0
max_threads=153
thread_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 50911 K bytes of memory
Hope that’s ok; if not, decrease some variables in the equation.

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong…
stack_bottom = 0x0 thread_stack 0x20000
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
180116 23:07:31 mysqld_safe mysqld from pid file /var/lib/mysql/YunoHost.pid ended

J’essaye de récupérer le coup avec innodb_force_recovery jusqu’à 3, mais cela ne fonctionne pas.
Qu’à cela ne tiennent me dis-je, je vais restaurer ma sauvegarde de cette nuit, il ne s’est pas passé grand chose je ne devrais pas perdre trop de données… sauf que voilà:

mysql -u nextcloud -p nextcloud < /media/PersonnalCloud/tmp/nextcloud-dbbackup_20180116.bak
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2 “No such file or directory”)

Et là, je ne sais plus quoi faire?
Une âme charitable pour m’aider?
MErci!
Krakinou

Tu devrais essqyer de redémarrer le serveur

systemctl restart mysql

Puis de te connecter à la base mysql avec l’utilisateur root, le mot de passe est dans le fichier /etc/yunohost/mysql

cat /etc/yunohost/mysql
mysql -uroot -p

Si tu peux te connecter, tu devrais essayer de supprimer la base nextcloud puis d’en recréer une associée à l’utilisateur mysql nextcloud. A partir de là retente de restaurer ta base de donnée.


You should try to restart your mysql server:

systemctl restart mysql

And next to connect with the root password located in /etc/yunohost/mysql file

cat /etc/yunohost/mysql
mysql -uroot -p

If you are able to connect, you could next to try to remove the nextcloud db, and recreate a new one associated to the nextcloud mysql user. And next try to restore your db.

Hello ljf,
Merci pour ta réponse.
C’est bien le problème : le serveur mysql ne démarre pas, donc impossible d’accéder à la base, de la modifier ou de la supprimer, que ce soit avec l’utilisateur root ou nextcloud.

nextcloud is your only app ? If yes it should be possible to reinitialize the mysql data.

Cette réponse peut sans doute t’aider si tu as les backups de toutes tes apps

Nextcloud is the only worthwhile app yes…
but I cannot load my backup …

ah ok!
So, basically, delete the files and reinstall :slight_smile:
I’ll try that this evening, thanks a lot!

Bon, je ne sais plus dans quelle langue parler… :slight_smile:
J’ai tenté de suivre la procédure, mais il se passe plusieurs choses étranges:
1/ quand je redémarre mysql après avoir régénérer les tables, le système me dit que c’est fail, et systemctl status mysqld.service m’indique que le service n’a pas démarré. Pourtant dans top je vois bien mysqld_safe et mysql tourner, et la commande mysql fonctionne.
2/ quand je lance mysqladmin pour initialiser le mot de passe root, j’ai une segmentation fault:

root@YunoHost:~ # /usr/bin/mysqladmin -u root $(cat /etc/yunohost/mysql)
Segmentation fault

J’ai tenté de réinstaller avec apt-get install --reinstall mariadb-server mariadb-client mais idem.
Impossible pour l’instant de réinstaller la sauvegarde…
Quelqu’un aurait une idée?

Krakinou

Hm, de ce que je sais, mysql_safe est censé être une commande “temporaire” que tu as peut-être lancé précédemment (dans une autre console ?) le temps de faire quelques opérations en contournant certaines contraintes/authentification :thinking: … Du coup il faudrait arrêter cette commande avant de tenter de relancer proprement mysql.

Si tu l’as encore ouverte dans un terminal, alors il faut l’arrêter en faisant Ctrl+C… Sinon, tu peux tenter de tuer brutalement le processus, par exemple avec pkill -9 mysql_safe (c’est un peu brutal, mais bon :stuck_out_tongue: )

C’est aussi ce que j’avais compris…
je ne lance le service que en passant par systemctl, jamais en direct.
Et si je kill mysqld et mysql_safe comme tu me l’as suggéré, et que je relance avec systemctl start myslq.service, je me retrouve exactement dans la même situation… mysqld_safe avec en sous process mysqld qui tourne.

Je sens que ça va se terminer en réinstall cette histoire…

J’ai fini par réinstaller, merci pour votre aide.
Pour info, même sur une install fraiche mysqld_safe reste actif, donc soit c’est normal, soit c’est un problème de l’image raspberry fourni par yunohost.

Bonsoir @Krakinou ,

J’avais eu ce même genre de souci et j’avais aussi du réinstaller.
C’est pour ça que je suis passé sur un VPS.
Je verrais néanmoins pour retenter une installation sur Raspberry Pi avec onduleur pour éviter ces soucis.
Pour essayer de faciliter l’installation sur Raspberry Pi j’avais fait ce post Image 64bits en download pour raspberry
Si tu as besoin je réactiverai le lien.

ppr

Désolé c’est ma faute des fois j’écris en anglais sans m’en rendre compte quand je viens juste de lire ou d’écouter quelques chose en anglais. Et après j’ai la flemme de traduire :confused:

Salut @ppr,
C’est vraiment une image 64bit que tu as?
Pour moi Raspian n’était que 32 bit, même si le rasp3 est 64.
Du coup, tu as php7?

@ljf, t’inquiètes, je me doutais que c’était un truc du genre

Bonjour @Krakinou ,

En fait, ce n’est pas une image YunoHOst pour Raspberry Pi.
Ca te permet d’installer sur ta Raspberry Pi la dernière mouture Raspbian Jessie publiée.
Ensuite, il y a quelques commandes à enchaîner pour préparer et faire l’installation de YunoHost sur ta Raspberry Pi.
Pour ce qui est du 32 ou 64 bits, c’est l’installaeur de Raspbian qui “décide” tout seul car ces fichiers Raspbian sont a priori adaptés pour toutes les Raspberry Pi.
Du coup, pas de PHP 7 a priori car il me semble qu’il est disponible pour seulement à partir de Stretch … Stretch qui d’ailleurs n’est pas encore compatible avec YunoHost … attention aux manipulations et à la vérification du /etc/apt/sources.list.

Edit :
https://www.blaess.fr/christophe/2017/03/13/un-noyau-4-10-sur-un-raspberry-pi-3-64-bits/

ppr