PDA

Bekijk Volledige Versie : [PHP/MySQL] Syncronisatie server database met lokale database



Juliette
14/09/04, 02:35
Hi allemaal,

Heb met drie keer in de rondte gezocht in de PHP documentatie, maar waarschijnlijk lees ik erover heen...

Bestaat er een (simpele) manier om een server database (mySql) met een lokale database te synchroniseren ?

Het gaat om een situatie waar een CMS lokaal draait en lokaal wijzigingen uitgetest worden, waarna indien e.e.a. ok bevonden is de wijzigingen op de server doorgevoerd moeten worden.

Zit al bijna te denken aan een log bijhouden van de lokale wijzigingen (de sql-queries daarvan) en die dan op de server draaien, maar goed, kan me niet voorstellen dat er geen makkelijkere oplossing
zou zijn.

Alle suggesties welkom !

Groetjes, Juliette

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We're all in the gutter, but some of us are looking at the stars. (Oscar Wilde)

Daniel Tryba
14/09/04, 02:45
Juliette <jrf[nospam]@jokeaday.net> wrote:
> Bestaat er een (simpele) manier om een server database (mySql) met een
> lokale database te synchroniseren ?
>
> Het gaat om een situatie waar een CMS lokaal draait en lokaal
> wijzigingen uitgetest worden, waarna indien e.e.a. ok bevonden is de
> wijzigingen op de server doorgevoerd moeten worden.
>
> Zit al bijna te denken aan een log bijhouden van de lokale wijzigingen
> (de sql-queries daarvan) en die dan op de server draaien, maar goed,
> kan me niet voorstellen dat er geen makkelijkere oplossing zou zijn.

Welke versie van mysql? 4.x heeft master/slave relaties, welke gewoon
zoals jij voorstelt met logs synchronizeren... als je remote een
verbinding kan maken dan is de locale server dus de master en laat je je
slave handmatig repliceren...

--

Daniel Tryba

Juliette
14/09/04, 03:25
Daniel Tryba was on 14-09-2004 inspired enough to write:
> Juliette <jrf[nospam]@jokeaday.net> wrote:
>> Bestaat er een (simpele) manier om een server database (mySql) met een
>> lokale database te synchroniseren ?
>>
>> Het gaat om een situatie waar een CMS lokaal draait en lokaal
>> wijzigingen uitgetest worden, waarna indien e.e.a. ok bevonden is de
>> wijzigingen op de server doorgevoerd moeten worden.
>>
>> Zit al bijna te denken aan een log bijhouden van de lokale wijzigingen
>> (de sql-queries daarvan) en die dan op de server draaien, maar goed,
>> kan me niet voorstellen dat er geen makkelijkere oplossing zou zijn.
>
> Welke versie van mysql? 4.x heeft master/slave relaties, welke gewoon
> zoals jij voorstelt met logs synchronizeren... als je remote een
> verbinding kan maken dan is de locale server dus de master en laat je je
> slave handmatig repliceren...

Hi Daniel,

Wauw wat een enorm snelle reactie !
MySql versie is 4.0.16.
Maar ik snap niet helemaal wat je bedoelt met de logs vs synchroniseren ..

Met synchroniseren bedoelde ik iets in de richting van een php-command die zegt: dit is de master, dat is de slave, zoek de verschillen en werk de slave bij (zonder dat ik verdere info mee hoef te
sturen over wat er gewijzigd zou zijn)

Met de logs bedoel ik: voor elke wijziging die via het lokale cms gemaakt wordt, de sql-query die de wijziging lokaal maakt loggen (dus ook de wijzigingen die bij het testen afgekeurd wordt of later
nog een keer aangepast wordt) en daarna alle gelogde queries draaien op de server database. (wat mij bepaald geen efficiente en ook eigenlijk redelijk fout-gevoelige oplossing lijkt)

Als je me (misschien met wat links) verder de weg zou willen wijzen ben ik je zeer dankbaar !

Groetjes, Juliette

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We're all in the gutter, but some of us are looking at the stars. (Oscar Wilde)

Daniel Tryba
14/09/04, 03:45
Juliette <jrf[nospam]@jokeaday.net> wrote:
> MySql versie is 4.0.16. Maar ik snap niet helemaal wat je bedoelt met
> de logs vs synchroniseren ..

Niets versus... gewoon de logs synchronizeren.... maw gewoon
repliceren...

> Met synchroniseren bedoelde ik iets in de richting van een php-command
> die zegt: dit is de master, dat is de slave, zoek de verschillen en
> werk de slave bij (zonder dat ik verdere info mee hoef te sturen over
> wat er gewijzigd zou zijn)

