Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1151 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  script multi serveur

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

script multi serveur

n°1606051
narutopgm
Posté le 30-08-2007 à 00:21:23  profilanswer
 

Bonjour.
Je voudrai faire en sorte que mon site sois jammai hs
donc je voulai savoir si il était possible que toute les 24h, ma base mysql sois duplique dans un autre serveur mysql
 
je m'explique :
j'ai un site A(primaire)
j'aimerai que toutes les 24h que le serveur B se sycronise avec le A
 
j'ai penser a un script php, qui serait executer par webcron , ou un service cron du genre.
 
ma question est: est-ce possible ?
 
si oui , comment ?

mood
Publicité
Posté le 30-08-2007 à 00:21:23  profilanswer
 

n°1606052
flo850
moi je
Posté le 30-08-2007 à 00:24:32  profilanswer
 

oui , utilise un script cron
mysql_dump pour extraire les données de ta base
puis rsync  pour transferer vers serveur B
puis chargement des données dans B


Message édité par flo850 le 30-08-2007 à 00:24:41
n°1606057
narutopgm
Posté le 30-08-2007 à 01:22:08  profilanswer
 

sa donnerai sa ?
pour mysql_dump.

Code :
  1. <?php
  2. $password = $_GET['pw'];
  3. if($password=="xxxxxxxxxxxxxxxxxxx" )
  4. {
  5. // base de donnée
  6. $dbhost = 'localmachin';
  7. $dbuser = 'xxxxxxx';
  8. $dbpass = 'xxxxxxx';
  9. $dbname = 'xxxxxxx';
  10. //option
  11. $use_gzip = "yes";  //compression oui ou non  
  12. $remove_sql_file = "yes"; // suprimer fichier sql
  13. $remove_gzip_file = "yes"; // suprimer fichier gzip
  14. // config
  15. $savepath = "/home/xxx/www";
  16. $use_ftp = "yes";
  17. $ftp_server = "distanmachin";
  18. $ftp_user_name = "xxxxxx";
  19. $ftp_user_pass = "xxxxxxxx";
  20. $ftp_path = "/backupsql";
  21. // pas touche!!!!
  22. $filename = "$savepath/backup.sql";
  23. passthru("mysqldump --opt -h$dbhost -u$dbuser -p$dbpass $dbname >$filename" );
  24. if($use_gzip=="yes" ){
  25.  $zipline = "tar -czf backup.tar.gz backup.sql";
  26.  shell_exec($zipline);
  27. }
  28. if($remove_sql_file=="yes" ){
  29.  exec("rm -r -f $filename" );
  30. }
  31. if($use_gzip=="yes" ){
  32.  $filename2 = "$savepath/backup.tar.gz";
  33. } else {
  34.  $filename2 = "$savepath/backup.sql";
  35. }
  36. if($use_ftp == "yes" ){
  37.  $ftpconnect = "ncftpput -u $ftp_user_name -p $ftp_user_pass -d debsender_ftplog.log -e dbsender_ftplog2.log -a -E -V $ftp_server $ftp_path $filename2";
  38.  shell_exec($ftpconnect);
  39.  echo "<h4><center>$filename2 Was created and uploaded to your FTP server!</center></h4>";
  40. }
  41. if($remove_gzip_file=="yes" ){
  42.  exec("rm -r -f $filename2" );
  43. }
  44. }
  45. else
  46. {
  47. echo 'acces proteger' ;
  48. }
  49. ?>


Message édité par narutopgm le 30-08-2007 à 01:24:35
n°1606062
leflos5
On est ou on est pas :)
Posté le 30-08-2007 à 05:23:09  profilanswer
 

Y'a des fonctions ftp et de traitements des fichiers en php, parce que exec c'est pas forcément passe partout :)
 
Sinon, si c'est un serveur où tu as la main dessus, réplication de base sur un serveur mysql esclave ailleurs, comme ça même pas besoin de gérer la chose ;)

n°1606130
flo850
moi je
Posté le 30-08-2007 à 10:07:29  profilanswer
 

