MYSQL : packet mysql-serveur cassé - restaurer les données

Bonjour,

J’ai une machine sid sur laquelle tournait un serveur mysql avec quelques BD, malheureusement lors de la dernière mise à jour de sid (dist-upgrade), j’ai eu pas mal de problèmes et entre autre un serveur mysql cassé qui ne démarre plus (j’ai fait beaucoup de recherches et tentatives pour le réparer mais en vain)
D’autre part n’ayant pas de dump de mes bases, j’ai récupéré tous les fichiers situés dans /var/lib/mysql dans le but de restaurer mes bases sur une machine “debian
jessie” sur laquelle tourne un serveur mysql.

Ma question est la suivante : comment faire pour implanter mes bases de la sid (à partir des fichiers frm …) dans le serveur mysql de la machine jessie.

Merci

A priori /var/lib/mysql contient tout ce qu’il faut, y compris les droits. Si tu stop le serveur, que tu recopies les répertoires correspondant à chaque base (attention aux droits et au prorpiétaire), et que tu relances le serveur, tu récupères les tables et les données. Par contre tu ne récupères pas les procédures, et je n’ai pas vérifié pour les «vues».

Edit: Les procédures sont dans /var/lib/mysql/mysql/proc.*

Je pense qu’en recopiant toute l’arborescence tu récupèreras tout à condition que ça soit cohérent.

Il me semble qu’il y a aussi des commandes SQL permettant d’exporter des BD et les données qu’elle contiennent puis de les réimporter.
Il me semble que [mono]phpmyadmin[/mono] à une interface pour ça au passage…

Oui mais il vient de dire que son mysql est mort, reste les répertoires. (L’utilitaire est mysqldump)

Hum, oui pas faux :whistle:

Il ne trouve pas les tables :

J’ai copié un répertoire contenant une bd dans /var/lib/mysql/ j’ai modifié le propriétaire/groupe => mysql.mysql
j’ai ensuite arrêté puis redémarré mysql
Je me suis connecté à mysql (show database;) et j’ai vu la bd : mtcl
j’ai fait : use mtcl : ok
j’ai fait : show tables : la seule table : memento y est
j’ai ensuite fait : describe memento et là :

voilà pour l’instant
merci

Effectivement, je viens de vérifier. Hum, Tu peux essayer de recopier l’ensemble de l’arborescence (quitte à sauvegarder l’ancienne) puis de réparer les bases de données via mysqlrepair, à les sauvegarder via mysqldump et les réimporter dans l’environnement sain.

J’ai également tenté en recopiant toute l’arborescence : j’ai remplacé mon dossier /var/lib/mysql par celui de la sid mais
le serveur ne veut pas redémarrer :

root@vorenus:/home/jt# 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 ven. 2015-07-17 16:21:31 CEST; 1min 16s ago
  Process: 13824 ExecStop=/etc/init.d/mysql stop (code=exited, status=0/SUCCESS)
  Process: 16257 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)

