OVH Community, votre nouvel espace communautaire.

URGENT besoin aide probleme BD suite a suppression par erreur


TBC_Ly0n
29/12/2014, 23h31
Ouais, enfin, Mydumper n'est pas bien compliqué à mettre en oeuvre...
C'est presque dommage de s'en priver pour faire des dumps cohérents.

cassiopee
24/12/2014, 20h52
Citation Envoyé par arn0
Ah ok j'avais pas vraiment compris sa, je pensais que ce qui est dangereux c'est de recopier ses fichiers dans ce répertoire. Je savais pas que le faite de juste copier ses fichiers sur mon PC pouvez-vous faire planter mysql... :s
Non, dans ce sens là, ça ne va pas planter mysql mais cela risque fortement de
te donner une sauvegarde dite inconsistente, ce qui est le mal absolu en matière
de bases de données (c'est-à-dire que les fichiers ne contiendront qu'une partie seulement
des données, le reste étant en RAM au moment de ta copie de fichiers).

Cette sauvegarde ne sera ensuite pas exploitable pour restaurer la base en cas de besoin.

Et donc pour restaurer une BD via mysql -u root -p BASE < BASE.sql faut arreter mysql avant ou pas ?
Non, avec l'outil "mysql", tu n'as pas besoin d'arrêter MySQL (d'ailleurs si tu arrêtais MySQL, l'outil
"mysql" ne serait plus utilisable). Néanmoins, il est préférable que pendant les quelques secondes
que l'opération va durer (pour une petite base de 38 Mo), la base ne soit pas accédée par ailleurs
(je pense ici à un site web reposant sur cette base, qu'il vaudrait mieux mettre en mode maintenance,
le temps de la sauvegarde).

Et si l'on veut faire une importation via phpmyadmin (si c'est possible avec une BD de 38Mo
par exemple) faut-il également arreter mysql ?
Pas davantage (et si tu arrêtais MySQL, tu ne pourrais plus te servir de phpMyAdmin) mais
même réserves que ci-dessus, attention aux accès simultanés à cette base en cours de
restauration.

Il y a t il une commande pour restaurer uniquement table2 dans BASE par exemple ?
Pas directement, on peut le faire via la commande "mysql" ou encore dans phpMyAdmin mais cela
suppose que tu aies un fichier SQL avec seulement structure + données de cette table.

Si, au moment de la restauration, tu n'as qu'un gros fichier SQL avec toutes les tables dedans,
il faudra séparer la structure et les données de la table que tu veux restaurer, à l'aide d'un éditeur
de texte par exemple.

Donc extraire du gros fichier "mabase.sql" un fichier plus petit, mettons "matable.sql".
puis faire l'importation via :

Code:
mysql -u user -ppassword mabase < matable.sql
Comme dans "matable.sql" il n'y a que des instructions concernant la table "matable",
cela ne va pas toucher aux autres tables de la base en question.


Maintenant on peut également, au moment de la sauvegarde, indiquer que le fichier SQL
ne doit contenir que telle ou telle table, via une commande du genre :

Code:
mysqldump -u user -ppassword mabase matable > matable.sql
qui va seulement exporter la table nommée "matable" (structure + données) depuis
la base appellée "mabase" dans le fichier "matable.sql".

bbr18
24/12/2014, 12h13
upload_max_filesize
post_max_size

tu demandes un peu à Google et/ou tu ouvres les manuels ^^

bbr18
24/12/2014, 10h45
que tu restaures en ssh ou avec phpmyadmin c'est pareil (sauf qu'en ssh tu n'es pas limité et plus rapide), pas besoin de stopper mysql

arn0
24/12/2014, 10h36
Citation Envoyé par cassiopee
Oui mais c'est exactement le même souci : on ne manipule pas à chaud (c'est-à-dire avec MySQL en fonctionnement)
les fichiers de ce répertoire. Que ce soit pour les copier vers l'extérieur (sauvegarde) ou pire encore, pour recopier
des fichiers dans ce répertoire (restauration).
Ah ok j'avais pas vraiment compris sa, je pensais que ce qui est dangereux c'est de recopier ses fichiers dans ce répertoire. Je savais pas que le faite de juste copier ses fichiers sur mon PC pouvez-vous faire planter mysql... :s

Et donc pour restaurer une BD via mysql -u root -p BASE < BASE.sql faut arreter mysql avant ou pas ? Et si l'on veut faire une importation via phpmyadmin (si c'est possible avec une BD de 38Mo par exemple) faut-il également arreter mysql ? Il y a t il une commande pour restaurer uniquement table2 dans BASE par exemple ?

