Partionnage puis Dump de base de données SQL

Fermé
iDre4mZ Messages postés 20 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 16 mai 2016 - 31 mars 2013 à 21:12
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 1 avril 2013 à 00:44
Bonsoir,

J'ai un serveur dédié cher ovh qui héberge un serveur Minecraft, et il y a quelques jours, nous nous sommes fait attaqués, suite a ça, nous avons perdus des données extrêmement importantes qui sont inaccessible en mode rescue (boot sur le réseau, notre dd est enfait utilisé en disque de données et non en system), ovh m'a envoyé le courriel suivant me donnant les marche a suivre pour booter mysql (les infos importantes sont sur une base sql) ->

Bonjour,


Le démarrage du service mysql depuis le mode rescue implique de monter la partition système et données mais également la pseudo-partition /proc (avec les options "-o bind") pour pouvoir chrooter système et permettre le démarrage de service comme mysql.

Une fois cette opération réalisée, vous pouvez démarrer mysql puis dumper les bases de données (avec mysqldump).


N'hésitez pas à nous contacter si vous avez des questions.

Cordialement
Auteur


Cependant, je ne comprends pas un traître mot de se charabias ^^

Si quelqu'un peux nous aider, ce serait super sympa !

Merci d'avance !

1 réponse

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
1 avril 2013 à 00:44
Ok donc je vais essayer de traduire du mieux que je peux. Comme tu le sais ton système linux est installé sur une partition "système", nommée "/". Pour faire très simple (à la limite du caricatural), c'est un peu l'équivalent de C: sous windows.

Dans / se trouvent un certain nombre de répertoires (par exemple /home, /proc etc...). Ces répertoires peuvent venir de différents endroits (une partition de disque dur, un partage réseau) et être de différente nature (des fichiers stockés sur un média comme ce serait le cas pour /home, des informations qui n'ont pas d'existence sur le disque mais qui représente l'état du système comme ce serait le cas pour /proc).

Sous linux les partitions sont notées /dev/sdXY ou X est une lettre qui désigne le disque et Y un entier strictement positif qui désigne désigne une partition. Par exemple /dev/sda1 désigne la première partition du premier disque dur.

Dans l'absolu, la commande "mount" sous linux permet d'alimenter le contenu de n'importe quel répertoire. /home, /proc etc ont été alimentés ainsi. Mais on pourrait très bien créer un répertoire vide (par exemple /mnt/linux/home et /mnt/linux/proc) et les faire apparaître dedans.

Ok maintenant supposons que je démarre sur un système tiers (par exemple un live-CD ou un live-USB). Alors rien ne m'empêche de créer un répertoire /mnt/linux et de monter la partition "/" de mon disque dur dans "/mnt/linux".

mkdir -p /mnt/linux
mount /dev/sda1 /mnt/linux # en supposant que / corresponde à /dev/sda1


De même je peux y monter le "/proc" dans /mnt/linux/proc" voire d'autre répertoire si ça m'amuse (/dev et /home par exemple). Pour faire apparaître le contenu d'un répertoire dans un autre répertoire (mount bind). C'est une technique couramment utilisée pour faire un chroot (chose que je vais expliquer dans le paragraphe qui suit). Par exemple si je veux faire apparaître /proc dans /mnt/linux/proc :

mount -o bind /proc /mnt/linux/proc


Je vais alors reconstituer depuis un système tiers toute l'arborescence de mon linux dans /mnt/linux. Ensuite, si je dis que je repositionne / dans /mnt/linux (change root = chroot), alors tout se passera "comme si" j'avais démarré normalement. C'est une technique qui est couramment utilisé sous linux pour par exemple réparer un linux qui ne démarre plus.

Tu peux en outre utiliser la commande mysqldump, qui sert à recopier dans un fichier le contenu d'une base mysql (dump). Ce fichier contient des commandes SQL qui permettent d'initialiser une base vide de sorte à y insérer toutes les données que tu as dumpé.
http://pwet.fr/man/linux/commandes/mysqldump/

mysqldump -u root -p --all-databases > /root/all_databases.sql


Tu auras alors dans /root un fichier all_databases.sql qui contient le dump. Tu peux ensuite quitter le chroot avec la commande "exit" ou en appuyant sur ctrl d. Du coup ton fichier sera dans /mnt/linux/root/all_databases.sql. Il ne reste plus qu'à le recopier où tu veux.

Ensuite il ne reste plus qu'à démonter ce que tu as monté :

umount /mnt/linux/proc
umount /mnt/linux


Note : personnellement je ne pense pas que pour monter /proc tu aies besoin de faire un bind. Personnellement j'aurais juste lancé :

mkdir -p /mnt/linux
mount /dev/sda1 /mnt/linux
chroot /mnt/linux
mount /proc
mysqldump -u root -p --all-databases > /root/all_databases.sql
umount /proc
(ctrl d)
cp /mnt/linux/proc /tmp
umount /mnt/linux


Bonne chance
2