begin process at 2010 02 10 04:57:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

sauvegarde d'une base de donnee


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

sauvegarde d'une base de donnee

vendredi 23 avril 2004 à 15:57:19 | sauvegarde d'une base de donnee

salley

Bonjour tout le monde,

Voila, je viens juste de reprendre un projet de base de donnee auquel je dois ajouter quelques fonctionnalites. Pour cela je veux faire une sauvegarde de la base de donnee Online pour ensuite travailler en local.

Mais le probleme est que cette base de donnee est vraiment enorme (plus de 800 000 entrees et 70MB) et lorsque je veux faire cette sauvegarde:

- avec l'outil PHPmyadmin: j'ai des messages d'erreurs du style:
MySQL client run out of memory


- avec le script phpmydump.php, cela marche pour les premieres entrees mais ensuite, j'a le message d'erreur suivant
Fatal error: Maximum execution time of 30 seconds exceeded in /home2/www/pastures/Kirt/admin_tools/phpmydump.php on line 181


- enfin j'ai essaye d'executer la commande (que j'execute avec l'outil phpMyAdmin du serveur Online:
BACKUP TABLE nom_de_table TO '/home2/www/pastures/Kirt/'


mais ensuite j'ai le message d'erreur suivant
Access denied for user: 'pastures@localhost' (Using password: YES)


Je pense que pour les deux premiers essais, je ne peux pas faire ma sauvegarde car ma base de donnees est trop grande mais pour le dernier essai avec la commande BaCKUP, je ne comprends pas l'erreur.

Si vous pouviez me donner une idee cela me depanerrai bein.

Merci
Salley
vendredi 23 avril 2004 à 16:56:38 | Re : sauvegarde d'une base de donnee

scoder

Membre Club
voilà un script que j'ai trouvé il y a quelques temps pour sauvegarder ma base mysql. il faut uploader le script sur la racine de ton ftp et lancer le fichier.

voilà le script :

<?php

// indiquer ici le serveur base ("localhost" sur levillage et lycos,

"sql.free.fr" sur free, etc.)
$host="localhost";

//indiquer ici le nom de votre base (votrelogin_xxxx sur village, votrelogin_db sur lycos, votrelogin sur free)
$base="mabase";

// indiquer ici l'user/utilisateur base (votrelogin_xxxx sur village.org,

votrelogin sur lycos et free )
$user="root";

// indiquer ici le pass de votre base (pass particulier possible sur levillage, pass du compte sur lycos et free)
$pass="";

//////////////// remplir au moins ci-dessus: server nom login pass de la base

////////////////////

//Par défaut toutes les tables sont sauvegardées à la racine (là où est ce

fichier)
// ajoutez entre les guillemets un critere de sélection, d'exclusion, un

dossier de stockage.
$exclus = ""; // Ne pas sauver les tables dont le nom contient.. ici:

"_index_" (utile pour Spip)
$prefixe = ""; // Ne sauver que les tables avec ce préfixe ex:

"spip_"
$dossier = ""; // Dossier de stockage de la sauvegarde ex:

"ecrire/data/" (utile pour Spip)

// Sauvegarde compressée par défaut. Remplacer true par false pour ne pas

compresser,
// ou si le serveur fait une erreur car il n'accepte pas la compression gz
$gz = true;


$format = "INSERT"; // utiliser l'instruction SQL INSERT
$insertComplet = true; // INSERT avec les noms des champs (sans: false)


echo "<br><H3>SAUVEGARDE DE VOTRE BASE DE DONNEES</H3>";
echo "<b>Sauvegarde FTP automatique,<br>puis vers votre ordinateur en cliquant

sur le lien</b><br>";

//CONNEXION
$link = mysql_connect($host, $user, $pass);
mysql_select_db($base) or die("Connexion impossible à la base de donnée

(vérifiez server nom login pass).");

function ecrire ($texte) {
global $fp, $_fputs;
$_fputs($fp, "$texte\n");
}

//calcul de la date
$temps = time();
$jour = date("j", $temps); //format numerique : 1->31
$annee = date("Y", $temps); //format numerique : 4 chiffres
$mois = date("m", $temps);
$heure = date("H", $temps);
$minutes = date("i", $temps);

//nom du fichier de sauvegarde: sauv_jj_mm_aaaa_nombase .gz si compressé ou

.sql si non compressé
if ($gz) $ext = ".gz";
else $ext = ".sql";

// pour éviter un éventuel téléchargement par un tiers, remplacez ci-dessous

"sauv_" par "wcoqp_" ou autre
$nom = $dossier . "sauv_" . $base . "_" . $prefixe . $jour. "_" . $mois. "_" .

$annee . $ext;
// PS: pas grand chose à voir, les pass sont écrits en crypté...

$date = "$jour/$mois/$annee a $heure" . "h" . $minutes;

//creation et ouverture du fichier
if ($gz) $fp = @gzopen($nom, "wb");
else $fp = fopen($nom, "wb");
if (! $fp) die("impossible de créer $nom.");
$_fputs = ($gz) ? gzputs : fputs;

//ecriture entete du fichier
ecrire("# sauvegarde de la base $base");
ecrire("# le $date");

// pour chaque table...
$res = mysql_list_tables($base, $link);
$num_rows = mysql_num_rows($res);
$i = 0;
while ($i < $num_rows)
{
$tablename = mysql_tablename($res, $i);
// éviter les tables avec le préfixe signalé par $prefixe
if (substr($tablename,0,strlen($prefixe)) != $prefixe) { echo

"<br><font color='pink'>> $tablename NON INCLUS ($prefixe non

souhaité)</font>";}
else {
// éviter les tables avec mot exclus signalé par $exclus
if (strstr($tablename, $exclus)) {echo "<br><font color='pink'>>

$tablename NON INCLUS ($exclus non souhaité)</font>";}
else{
// ecrire la structure de la table
echo "<br>$tablename : <font color='blue'> Structure

OK </font>";
ecrire("# structure de la table $tablename");
ecrire("DROP TABLE IF EXISTS `$tablename`;\n");
// requete de creation de la table
$query = "SHOW CREATE TABLE $tablename";
$resCreate = mysql_query($query);
$row = mysql_fetch_array($resCreate);
$schema = $row[1].";";
ecrire("$schema\n");

// ecrire le contenu de la table
echo "<font color='green'> Données OK </font>";
ecrire("# donnees de $tablename");
$query = "SELECT * FROM $tablename";
$resData = mysql_query($query);
if (mysql_num_rows($resData) > 0)
{
$sFieldnames = "";
if ($insertComplet)
{
$num_fields =

mysql_num_fields($resData);
for($j=0; $j < $num_fields; $j++)
{
$sFieldnames .=

"`".mysql_field_name($resData, $j) ."`";
if ($j<$num_fields-1) $sFieldnames .=

", ";
}
$sFieldnames = "(" . $sFieldnames .

")";
}
$sInsert = "INSERT INTO `$tablename`

$sFieldnames values ";

while($rowdata = mysql_fetch_assoc($resData))
{
$lesDonnees =

"<guillemet>".implode("<guillemet>,
<guillemet>", $rowdata)."<guillemet>";
$lesDonnees =

str_replace("<guillemet>", "'",
addslashes($lesDonnees));

if ($format == "INSERT") $lesDonnees =

"$sInsert($lesDonnees);";
ecrire("$lesDonnees\n");
}
}
}
$i++;
}
}

ecrire("# ------- fin ------------");

// fermer le fichier
if ($gz) gzclose($fp);
else fclose($fp);


echo "<br><br><b>Sauvegarde FTP finie !</b><br><br>";
echo "Fichier de sauvegarde : <font color='blue'> $nom </font>(" .

ceil(filesize("$nom")/1024) . " Ko).";

echo "<br><br><b>Pour le télécharger sur votre ordinateur:</b> <a

href='$nom'>CLIQUER ICI</a><br><br>";
echo "(N'oubliez pas de supprimer vos anciennes sauvegardes régulièrement)";

?>

pour récupérer ta base après ça devient galère, en tout cas je ne l'ai pas encore fait puisque je n'ai pas eu de prob heureusement, mais mon fichier de backup fait 25Mo, soit + de 10000 pages sous word et il est impossible de le récupérer avec mysql car le délai est trop long....
je ne m'y connais pas trop en la matière mais peut être qu'en affectant tout le contenu de ton fichier à une variable, et en exécutant cette variable en tant que requête ça peut marcher mais je ne garantis rien.


bon courage!
vendredi 23 avril 2004 à 17:37:40 | Re : sauvegarde d'une base de donnee

salley

Merci pour le code mais en fait j'en ai deja un ; phpmydump et le probleme qui se pose est qu'au bout de 30 seconde le code se stoppe, c la limite d'execution par defaut de pas mal d'hebergeur.

N'ayant pas acces au fichier de configuration php.ini de mon hebergeur, j'ai essayer de mettre la fonction set_time_limit(200) dans le script de phpmydump mais maintenant ce qui se passe c'est que le script se stoppe un peu apres (il a le temps de sauvegarder 22000 entrrees au lie de 19000)

Finalement, le script se stoppe quand meme largement avant les 200 secondes que j'ai fixe mais cela ne cree pas de "fatal error".

Salley
vendredi 23 avril 2004 à 17:42:22 | Re : sauvegarde d'une base de donnee

scoder

Membre Club
Désolé mais dans ton cas je ne vois pas du tout quoi faire.....
Je vais y penser et regarder si j'ai pas un script qui traine mais j'en doute

SCoder
mercredi 18 août 2004 à 12:13:01 | Re : sauvegarde d'une base de donnee

porciner

J'ai exactement le meme problème que toi, je suis chez lycor (version pme) et impossible de sauvegarder ma base.
Si quelqu'un à une idée ou si une solution à été trouvé postez la svp.
Merci.
jeudi 19 août 2004 à 09:11:33 | Re : sauvegarde d'une base de donnee

salley

Salut porciner,

En fait ce que j'ai fais, c'est que jai utilisé le protocole SSH (une sorte de Telnet sécurisé) pour avoir directement accés au shell du serveur de mon herbergeur et donc ne pas être gêner par les limitations de Apache, PHP ou MySQL.

Salut porciner,

En fait ce que j'ai fais, c'est que jai utilisé le protocole SSH (une sorte de Telnet sécurisé) pour avoir directement accés au shell du serveur de mon herbergeur et donc ne pas être gêner par les limitations de Apache, PHP ou MySQL.

Pour cela, j'ai utilisé le logiciel PuTTY (logiciel gatuit).

Ensuite j'ai utilisé l'outil mysqldump qui est fournis avec mySQL, donc j'ai tapé la commande:



mysqldump -q name_of_the database > name_of_the_backup.sql -p password


avec
-q: option pour socket UNIX
name_of_the database: nom de ta base de donnée
name_of_the_backup.sql: nom de la sauvegarde de ta base donnée
-p:option d'éctiure (utile pour les grosses bases de données)
password: mot de passe pour accéder à ta base de donnée.

Après cela, tu n'as plus besoin que d'aller chercher ta base do donnée sur le serveur de ton herbergeur grâce à un logiciel FTP.

Si tu as encore des problèmes n'hésite pas.

Salley
mardi 17 mai 2005 à 16:56:39 | Re : sauvegarde d'une base de donnee

kclito

Super ton script scoder il m'a bcp aidé

- © Kclito -
lundi 1 août 2005 à 15:34:05 | Re : sauvegarde d'une base de donnee

kalamya

Merci Scoder !!!!!!!!!!!!!
Tu n'imagines pas combien de temps j'ai bataillé pour trouver un exemple simple et qui fonctionne surtout !! Je suis sûre que tu ferais beaucoup d'heureux si tu le mettais dans les sources à consulter sur le site. Encore merci !!!!


Cette discussion est classée dans : base, code, erreur, donnee, sauvegarde


Répondre à ce message

Sujets en rapport avec ce message

erreur dans mon code + MySQL [ par hadjiphp ] Bonjour, merci pour ce site et souhaite de trouver tous ce que je veux. je vous remercie. Bonjour, j'ai une question : j'ai un programme qui per affichage d'une erreur lors de connection a ma base de données [ par jcoq6340 ] slt, je viens de débuter avec php. voila mon problème ce code permet de saisir des infos(un pseudo et un message) et les sauvegarder dans une base de bonjour, petit soucis une erreur bete je pense [ par jerome33610 ] Bonjour, Pouvez-vous m'éclairer ? J'ai une erreur mais je ne met pas le doigt dessus, voyez ci-dessous voici l'erreur trouvé : Warning: mysql_fetch Aide codage formulaire php pour base de données, toutes les données ne sont pas enregistrées. [ par sebing ] Bonjour, Je redemande votre aide, je veux améliorer mon formulaire, mais celui ne fonctionne plus. En effet une seule donnée est enregistrée dans la Export XLS [ par j3r3m067 ] Bonjour, Voila je dois réaliser un export en XLS, de plusieur base de données (en faissant des jointures). Mon problème ce situe sur le fait que si je problème connection base sql2008 [ par zuddap ] Bonjour a tous, voila j'explique ma situation: je n'arrive pas a trouver le code qui me permet de connecté mon code php distant(serveur hébergé) a m erreur puor recuperer les donnees d'une base de données [ par macadelino ] Bonjour, j'essai de recuperer des valeurs dans une base de données,mais j'ai l'erreur suivante et toujours la meme erreur ,meme quand je change le scr code d'exportation d'une base de donnée mysql vers excel [ par noursbts ] bienvenueje veux le code de l'exportation d'une base de donnée mysql vers excel. sauvegarde base de donnée [ par docteursas ] BonjourJe travaille actuellement sur un projet. je dois installer l'application avec une base de données sur différents sites.j'aimerais avoir la poss la base de donnee ne se connecte pas [ par koukitta303 ] je travaille avec wamp mais ma base ne veut pas ce connecter j'utilise php.je veut bien qq1 qui m'aide merci


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales