Ik opzoek naar een mogelijkheid om twee databases (en later 4 databases) met elkaar de synchroniseren. Dit moet dan ook periodiek plaatsvinden. Zonder tussen komst van een programmeur.
Wat ik tot op heden ben tegengekomen zijn allemaal losse tools die extern draaien en het niet periodiek aansturen.

Heeft iemand een idee hoe ik het zou kunnen aanpakken?

thx
Ruud
Je maakt een stukje script dat dit kan doen.
Om het periodiek te maken gebruik je op een Linux systeem een cronjob.
Volgens mij heet dat op een Windows systeem taak planner maar dat weet ik niet zeker.
Dank je Bart,
Hier had ik ook al over nagedacht. Maar is er geen mogelijkheid om dat op de mysql server zelf te regelen. De databases staan op de zelfde server. Maar moeten afzonderlijk beschikbaar zijn voor de gebruikers.
Ruud van der Woude op 05/06/2015 08:08:06

Dank je Bart,
Hier had ik ook al over nagedacht. Maar is er geen mogelijkheid om dat op de mysql server zelf te regelen. De databases staan op de zelfde server. Maar moeten afzonderlijk beschikbaar zijn voor de gebruikers.



Zie Ward zijn reactie
>> Maar is er geen mogelijkheid om dat op de mysql server zelf te regelen. De databases staan op de zelfde server.

Jawel, de Event Scheduler van MySQL. Aangezien de databases zelfs op dezelfde server staan, zou ik daar eerder naar kijken dan naar een cron.

Wat ik me wel afvraag: waarom moet je twee en later vier databases synchroniseren als ze toch op dezelfde server staan? Dan kunnen ze toch gewoon data delen?
Dank je Ward, Ik ga hier naar kijken.


>> Dan kunnen ze toch gewoon data delen?
Ze willen niet dat een extern in de huidige database kijkt maar in een gestripte versie daarvan.
>> Ze willen niet dat een extern in de huidige database kijkt maar in een gestripte versie daarvan.

Dan kun je misschien nog een andere architectuur overwegen:

• Je kunt één database gebruiken en die voorzien van een API die beperkt toegang verschaft tot geselecteerde data op basis van de API-key van de gebruiker of client.

• Je kunt uiteenlopende rechten instellen op het niveau van tabellen. Daarmee kun je dan opnieuw één database gebruiken, waarin bepaalde tabellen niet voor derden toegankelijk zijn.

Is maar een suggestie, want er leiden meerdere wegen naar Rome.

Nadeel van synchroniseren is altijd dat de slaven achterlopen, waardoor ze hetzij te weinig data, hetzij verouderde data gebruiken. In plaats van synchroniseren kun je dan beter repliceren. Bijvoorbeeld met triggers, het andere alternatief van MySQL voor geplande taken. Bijvoorbeeld een belangrijke UPDATE kun je dan automatisch "pushen" naar andere databases.
Uit de bovenstaande reacties blijkt al een beetje dat een mogelijke oplossing mede bepaald wordt door de volgende factoren:

- wat voor verschillende typen gebruikers heb je
- welke verschillende bewerkingen mogen deze uitvoeren op de data (create/read/update/delete)

Oftewel hoe gaan de verschillende partijen om met deze database

Zonder deze informatie lijkt het mij toch een beetje koffiedik kijken...

EDIT: Ik vind het wel grappig dat iedereen meteen denkt in oplossingen terwijl de probleemstelling (voor mij iig) nog helemaal niet duidelijk is :).
>> Ik vind het wel grappig dat iedereen meteen denkt in oplossingen terwijl de probleemstelling (voor mij iig) nog helemaal niet duidelijk is :).

Voor mij ook niet, maar dan kun je natuurlijk uiteenlopende oplossingen aandragen. ;)

Reageren