perso , j'aurai pas fait ça en php , et jutiliserai plutot rsync que des commandes ftp pour ne transferer que les changements
 
et sinon, il y aussi la réplication , mais il faut une version recente de Mysql

n°1606153
omega2
Posté le 30-08-2007 à 10:56:22  profilanswer
 

Récente comment? La réplication existe dans mysql depuis mysql 3.23.15 ( http://dev.mysql.com/doc/refman/4. [...] ation.html ) soit depuis mai 2000.
 
Evidement, on a beaucoup plus de réglages et moins de perte de puissance (et de retard de réplication) avec un 5.1 qu'un 3.23 . ;)

n°1606154
narutopgm
Posté le 30-08-2007 à 10:58:20  profilanswer
 

J'ai un hebergement web que je control avec cpanel ,
 j'ai un truc ssh mais j'ai pas encore compris comment il fonctionne (sur cpanel sinon ssh je m'en suis deja servis sur un dedie sous debian)
 
ma version de mysql est la 5.0.27
 
donc si avec cette description vous pouver me dire le meilleur choix cela serrais simpa

n°1606159
flo850
moi je
Posté le 30-08-2007 à 11:04:12  profilanswer
 

omega2 a écrit :

Récente comment? La réplication existe dans mysql depuis mysql 3.23.15 ( http://dev.mysql.com/doc/refman/4. [...] ation.html ) soit depuis mai 2000.
 
Evidement, on a beaucoup plus de réglages et moins de perte de puissance (et de retard de réplication) avec un 5.1 qu'un 3.23 . ;)


tu r"sume bien la situation  
ca existe depuis pas mal de temps , mais ce n'est ( pour ce que j'ai pu en voir ) que depuis mysql5 qu'on peut envisager de faire de la réplication entre deux sites distants

n°1606180
omega2
Posté le 30-08-2007 à 11:27:22  profilanswer
 

En php 4.0.0 on pouvait déjà indiquer des hôtes distants (encore heureux sinon quel est l'intérêt de la réplication si on est limité à la même machine) et je serais étonné que ça n'ai pas été le cas depuis le début même si je ne peux pas vérifié dans la doc de mysql (ils n'ont plus de documentation propre à mysql3)
Source http://dev.mysql.com/doc/refman/4. [...] howto.html petit 9 : la colonne MASTER_HOST permettant de donner l'adresse du serveur principal
 
J'ai l'impression que tu confonds avec la réplication circulaire qui n'était pas disponible en mysql3 à ma connaissance (je ne me rappelle plus à partir de quelle version c'est devenu possible)

n°1606182
narutopgm
Posté le 30-08-2007 à 11:28:38  profilanswer
 

ok, mais d'apres se que j'ai compris il faut toucher a la config du fichier my.cfg (fichier de configuration de mysql)
mais en aillant un hebergement web je ne pense pas que j'ai accés a ceci

mood
Publicité
Posté le 30-08-2007 à 11:28:38  profilanswer
 

n°1606213
omega2
Posté le 30-08-2007 à 12:07:05  profilanswer
 

J'imagine que tu n'as pas non plus le droit non plus de rajouter des user mysql ni de modifier ceux qui existent et qu'ils ne permettent pas un accés à distance à leur serveur mysql.
Si c'est bien ça, alors en effet, la réplication n'est pas une solution dans ton cas. Il ne te reste plus qu'a passer par la création de fichiers qui te permettront d'importer les données sur ton autre serveur.
Si tu ne peux pas le faire avec les utilitaires de mysql et que tu n'as pas droit non plus à un select dont le résultat est sauvé dans un fichier ("SELECT mescolonnes INTO OUTFILE  'nom_fichier' FROM ..." ) alors il ne te restera plus qu'a utilisé un script fait intégralement en php.

n°1606252
narutopgm
Posté le 30-08-2007 à 12:55:54  profilanswer
 

j'ai le droi de crée des user , et mettre des ip qui on le droi de se connecter a distance

n°1606263
omega2
Posté le 30-08-2007 à 13:13:21  profilanswer
 

Dans ce cas, je te renvois à la documentation de mysql :  
http://dev.mysql.com/doc/refman/5. [...] howto.html
Tu risques de tatoner un tout petit peu au début (si tu peux fait un test avec deux installations locales de mysql pour bien voir la manoeuvre) mais si tu suis bien les instructions tu devrais réussir à mettre en place rapidement une réplication entre les deux serveurs. Après ça tu n'auras plus rien à toucher pour que le second serveur reste à jour. (avec juste un petit décalage de temps)

n°1607126
narutopgm
Posté le 01-09-2007 à 18:44:36  profilanswer
 

cho je cromprend pas grand chose lol

n°1607174
leflos5
On est ou on est pas :)
Posté le 01-09-2007 à 23:45:26  profilanswer
 

C'est pourtant pas bien dur!
 
Suffit de configurer les serveur avec un id différent, donner à l'esclave les paramètres (dans le fichier de config c'est plus simple et permanent), créer un utilisateur ou donner les droits à un existant pour la réplication et faire un start slave.
 
Rien de plus simple, mais du premier coup ça marche jamais, parce que t'oublies toujours un truc même en suivant le tuto qui est pas exhaustif ;)

n°1607211
narutopgm
Posté le 02-09-2007 à 11:57:05  profilanswer
 

ok ^^

n°1607228
leflos5
On est ou on est pas :)
Posté le 02-09-2007 à 13:44:14  profilanswer
 

