script multi serveur - PHP - Programmation
Marsh Posté le 30-08-2007 à 00:24:32
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
Marsh Posté le 30-08-2007 à 01:22:08
sa donnerai sa ?
pour mysql_dump.
Code :
|
Marsh Posté le 30-08-2007 à 05:23:09
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
Marsh Posté le 30-08-2007 à 10:07:29
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
Marsh Posté le 30-08-2007 à 10:56:22
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 .
Marsh Posté le 30-08-2007 à 10:58:20
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
Marsh Posté le 30-08-2007 à 11:04:12
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. |
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
Marsh Posté le 30-08-2007 à 11:27:22
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)
Marsh Posté le 30-08-2007 à 11:28:38
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
Marsh Posté le 30-08-2007 à 12:07:05
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.
Marsh Posté le 30-08-2007 à 12:55:54
j'ai le droi de crée des user , et mettre des ip qui on le droi de se connecter a distance
Marsh Posté le 30-08-2007 à 13:13:21
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)
Marsh Posté le 01-09-2007 à 23:45:26
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
Marsh Posté le 02-09-2007 à 14:08:05
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
Marsh Posté le 02-09-2007 à 16:27:34
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 ?
Marsh Posté le 02-09-2007 à 17:05:20
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...
Marsh Posté le 02-09-2007 à 17:52:39
ok dc fodrai que j explike au gen que aucune interaction ne peut etre effectuer sur les serveur secondaire
Marsh Posté le 02-09-2007 à 17:54:07
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"
Marsh Posté le 02-09-2007 à 18:30:31
lol pourquoi il mette pas un plugin sous joomla pour faire sa ....
Marsh Posté le 02-09-2007 à 22:58:41
je peut rien modifier sur mon hebergeur donc oui je suppose
Marsh Posté le 02-09-2007 à 23:13:24
Faut pas supposer
Bon au pire, il te reste le script php
Je suppose que tu as qu'une base?
Marsh Posté le 03-09-2007 à 10:15:21
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.
Marsh Posté le 03-09-2007 à 20:02:39
merci pour la reponse j aurai bien aimmer regarder ton lien mais ton lien est mort
Marsh Posté le 03-09-2007 à 20:29:56
omega2 a écrit : Pour mettre une réplication circulaire sans collision des autoincrément : |
Le problème avec cette technique c'est que si tu ouvres de nouveaux serveurs, tu es bayzé
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 )
EDIT: mais ce serait vachement long, donc vaut mieux garder le serveur central et avoir ça en solution de secours si il est down
Marsh Posté le 04-09-2007 à 10:39:24
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 ).
Marsh Posté le 04-09-2007 à 10:43:51
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
Marsh Posté le 04-09-2007 à 10:46:33
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 ^^
Marsh Posté le 04-09-2007 à 11:09:08
ZePRiNCE a écrit : |
(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.
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.
Marsh Posté le 04-09-2007 à 11:17:47
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...
Marsh Posté le 04-09-2007 à 11:27:26
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.
Marsh Posté le 04-09-2007 à 12:27:58
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
Marsh Posté le 04-09-2007 à 12:46:05
C'est Mysql Proxy
http://linuxfr.org/2007/08/09/22813.html
Effectivement, ça a l'air pas mal...
Marsh Posté le 30-08-2007 à 00:21:23
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 ?