> Met de logs bedoel ik: voor elke wijziging die via het lokale cms
> gemaakt wordt, de sql-query die de wijziging lokaal maakt loggen (dus
> ook de wijzigingen die bij het testen afgekeurd wordt of later nog een
> keer aangepast wordt) en daarna alle gelogde queries draaien op de
> server database. (wat mij bepaald geen efficiente en ook eigenlijk
> redelijk fout-gevoelige oplossing lijkt)

Die logs zoals jij ze bedoelt heeft mysql dus zelf.

> Als je me (misschien met wat links) verder de weg zou willen wijzen
> ben ik je zeer dankbaar !

Het staat heel uitvoerig in de online musql handleiding:

http://dev.mysql.com/doc/mysql/en/Replication.html

Heel kort samengevat.

a-in den beginne zijn master en slave gelijk.
b-vanaf dat moment begin je op je master logs bij te houden van de
wijzigingen.
c-is de master in een dusdanig staat dat je die wilt syncen met de slave
dan kan je dat gewoon repliceren en ben je weer terug bij a.

c kan je bereiken met of
LOAD DATA FROM MASTER
of
START SLAVE

op de slave uit te voeren (afhankelijk van versie).

Ik heb het zelf nog nooit op deze manier gebruikt overigens... Een goed
alternatief wat ik kan bedenken is om ipv de master/slave replicatie te
gebruiken de database handmatig te repliceren mbv rsync. Het groten
nadeel hiervan is dat op dat moment de server uit de lucht moet
aangezien je buiten de server om aan het rotzooien bent (maar dat zou
wellicht verholpen kunnen worden door met de hotcopy scripts te spelen).

--

Daniel Tryba

Juliette
14/09/04, 03:55
Daniel Tryba was on 14-09-2004 inspired enough to write:
> Juliette <jrf[nospam]@jokeaday.net> wrote:
>> MySql versie is 4.0.16. Maar ik snap niet helemaal wat je bedoelt met
>> de logs vs synchroniseren ..
>
> Niets versus... gewoon de logs synchronizeren.... maw gewoon
> repliceren...
>
>> Met synchroniseren bedoelde ik iets in de richting van een php-command
>> die zegt: dit is de master, dat is de slave, zoek de verschillen en
>> werk de slave bij (zonder dat ik verdere info mee hoef te sturen over
>> wat er gewijzigd zou zijn)
>
>> Met de logs bedoel ik: voor elke wijziging die via het lokale cms
>> gemaakt wordt, de sql-query die de wijziging lokaal maakt loggen (dus
>> ook de wijzigingen die bij het testen afgekeurd wordt of later nog een
>> keer aangepast wordt) en daarna alle gelogde queries draaien op de
>> server database. (wat mij bepaald geen efficiente en ook eigenlijk
>> redelijk fout-gevoelige oplossing lijkt)
>
> Die logs zoals jij ze bedoelt heeft mysql dus zelf.
>
>> Als je me (misschien met wat links) verder de weg zou willen wijzen
>> ben ik je zeer dankbaar !
>
> Het staat heel uitvoerig in de online musql handleiding:
>
> http://dev.mysql.com/doc/mysql/en/Replication.html
>
> Heel kort samengevat.
>
> a-in den beginne zijn master en slave gelijk.
> b-vanaf dat moment begin je op je master logs bij te houden van de
> wijzigingen.
> c-is de master in een dusdanig staat dat je die wilt syncen met de slave
> dan kan je dat gewoon repliceren en ben je weer terug bij a.
>
> c kan je bereiken met of
> LOAD DATA FROM MASTER
> of
> START SLAVE
>
> op de slave uit te voeren (afhankelijk van versie).
>
> Ik heb het zelf nog nooit op deze manier gebruikt overigens... Een goed
> alternatief wat ik kan bedenken is om ipv de master/slave replicatie te
> gebruiken de database handmatig te repliceren mbv rsync. Het groten
> nadeel hiervan is dat op dat moment de server uit de lucht moet
> aangezien je buiten de server om aan het rotzooien bent (maar dat zou
> wellicht verholpen kunnen worden door met de hotcopy scripts te spelen).

Dank voor je adviezen en tips.
Ik ga weer in de documentatie duiken en eens kijken hoe ver ik kom.

Gr, Juliette

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We're all in the gutter, but some of us are looking at the stars. (Oscar Wilde)

Rene Pijlman
14/09/04, 09:15
Juliette <jrf[nospam]@jokeaday.net>:
>Heb met drie keer in de rondte gezocht in de PHP documentatie, maar waarschijnlijk lees ik erover heen...
>
>Bestaat er een (simpele) manier om een server database (mySql) met een lokale database te synchroniseren ?

Zoek eens in de MySQL-documentatie i.p.v. de PHP-documentatie.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl