Aller au contenu

Dump SQL automatique en PHP


Sujets conseillés

Posté

Bonsoir à tous,

Avant de tester ce code sur mon dédié, j'aimerais savoir plusieurs choses:

<?php

set_time_limit(90);

$host = "localhost";

$user = "****";

$password = "****";

$database = "****";

$date = date("d-m-Y");

$backup = $database . $date . '.sql.gz';

$command = 'cd /home/xxxxx/www/dump/';

$command .= 'mysqldump --default-character-set=latin1 --h$host --u$user --p$password $database | gzip> $backup';

system($command);

?>

Ce code marchera-t-il selon vous?

Le fichier sera-t-il enregistré comme convenu dans /home/xxxxx/www/dump/?

J'ai un doute sur la dernière question. Vaut-il mieux mettre le chemin avant ou après?

Merci beaucoup ;)

Posté

Bonjour

Puisque tu as un dédié, pourquoi ne lances-tu pas diretement la commande mysqldump avec la crontab ? C'est plus simple que de passer par php.

Posté

Et pourquoi pas :

$command = 'mysqldump --default-character-set=latin1 --h$host --u$user --p$password $database | gzip> /home/xxxxx/www/dump/$backup';

Ca me semble plus sûr si tu doutes du résultat. Après, faut voir si ta base de données n'est pas trop volumineuse, sinon, tu risques de dépasser la limite d'exécution du script PHP.

Posté (modifié)

Merci pour vos réponses ;)

Mon seul soucis est que j'y connais pas grand chose en dédié (disons les bases).

J'aimerais bien le faire par cron, mais je crois que je dois appeler un fichier interne au dédié non? En C ou quelque chose dans le genre? Un script shell? (j'y connais rien la dedans ^^).

Pour PHP, le problème ne vient pas vraiment de la base volumineuse (je fais ca a 3h du matin quand y'a pas un chat et j'ajoute set_time_limit(90); qui me donne 1min30 de plus pour l'exécution du script au cas où). Seulement, en ayant testé mon code, la sauvegarde en PHP ne marche pas...

Modifié par zirone
Posté

C'est plus simple que php, il suffit juste de lancer mysqldump avec les bons paramètres:

Tu édites ta crontab en faisant crontab -e (et la normalement tu te retrouve sous vi)

ensuite si tu veux par exemple lancer ton dump a 0h30 tous les jours, tu peux faire quelque chose comme cela :

30 0 * * * (. /etc/profile; mysqldump --default-character-set=latin1 --h<ton host> --u<ton user> --p<ton password> <ta base> | gzip > /<ton repertoire>/backup_$(date +%d-%m-%Y-%H-%M).sql )

Posté

Tout à fait d'accord avec ReikiDojo...

L'utilisation de Php ne t'apporte rien dans ton exemple.

Pour le cron, il est très simple de le mettre en place soit par webmin, soit en lançant simplement un "crontab -e" en tant que root sous putty.

Mais attention dans ce dernier cas, tu vas lancer l'éditeur "vi" qu'il vaut mieux connaître avant.

Pour info, les commandes de bases de vi sont:

i pour passer en mode insertion

<esc> pour revenir au mode par défaut

<esc>:q! pour quitter sans sauver les modifs

<esc>:wq pour quitter en sauvant les modifs...

Et tu te déplaces avec les flèches du clavier. <esc> est la touche d'échappement en haut à gauche de ton clavier.

Une recommandation: évite d'utiliser le clavier numérique pour les chiffres :P

C'est très basique et ne représente que le minimum vital, mais cela devrait te permettre de t'en sortir sans trop de dégâts :P

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...