Bon ça tourne?

n°1607234
narutopgm
Posté le 02-09-2007 à 14:08:05  profilanswer
 

nn lol j ai pas, pu le faire , le server a lacher donc j ai trouver un autre hebergement mais il me permet plus de faire sa

n°1607257
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 02-09-2007 à 16:27:34  profilanswer
 

mais les différences qui sont faites sur le serveur B, tu t'en fous ?
ce serveur B est "caché du public" tant que le A marche c'est ça ?


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607262
narutopgm
Posté le 02-09-2007 à 16:53:47  profilanswer
 

nn , lol le second est accessible

n°1607265
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 02-09-2007 à 17:05:20  profilanswer
 

Bah dans ce cas ça va poser problème.
En plus, si des msg (par exemple) sont posté sur chaque serveur, t'auras tres probablement des ID identiques pour des msg différents, etc...


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607278
narutopgm
Posté le 02-09-2007 à 17:52:39  profilanswer
 

ok dc fodrai que j explike au gen que  aucune interaction ne peut etre effectuer sur les serveur secondaire

n°1607279
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 02-09-2007 à 17:54:07  profilanswer
 

euh, sinon tu peux forcer des ID paire sur l'un et des impaires sur l'autre, ou alors tu fais les maj en temps réel si la deuxieme BDD est accessible autrement que par "localhost" :)


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607290
narutopgm
Posté le 02-09-2007 à 18:30:31  profilanswer
 

lol pourquoi il mette pas un plugin sous joomla pour faire sa ....

n°1607365
leflos5
On est ou on est pas :)
Posté le 02-09-2007 à 22:45:11  profilanswer
 

T'es sur que tu as pas le droit de répliquer ta base?

n°1607369
narutopgm
Posté le 02-09-2007 à 22:58:41  profilanswer
 

je peut rien modifier sur mon hebergeur donc oui je suppose

n°1607370
leflos5
On est ou on est pas :)
Posté le 02-09-2007 à 23:13:24  profilanswer
 

Faut pas supposer ;)
Bon au pire, il te reste le script php :spamafote:
 
Je suppose que tu as qu'une base?

n°1607373
narutopgm
Posté le 02-09-2007 à 23:27:30  profilanswer
 

c bon g  le script en php quand meme ^^

n°1607460
omega2
Posté le 03-09-2007 à 10:15:21  profilanswer
 

Pour mettre une réplication circulaire sans collision des autoincrément :
http://www.onlamp.com/pub/a/onlamp [...] cation.htm
 
En gros, tu dis à chaque serveur qu'il doit augmenter l'autoincrément de n (n devant être supérieur ou égal au nombre de serveur mysql prévus) et à chacun tu dis de commencer à un nombre différent (1 pour le premier, 2 pour le second, ...)
 
Evidement, ça ne sert à rien si on ne peut pas mettre en place de réplication ce qui semble être ton cas sur ton nouvel hébergeur d'après ce que tu nous dis.

n°1607737
narutopgm
Posté le 03-09-2007 à 20:02:39  profilanswer
 

merci pour la reponse j aurai bien aimmer regarder ton lien mais  ton lien est mort

n°1607744
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 03-09-2007 à 20:29:56  profilanswer
 

omega2 a écrit :

Pour mettre une réplication circulaire sans collision des autoincrément :
http://www.onlamp.com/pub/a/onlamp [...] cation.htm
 
En gros, tu dis à chaque serveur qu'il doit augmenter l'autoincrément de n (n devant être supérieur ou égal au nombre de serveur mysql prévus) et à chacun tu dis de commencer à un nombre différent (1 pour le premier, 2 pour le second, ...)
 
Evidement, ça ne sert à rien si on ne peut pas mettre en place de réplication ce qui semble être ton cas sur ton nouvel hébergeur d'après ce que tu nous dis.


Le problème avec cette technique c'est que si tu ouvres de nouveaux serveurs, tu es bayzé :p :/
 
Sinon, tu peux utiliser un serveur "central" avec une bdd contactable a distance, qui se charge d'attribuer les ID.
Si le serveur central ne repond pas, soit tu ne fais rien, soit tu fais "en roue libre", soit avec un protocole en anneau (me demande pas comment faire, mais c'est une idée à creuser, d'ailleurs si c'est faisable il n'y a meme pas besoin d'un serveur central :p)
 
EDIT: mais ce serait vachement long, donc vaut mieux garder le serveur central et avoir ça en solution de secours si il est down ;)


Message édité par ZePRiNCE le 03-09-2007 à 20:33:37

---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607946
omega2
Posté le 04-09-2007 à 10:39:24  profilanswer
 

ZePRiNCE > Quand on met en place une réplication circulaire avec un autoincrément supérieur à 1, on se débrouille pour se garder quelques places libres pour le jour où on a besoin de rajouter d'autres serveurs. Par contre, c'est vrai que le jour où on atteint la limite, on a plus d'autre choix que de l'augmenter si on veut rajouter d'autres serveurs et ça veut dire qu'on devra redémarrer les serveurs 1 par 1. A par si on a vraiment sous estimé les besoins (ou l'augmentation des besoins), c'est le genre de cas qui ne devrait pas arriver avant plusieurs années.
Pour la technique que tu proposes, je n'ai jamais entendu parler de solutions de ce genre avec mysql. D'ailleurs je n'ai jamais entendu parler d'un serveur central mysql capable de surcharger certaines valeurs du my.ini (ou my.cnf) des autres serveurs.  
 
narutopgm > Quand je l'avais posté, le lien marchait encore. Cherche "auto_increment_increment" dans google, t'en trouveras d'autres même si toutes les explications ne sont pas aussi bien faites que sur la page que je te proposais (mais qui a disparu :( ).

Message cité 1 fois
Message édité par omega2 le 04-09-2007 à 10:41:07
n°1607952
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 04-09-2007 à 10:43:51  profilanswer
 

omega2 a écrit :

Pour la technique que tu proposes, je n'ai jamais entendu parler de solutions de ce genre avec mysql. D'ailleurs je n'ai jamais entendu parler d'un serveur central mysql capable de surcharger certaines valeurs du my.ini (ou my.cnf) des autres serveurs.


Tu parles de l'attribution des ID par un serveur central ?
C'est parfaitement possible.
 
Les incrémentations "naturels" se font sur ce serveur central, puis on recupere l'id avec mysql_insert_id() et le serveur distant la receptionne (par un file_get_content() par exemple).
L'avantage d'utiliser mysql_insert_id() c'est que meme s'il y a plusieurs demande d'id pour la meme table au meme instant T, le serveur central ne fournira aucun doublon ;)

Message cité 1 fois
Message édité par ZePRiNCE le 04-09-2007 à 10:44:05

---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607954
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 04-09-2007 à 10:46:33  profilanswer
 

D'ailleurs pas besoin d'un file_get_content() si le serveur mysql central est joignable depuis l'exterieur (je pense).
 
Ou pas besoin qu'il le soit si on utilise file_get_content()
 
Au choix ;)
 
 
Au fait, c'est effectivement une methode tres mc gyver mais on fait ce qu'on peut ^^