cassiopee
24/12/2014, 10h26
Citation Envoyé par arn0
Oui effectivement je sais que j'ai eu de la chance sur ce coup mais quand je disias "pourquoi il faut arreter" je parlais de la sauvegarde du répertoire lib/mysql et pas de ma façon d'avoir réparé le problème.
Oui mais c'est exactement le même souci : on ne manipule pas à chaud (c'est-à-dire avec MySQL en fonctionnement)
les fichiers de ce répertoire. Que ce soit pour les copier vers l'extérieur (sauvegarde) ou pire encore, pour recopier
des fichiers dans ce répertoire (restauration).

bbr18
24/12/2014, 10h25
" je parlais de la sauvegarde du répertoire lib/mysql
nous aussi nous parlions de ça : à ne pas faire

Gaston_Phone
24/12/2014, 10h23
Pourquoi faire des exportations de bases de données manuellement avec phpmyadmin alors que tu peux automatiser cela avec un script et un cron ?
Voir ma réponse #10.

arn0
24/12/2014, 10h19
Citation Envoyé par cassiopee
Oui, de la même façon qu'un gars peut gagner 1 million d'Euros en jouant à la roulette russe la première fois
et qui dit "pourquoi il faut arrêter ?"

Lorsque tu m'as sollicité je te l'ai dit de ne pas le faire, Starouille te le dit aussi, BBR18 te le dit aussi, TBC_Ly0n également ...

Tu ne pourras pas dire que tu n'auras pas été prévenu.
Oui effectivement je sais que j'ai eu de la chance sur ce coup mais quand je disias "pourquoi il faut arreter" je parlais de la sauvegarde du répertoire lib/mysql et pas de ma façon d'avoir réparé le problème.

Si jamais j'ai de nouveau un problème avec les BD je mettrais le fichier .sql sur le serveur (que j'ai au préalable sauvegardé via l'export de phpmyadmin) et je ferais mysql -u root -p BASE < BASE.sql afin de restaurer la ou les tables corrompus par exemple.

Au passage petite question (je vais surement me faire taper sur les doigts à nouveau ) peut-on augmenter la capacité de phpmyadmin concernant la restauration via l'importation ? Car il me semble que s'est bridé ?