juil. 17 16:21:31 vorenus mysql[16257]: Starting MySQL database server: mysq...!
juil. 17 16:21:31 vorenus systemd[1]: mysql.service: control process exited...=1
juil. 17 16:21:31 vorenus systemd[1]: Failed to start LSB: Start and stop t...n.
juil. 17 16:21:31 vorenus systemd[1]: Unit mysql.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
root@vorenus:/home/jt# journalctl -xn
-- Logs begin at ven. 2015-07-17 08:47:45 CEST, end at ven. 2015-07-17 16:23:11 
juil. 17 16:21:31 vorenus /etc/init.d/mysql[16985]: 0 processes alive and '/usr/
juil. 17 16:21:31 vorenus /etc/init.d/mysql[16985]: [61B blob data]
juil. 17 16:21:31 vorenus /etc/init.d/mysql[16985]: error: 'Can't connect to loc
juil. 17 16:21:31 vorenus /etc/init.d/mysql[16985]: Check that mysqld is running
juil. 17 16:21:31 vorenus /etc/init.d/mysql[16985]: 
juil. 17 16:21:31 vorenus mysql[16257]: Starting MySQL database server: mysqld .
juil. 17 16:21:31 vorenus systemd[1]: mysql.service: control process exited, cod
juil. 17 16:21:31 vorenus systemd[1]: Failed to start LSB: Start and stop the my
-- Subject: L'unité (unit) mysql.service a échoué
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) mysql.service a échoué, avec le résultat failed.
juil. 17 16:21:31 vorenus systemd[1]: Unit mysql.service entered failed state.
juil. 17 16:23:11 vorenus kernel: perf interrupt took too long (2514 > 2500), lo
lines 1-16/16 (END

Génial on dirait du windows (general failure error in 0x23551ab6cf) il ne manque que le «type return»!

Je subodore que le mot de passe du debian user n’est pas le même. Donc

  1. essaye de mettre le vieux debian.cnf à la place du neuf.

  2. Que dit mysqld tapé en ligne de commande?

edit: systemctl status -l mysql.service dit qque chose de mieux?

j’ai fait le changement : copie de debian.cnf de la sid vers jessie en gardant toute l’arborescence de la sid (/var/lib/mysql/) mais le
problème est le même qu’avant.

root@vorenus:/etc/mysql# mysqld
150717 18:19:57 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
150717 18:19:57 [Note] mysqld (mysqld 5.5.43-0+deb8u1) starting as process 23445 ...
root@vorenus:/etc/mysql# 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 ven. 2015-07-17 18:19:20 CEST; 3min 16s ago
  Process: 20123 ExecStop=/etc/init.d/mysql stop (code=exited, status=0/SUCCESS)
  Process: 22694 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)

juil. 17 18:19:20 vorenus mysql[22694]: Starting MySQL database server: mysq...!
juil. 17 18:19:20 vorenus systemd[1]: mysql.service: control process exited...=1
juil. 17 18:19:20 vorenus systemd[1]: Failed to start LSB: Start and stop t...n.
juil. 17 18:19:20 vorenus systemd[1]: Unit mysql.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
root@vorenus:/etc/mysql# journalctl -xn
-- Logs begin at ven. 2015-07-17 08:47:45 CEST, end at ven. 2015-07-17 18:19:20 
juil. 17 18:17:01 vorenus CRON[22635]: pam_unix(cron:session): session closed fo
juil. 17 18:19:20 vorenus /etc/init.d/mysql[23423]: 0 processes alive and '/usr/
juil. 17 18:19:20 vorenus /etc/init.d/mysql[23423]: [61B blob data]
juil. 17 18:19:20 vorenus /etc/init.d/mysql[23423]: error: 'Can't connect to loc
juil. 17 18:19:20 vorenus /etc/init.d/mysql[23423]: Check that mysqld is running
juil. 17 18:19:20 vorenus /etc/init.d/mysql[23423]: 
juil. 17 18:19:20 vorenus mysql[22694]: Starting MySQL database server: mysqld .
juil. 17 18:19:20 vorenus systemd[1]: mysql.service: control process exited, cod
juil. 17 18:19:20 vorenus systemd[1]: Failed to start LSB: Start and stop the my
-- Subject: L'unité (unit) mysql.service a échoué
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) mysql.service a échoué, avec le résultat failed.
juil. 17 18:19:20 vorenus systemd[1]: Unit mysql.service entered failed state.
lines 1-16/16 (END)

Hum, essaye de le faire à l’ancienne via

Lorsque tu l’as lancé à la main, il n’ya avait pas de souci semble-t-il.

Vérifie qu’il marche par un «mysql -u root -p»

Tant que je me contentais de copier un dossier par BD, le serveur se lançait mais sans pouvoir accéder
aux tables.
Mais depuis que j’ai entièrement copié l’arborescence (/var/lib/mysql) plus moyen de démarrer le serveur.
même à l’ancienne, il ne démarre pas avec le même message qu’avant.
la commande : mysql -u root -p ne marche pas : (vu que le serveur est arrêté) :

Et quand tu lances le serveur en direct (mysqld en ligne de commande), il n’affichait pas de message d’erreur, mysqld reste lancé ou il plante?

Voilà ce que ça donne :

root@vorenus:/etc/mysql# mysqld

150717 19:13:25 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
150717 19:13:25 [Note] mysqld (mysqld 5.5.43-0+deb8u1) starting as process 25488 …

root@vorenus:/etc/mysql# mysql -u root -p

Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

C’est bizarre, il se lance mais ne fait rien. Tu as touché au fichier /etc/mysql/my.cnf? Tu as vérifié les droits du nouveau /var/lib/mysql ?

Le fichier my.cnf n’a pas été modifié.
En ce qui concerne les droits, voilà ce que j’ai :

root@vorenus:/var/lib# ls -l | grep mysql

drwx------ 12 mysql mysql 4096 juil. 17 19:13 mysql
drwx------ 14 mysql mysql 4096 juil. 17 18:02 mysql_old

[quote=“MisterMagoo”]ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)
(…)
[mono]systemd[/mono][1]: [mono]Failed to start LSB[/mono]: Start and stop t…n.[/quote]

Non, je parle du lancement en direct, d’habitude soit il y a un message d’erreur, soit ça donne

root@portos:/home/francois# /etc/init.d/mysql stop Stopping MySQL database server: mysqldmys. root@portos:/home/francois# mysqld 150717 22:56:52 [Note] Plugin 'FEDERATED' is disabled. 150717 22:56:52 InnoDB: The InnoDB memory heap is disabled 150717 22:56:52 InnoDB: Mutexes and rw_locks use GCC atomic builtins 150717 22:56:52 InnoDB: Compressed tables use zlib 1.2.3 150717 22:56:52 InnoDB: Using Linux native AIO 150717 22:56:52 InnoDB: Initializing buffer pool, size = 128.0M 150717 22:56:52 InnoDB: Completed initialization of buffer pool 150717 22:56:52 InnoDB: highest supported file format is Barracuda. 150717 22:56:53 InnoDB: Waiting for the background threads to start 150717 22:56:54 InnoDB: 1.1.8 started; log sequence number 449275551 150717 22:56:54 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306 150717 22:56:54 [Note] - '127.0.0.1' resolves to '127.0.0.1'; 150717 22:56:54 [Note] Server socket created on IP: '127.0.0.1'. 150717 22:56:54 [Note] Event Scheduler: Loaded 0 events 150717 22:56:54 [Note] mysqld: ready for connections. Version: '5.5.24-8' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Debian) or dans le cas cité, il bloque au lancement

Oui, mais [mono]systemd[/mono] n’est pas en ton royaume … de plus, tu n’est pas en [mono]Sid[/mono].

[code][23:04:31] ~ # /etc/init.d/mysql status
[info] /usr/bin/mysqladmin Ver 8.42 Distrib 5.5.43, for debian-linux-gnu on x86_64
Copyright © 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.

Server version 5.5.43-0+deb8u1-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 12 hours 8 min 15 sec

Threads: 5 Questions: 565 Slow queries: 21 Opens: 118 Flush tables: 1 Open tables: 105 Queries per second avg: 0.012.
[23:04:38] ~ #
[/code]

Je ne comprends pas ce que tu veux dire, si on lance mysqld directement en ligne de commande, sauf à ce que mysqld soit devenu peu bavard, il doit donner des messages de sorties ou d’erreurs, systemd ou pas. Or ici il n’y a rien semble-t-il (du moins dans ce qui a été transcrit):

root@vorenus:/etc/mysql# mysqld 150717 18:19:57 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead. 150717 18:19:57 [Note] mysqld (mysqld 5.5.43-0+deb8u1) starting as process 23445 ...