|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Salut tout le monde,
J'ai une base appelé BASENAME contenant des tables MyISAM et INNODB. J'aimerai que chaque jour une sauvegarde la base soit effectuée avec au bout du nom la date du jour. Exemple: BASENAME_2005_09_01 Toute fois, je ne veux pas que cette sauvegarde ai lieue dans un fichier de type txt, je veux que cette sauvegarde ai lieu au sein même de MySQL, c'est à dire une duplication de la base accessible aux scripts externes (PHP, etc...) Si je me suis mal fait comprendre, voilà un exemple d'utilisation: Au jour J, la base est copié avec le nom approprié BASENAME_J Au lancement de l'application web (PHP en l'occurence), l'utilisateur a le choix de la base de données qu'il veut utiliser entre BASENAME, BASENAME_J, BASENAME_J-1, BASENAME_J-2, etc ... Chaque jour une nouvelle base sera ajouté à MySQL. Cela permet de remonter dans le temps. Comment puis faire de telle duplication de la base MySQL ?? Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Bonjour,
La réplication me parait convenir à ton cas. Cf http://jgrondin.developpez.com/article/MySQL/Replication_MySQL/
__________________
Pensez au bouton
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Merci mais l'exemple est avec deux serveurs differents.
Est-ce possible de l'adapter sur le même serveur? |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
Bonjour,
Si tu veux tout faire sur la m^me machine, il te faudra installer plusieurs serveur MySQL sur ta machine afin de pouvoir lancer une réplication multi-serveur. Pour répondre à ton probleme sinon, il te suffit chaque soir de faire mysqldump de ta base BASENAME, de changer le nom de la base BASENAME en BASENAME_YYYY_MM_DD dans les lignes CREATE DATABASE et DROP DATABASE et avec ce script de créer ta base BASENAME_YYYY_MM_DD. En plus, c'est plus facile à mettre en place qu'une réplication... HTH |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
merci ren0, j'aime bien ton idée.
Est-il possible d'automatiser cette tâche, et de la lancer lors la première connexion à la base de la journée par un internaute ?? Merci. |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Autrement j'ai essayer en copiant les fichiers .frm etc mais il doit y avoir des données autrepart avec InnoDB.
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
Style ? dans un script PHP ou un truc du genre ?
Si tu as le choix il vaut mieux faire un cron car c'est tout de même un traitement assez lourd et si ton premier utilisateur doit attendre une création de base pour sa première connexion, il risque d'avoir un time out. En plus, il faudrait que ton ton serveur web dispose des autorisations pour éxécuter des commandes system (mysqldump). Donc, oui tu peux le faire à la première connexion d'un utiulisateur, mais idéalement, il vaut mieux faire un script qui sera planifié chaque nuit... |
|
|
00
|
|
|
#8 | |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Citation:
je vais me renseigner sur la façon de procéder, je n'en ai encore jamais fait. Si tu as des liens ou des informations à me recommander, je suis preneur. Cela se deroule sur un Windows Server 2003 (pas le choix...) Merci d'avance NicO. |
|
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
alors, ça va être facile, tu écris un petit .bat et tu créé une tâche planifiée quotidienne..
|
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Ok je vois comment procéder mais comment savoir quels fichiers à sauvegarder ??
Je m'explique, dans mon repertoire MySQL/ j'ai un repertoire DATA/ dans lequel se trouvent mes bases de données sous formee de repertoire par exemple BASENAME/ dans lequel se trouve les fichiers .frm Ensuite j'ai egalement dans le repertoire DATA/ un fichier nommé ibdata1 qui se trouve être énorme... qu'en est-il de lui ? Ne pas oublier que 90% de mes tables sont au format InnoDB. j'ai deja essayer de copier simplement le repertoire BASENAME/ mais la base et sa structure ne sont copiés dans son integralité. Merci. |
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
ton fichier ibdata c'est ton datafile innoDB....
passe plutôt par un script à base de mysqldump pour copier ta base... http://dev.mysql.com/doc/mysql/fr/mysqldump.html |
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
J'ai essayer par script PHP
system("mysqldump --host=localhost --user=username --password=pass BASENAME_J | --host=localhost --user=username --password=pass BASENAME_J-1 "); J'ai pourtant creer BASENAME_J-1 avant sans structure. Sans succès rien ne se passe... |
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : septembre 2005 Messages : 24 ![]() |
est ce que l'algo fonctionne en ligne de commande ?
|
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Je n'ai pas testé....
je n'ai encore jamais utilisé les lignes de commandes Un petit descriptif du procédé serait le bienvenu. Je suis avec EasyPHP en local. Merci d'avance. |
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : septembre 2005 Messages : 24 ![]() |
La function system() de php sert à éxécuter des commandes au niveau système comme si tu le faisais au niveau d'un terminal dos ou linux suivant ton os.
Tu peux faire un copier coller de ta commande et la saisir dans le terminal. Quel est la réponse ? |
|
|
00
|
|
|
#16 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
bon je viens d'executer la ligne ci dessous en par le dos:
1/ Il copie bien la structure des tables 2/ Problème: certaines tables contiennent + d'enregistrements, d'autres - !! Donc le transfert n'est pas très fidèle. Sachant que mes tables sont en innoDB.... Code :
|
||
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2005 Messages : 41 ![]() |
Problème résolu au niveau de la ligne de commande.
Par contre je n'arrive pas à repliquer avec le script PHP et la commande SYSTEM().... Il ne se passe rien. J'ai donner tous les droits àl'utilisateur pour faire mes essais. |
|
|
00
|
|
|
#18 |
|
Membre à l'essai
![]() Inscription : septembre 2005 Messages : 24 ![]() |
Je ne peux pas te dire, ça fait trop longtemps que j'ai fait du php.
a+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com