cassiopee
24/12/2014, 09h59
Citation Envoyé par Gaston_Phone
Moi aussi je le lui ai dit (-> #17) de ne pas jouer à l'équilibriste.
Oui en effet, un de plus

Gaston_Phone
24/12/2014, 09h55
Citation Envoyé par cassiopee
Lorsque tu m'as sollicité je te l'ai dit de ne pas le faire, Starouille te le dit aussi, BBR18 te le dit aussi, TBC_Ly0n également ...
Tu ne pourras pas dire que tu n'auras pas été prévenu.
Moi aussi je le lui ai dit (-> #17) de ne pas jouer à l'équilibriste.

cassiopee
24/12/2014, 09h50
Citation Envoyé par arn0
Pourquoi il faut arreter ? Car sa à fonctionné dans mon cas...
Oui, de la même façon qu'un gars peut gagner 1 million d'Euros en jouant à la roulette russe la première fois
et qui dit "pourquoi il faut arrêter ?"

Lorsque tu m'as sollicité je te l'ai dit de ne pas le faire, Starouille te le dit aussi, BBR18 te le dit aussi, TBC_Ly0n également ...

Tu ne pourras pas dire que tu n'auras pas été prévenu.

TBC_Ly0n
23/12/2014, 00h04
Citation Envoyé par arn0
Pourquoi il faut arreter ? Car sa à fonctionné dans mon cas...
Ca s'appelle avoir un gros coup de chance. Ca ne se reproduira pas à chaque fois !
Au mieux, ce sera une perte de quelques lignes, au pire, la perte de la table... voire la base entière !

Ceci est dû au fait que MySQL, pour des raisons de performance n'écrit pas dans les fichiers MYD, MYI, ibd de manière synchrone et stocke les modifications en mémoire. Pour avoir un statut cohérent au niveau du système de fichiers, il faut demander à MySQL de tout "flusher" sur disque, et s'assurer qu'aucune modification n'a alors lieu. Ca se fait avec un "flush tables with read lock" ou en arrêtant MySQL. Ca entraine une indisponibilité de service.

Pareil pour remettre les données, ça ne se fait pas avec MySQL allumé !

Citation Envoyé par arn0
je sais que c'est un travail d'équilibriste et c'est pour sa que je cherche des moyens de sauvegarde simple à faire car pour info ce n'est pas mon job la gestion du serveur
mydumper
mylvmbackup
des scripts pour gérer le FTPBackup
une procédure pour utiliser ces scripts pour sauvegarder / restaurer tes bases.

Si tu ne sais pas restaurer ta base de données, ça ne sert à rien de la sauvegarder...
(c'est de la provoc', pour ceux qui n'auraient pas compris)

buddy
20/12/2014, 20h07
Citation Envoyé par arn0
j'ai parlé trop vite. En gros je met le fichier BASE.sql dans n'importe quel repertoire du serveur via FTP puis en SSH je vais dans ce repertoire et je tape la commande mysql -u root -p BASE < BASE.sql et sa restaure la base où il y a la table corrompu c'est bien cela ?
tu as essayé un mysqlcheck repair &optimize ? http://www.thegeekstuff.com/2011/12/mysqlcheck/

arn0
20/12/2014, 19h53
OK merci et si je veux sauvegarder/copier mes bases vers un répertoire de sauvegarde du serveur ou une sauvegarde vers un backup FTP externe il faut que je fasse sa : mysql -u root -p BASE > BASE.sql ou c'est une autre commande ?

bbr18
20/12/2014, 19h44
oui c'est ça

arn0
20/12/2014, 19h34
Citation Envoyé par bbr18
je crois qu'il va falloir faire un upgrade de tes connaissances...
j'ai parlé trop vite. En gros je met le fichier BASE.sql dans n'importe quel repertoire du serveur via FTP puis en SSH je vais dans ce repertoire et je tape la commande mysql -u root -p BASE < BASE.sql et sa restaure la base où il y a la table corrompu c'est bien cela ?

bbr18
20/12/2014, 18h54
Pour la commande je me met dans quel repertoire pour restaurer la base ? car a ma connaissance les fichiers BD se trouvent uniquement dans /lib/mysql non ?
je crois qu'il va falloir faire un upgrade de tes connaissances...

arn0
20/12/2014, 18h26
Oui les .sql via l'export de phpmyadmin sont sur mon PC ainsi que les autres fichiers lib/mysql.

Pour la commande je me met dans quel repertoire pour restaurer la base ? car a ma connaissance les fichiers BD se trouvent uniquement dans /lib/mysql non ?

Car dans mon problème j'avais uniquement un soucis sur la table que j'ai supprimé et pas le reste de la BD.

Si je veux faire une sazuvegarde complète de la BD sans passer par phpmyadmin et le mettre dans un répoertoire de mon serveur ou un backup FTP externe quelles sont les commandes ?

bbr18
20/12/2014, 13h36
euh...
ton dump est sur ton PC d'après ce que tu dis
tu ouvres ton logiciel de FTP avec identifiant root (du serveur), port 22 et tu envoies ton fichier dans /home par exemple
ensuite tu te connectes en ssh
cd /home
et tu importes ton dump avec la ligne donnée au-dessus

arn0
20/12/2014, 13h32
Citation Envoyé par bbr18
et ça faut arrêter, surtout si tu le fais sans stopper mySQL
Pourquoi il faut arreter ? Car sa à fonctionné dans mon cas...

- - - Mise à jour - - -

Citation Envoyé par Gaston_Phone
Un travail d'équilibriste qui n'est pas du tout compatible avec une gestion informatique propre et correcte.
je sais que c'est un travail d'équilibriste et c'est pour sa que je cherche des moyens de sauvegarde simple à faire car pour info ce n'est pas mon job la gestion du serveur

- - - Mise à jour - - -

Citation Envoyé par janus57
Bonjour,

tu as juste a upload ton dump sur le serveur (en SCP, SFTP ou autre) et faire la commande de @BBR.

Sinon pour un système relativement fiable, du fait un script bash qui te dump toute tes BDD dans un fichiers spécifique puis envoie ce fichier sur un esapce de stockage externe et le tout en cron.

Ou tu peu utiliser un script déjà prêt à l'emploi ou il suffit juste de le configurer, exemple : http://forum.kimsufi.com/showthread....ian-vers-hubic

Cordialement, janus57
merci pour l'info, peux tu me dire comment faire un upload du dump sur le serveur ? Car à part exporter via phpmyadmin je ne sais pas le faire en ligne de commande :s

Faut que j'active mon backup FTP et me penche sur le fonctionnement de celui-ci déjà en faisant l'export des donnée de façon manuelle puis tenter de le faire de façon automatique après

Gaston_Phone
20/12/2014, 13h03
Citation Envoyé par bbr18
et ça faut arrêter, surtout si tu le fais sans stopper mySQL
Un travail d'équilibriste qui n'est pas du tout compatible avec une gestion informatique propre et correcte.

bbr18
20/12/2014, 12h57
je sauvegarde le répertoire lib/mysql
et ça faut arrêter, surtout si tu le fais sans stopper mySQL

janus57
20/12/2014, 12h52
Citation Envoyé par arn0
Merci de la commande mais mes sauvegardes ne sont pas sur le serveur. je l'ai stocke sur mon PC en local :s
Justement j'aimerais changer mon "système de sauvegarde" par un plus fiable mais je ne sais pas trop comment mis prendre afin d'avoir des sauvegardes fiables qui permettent une restauration facile et fiable... Si tu as des tuyaux aussi je suis preneur !
Bonjour,

tu as juste a upload ton dump sur le serveur (en SCP, SFTP ou autre) et faire la commande de @BBR.

Sinon pour un système relativement fiable, du fait un script bash qui te dump toute tes BDD dans un fichiers spécifique puis envoie ce fichier sur un esapce de stockage externe et le tout en cron.

Ou tu peu utiliser un script déjà prêt à l'emploi ou il suffit juste de le configurer, exemple : http://forum.kimsufi.com/showthread....ian-vers-hubic

Cordialement, janus57

Gaston_Phone
20/12/2014, 12h44
Citation Envoyé par arn0
Merci de la commande mais mes sauvegardes ne sont pas sur le serveur. je l'ai stocke sur mon PC en local :s
Justement j'aimerais changer mon "système de sauvegarde" par un plus fiable mais je ne sais pas trop comment mis prendre afin d'avoir des sauvegardes fiables qui permettent une restauration facile et fiable... Si tu as des tuyaux aussi je suis preneur !
--> Revenir à la case #10.

arn0
20/12/2014, 12h34
Citation Envoyé par bbr18
le plus simple et rapide en ssh tu te déplaces dans le répertoire où se trouve le dump de ta bdd
Code:
cd /ton/repertoire
puis
Code:
mysql -u root -p nom_bdd < ton_dump.sql
Merci de la commande mais mes sauvegardes ne sont pas sur le serveur. je l'ai stocke sur mon PC en local :s
Justement j'aimerais changer mon "système de sauvegarde" par un plus fiable mais je ne sais pas trop comment mis prendre afin d'avoir des sauvegardes fiables qui permettent une restauration facile et fiable... Si tu as des tuyaux aussi je suis preneur !

bbr18
20/12/2014, 12h25
le plus simple et rapide en ssh tu te déplaces dans le répertoire où se trouve le dump de ta bdd
Code:
cd /ton/repertoire
puis
Code:
mysql -u root -p nom_bdd < ton_dump.sql

janus57
19/12/2014, 23h12
Citation Envoyé par Gaston_Phone
Voir le # 10.
Bonjour,

sur un dédié y a mieux et plus puissant : SSH -> MySQL Client
0 limite lié à PHP ou Apache pour la restauration (souvent la restauration de BDD de plusieurs centaine de Mo ou Go ne passe pas via des scripts PHP).

Cordialement, janus57

Gaston_Phone
19/12/2014, 22h41
Voir le # 10.

arn0
19/12/2014, 22h28
Citation Envoyé par TBC_Ly0n
On ne sauvegarde pas les fichiers dans /var/lib/mysql sans prendre quelques précautions (flush tables with read lock) Sinon, il y a un risque de corruption de données.
Je sauvegarde le répertoire lib/mysql ET je fait un Dump des bases via phpmyadmin en exportant. Mais le soucis avec phpmyadmin c'est quon ne peut pas restaurer facilement apparemment...

Si tu as des solutions de sauvegarde/restauration des bases simple et efficace, je suis preneur !

Gaston_Phone
19/12/2014, 19h56
Citation Envoyé par starouille
Estime toi bien heureux dans ce cas, c'est très dangereux de faire ça.
à l'avenir, comme dit au dessus, oublie phpmyadmin pour ce type de manip et passe par le client mysql.
Qui plus est, tu risque pas de cliquer sur le mauvais bouton.. , et tu pourra restaurer sans timeout.
La solution par scripts --> OVH - Sauvegardes et Restaurations de Bases de Données via un script.

TBC_Ly0n
19/12/2014, 19h21
On ne sauvegarde pas les fichiers dans /var/lib/mysql sans prendre quelques précautions (flush tables with read lock) Sinon, il y a un risque de corruption de données.

starouille
19/12/2014, 19h00
Citation Envoyé par arn0
[RESOLU] C'est résolu après avoir remis les fichiers dans lib/mysql et mis les bon droit et les bon groupes, sa refonctionne à chaud sans avoir à redemarrer les services.

merci à ceux qui m'ont aidés !
Estime toi bien heureux dans ce cas, c'est très dangereux de faire ça.

à l'avenir, comme dit au dessus, oublie phpmyadmin pour ce type de manip et passe par le client mysql.

Qui plus est, tu risque pas de cliquer sur le mauvais bouton.. , et tu pourra restaurer sans timeout.

arn0
19/12/2014, 14h07
[RESOLU] C'est résolu après avoir remis les fichiers dans lib/mysql et mis les bon droit et les bon groupes, sa refonctionne à chaud sans avoir à redemarrer les services.

merci à ceux qui m'ont aidés !

globalcom
19/12/2014, 12h58
Tu crées une nouvelle base Mysql.
Tu te mets dans le répertoire dans lequel tu as mis ta sauvegarde.sql
Tu passes cette commande :

mysql -u root -p -h localhost tanouvellebase_mysql < tasauvegarde.sql;

Ça va te demander le mot de passe root de mysql., tu le tapes et voilà.

Ensuite, tu modifies les config du site pour qu'ils prennent en compte la nouvelle base et le pass.

Si tout est ok, tu supprimes l'ancienne base corrompue.

arn0
19/12/2014, 12h39
OK je vais essayer mais bon j'ai pas envie de foutre encore plus la merde en tappant les commandes... :s

Si les commandes ne fonctionnent pas comment je pourrais faire pour importer dans phpmyadmin la base que j'ai sauvegardé afin de corriger le problème de la table supprimé ?

globalcom
19/12/2014, 12h20
Ben essaye.
Mais normalement, il doit pas y avoir de / à la fin des commandes.

arn0
19/12/2014, 11h55
Le problème c'est que la BD en question est assez lourde donc je crois que phpmyadmin est bridé pour cela je crois ?

De plus la BD fonctionn il y a uniquement la table que j'ai supprimer qui deconne :s surement a cause du groupe different des autres je pense ?

Si je fais les commandes suivantes des fichiers de la table que j'ai supprime penses-tu que sa va marcher pour les remettre dans le bon groupe ? :

chown mysql:mysql /var/lib/mysql/radius/raddact.MYD/

chown mysql:mysql /var/lib/mysql/radius/raddact.frm/

globalcom
19/12/2014, 11h49
Si tu as "exporté sur phpmyadmin", tu as un fichier du type mabase.sql
Le plus simple est de recréer une base et d'importer le fichier mabase.sql depuis phpmyadmin.

arn0
19/12/2014, 10h16
Bonjour,

j'ai fait une connerie

j'ai voulu vider une table dans une de mes bases sur phpmyadmin et j'ai à la place appuyer sur suppression pff le boulet !

Avant j'avais bien sur sauvegarder dans var/lib/mysql et exporter sur phpmyadmin.

mais comme s'est la premiere fois que sa m'arrive je sais pas comment mis prendre.

j'ai essayer de remettre les fichiers supprimer dans le repertoire en question dans var/lib/mysql. Sa me remet bien la table dans phpmyadmin mais quand je faist "reparer/optimisé" sa me met des messages erreurs sur la table en question et la j'ai un "utilisé" dans phpmyadmin au lieu d'avoir les caracteristiques!

Comment pourrais-je faire sans rendre mon serveur indisponible ? j'ai vu en remettant les fichiers en question que maintenant la propriété est root root au lieu de mysql et les droit son rw-r-r et les autres sont rw-rw. (via filzella j'ai remis les bon droits acces)

EDIT : quand je clique sur la structure la la table supprimé sur phpmyadmin sa me dit :

requête SQL: Modifier

SHOW INDEX FROM `table` ;

MySQL a répondu Documentation
#1017 - Can't find file: './ra/table.frm' (errno: 13)

alors qu'il est bien dans lib/mysql peut etre faut-il remettre les proprio/groupe dans les 2 fichiers .frm, .myd et .myi pour que sa fonctionne mais je sais pas comment faire ?

je pense qu'il faut que je remette les deux fichiers .myd et .frm dans le groupe "mysql/mysql" mais je ne sais pas comment faire ?

Merci pour votre aide