Message édité par ZePRiNCE le 04-09-2007 à 10:49:39

---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607968
omega2
Posté le 04-09-2007 à 11:09:08  profilanswer
 

ZePRiNCE a écrit :


Tu parles de l'attribution des ID par un serveur central ?
C'est parfaitement possible.
 
Les incrémentations "naturels" se font sur ce serveur central, puis on recupere l'id avec mysql_insert_id() et le serveur distant la receptionne (par un file_get_content() par exemple).
L'avantage d'utiliser mysql_insert_id() c'est que meme s'il y a plusieurs demande d'id pour la meme table au meme instant T, le serveur central ne fournira aucun doublon ;)

[:atlantis]  [:sprint] (je pensais quand même que t'avais une solution sérieuse à proposer)
 
Entre une solution propre, sérieuse et éprouvé mais qui demande le changement d'un paramètre tous les 4 ou 5 ans et une solution bidouille à mort, je préfaire la solution propre et sérieuse. [:airforceone]  
 
Je sais bien que le php permet de faire de la bidouille mais c'est pas une raison pour rajouter de la bidouille dans la gestion des bases de données.
 
En fait, ta solution n'est valable que dans un seul cas : quand on doit simuler une réplication par ce qu'on a besoin d'une réplication quasi temps réel sans pouvoir mettre en place une vrai réplication. Ceci dit, c'est le genre de cas où il vaut mieux réfléchir aux choix d'hébergements (ou des règles de sécurités) plutôt que de partir dans des solutions de contournements plus ou moins foireuses.

n°1607973
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 04-09-2007 à 11:17:47  profilanswer
 

Euh, ça peut etre fait tres proprement, tu créé une fonction request_id('table_user') par exemple, ça se connecte au mysql.central.com et tu obtiens ton id.
 
Le seul probleme, c'est que ça créé une connexion supplémentaire pour chaque ajout, et ce peutetre sur un autre continent, donc il faut que ce soit un serveur de kalitay...


Message édité par ZePRiNCE le 04-09-2007 à 11:18:46

---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1607978
omega2
Posté le 04-09-2007 à 11:27:26  profilanswer
 

T'as beau dire, même si c'est fait le plus proprement possible, ça reste quand même de la bidouille. Bon, dans le cas présent, il n'a pas le choix : il est obligé de partir dans de la bidouille s'il veut avoir une équivalent à la réplication sans changer d'hébergeur pour la base de donnée.

n°1608014
leflos5
On est ou on est pas :)
Posté le 04-09-2007 à 12:27:58  profilanswer
 

POur les retardataires, il y a un merveilleux truc qui vient d'apparaitre mais non disponible sous windows encore: proxy mysql.
 
Avec ça plus de soucis de ce genre en utilisant différentes méthodes ;)

n°1608024
rufo
Pas me confondre avec Lycos!
Posté le 04-09-2007 à 12:46:05  profilanswer
 

C'est Mysql Proxy ;)
 
http://linuxfr.org/2007/08/09/22813.html
 
Effectivement, ça a l'air pas mal...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  script multi serveur

 

Sujets relatifs
ouvrir et lire un fichier sur serveur[SQL Server] Retrouver le login / mot de passe du serveur
Probleme script d'ajout d'entrée dans une base mysqlProbleme COOKIE site multi langue[RESOLU]
Je cherche un script d'explorateur de FTP à la JBC ExplorerServeur de developpement partagé
Utilisation des PIA Excel dans un serveur qui n'a pas officescript php GD
[C#.net] Tester l'existence d'un répertoire sur un serveur FTPScript de rotation d'élements html
Plus de sujets relatifs à : script multi serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR