[PHP/MySQL] Twee tabellen synchroniseren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Beekforel
  • Registratie: November 2001
  • Laatst online: 21:00

Beekforel

Is eigenlijk geen vis

Topicstarter
Ik heb een lokale MySQL tabel (4.1.15) die ik wil synchroniseren met een online MySQL tabel.
Nou heb ik MySQL replication al gevonden, maar ik heb op de online server niet voldoende rechten om hier gebruik van te maken. Ik krijg het niet voor elkaar in elk geval.

Iedere minuut wordt er een nieuwe regel in de tabel geschreven, ik zou bijvoorbeeld iedere 5 minuten deze data willen uploaden. Het script wat de data erin zet is niet heel secuur en het is dus niet precies 60 seconden tussen de entry.

Op de lokale server heb ik verder alle rechten en kan ik cronjobs draaien etc.
Nou zit ik te denken een PHP scriptje te scrijven wat de laatste 5 regels uit de tabel leest en deze post naar een PHP script op de online server waar het vervolgens in de tabel daar geschreven wordt.

Ik heb alleen het idee dat dit niet echt een slimme oplossing is en ik weet ook niet goed hoe ik het moet aanpakken qua foutcontrole. Stel dat er op de lokale server iets mis is waardoor er geen nieuwe entry's zijn, dan gaat het script doodleuk dezelfde entry's naar de andere tabel versturen waardoor je een zootje krijgt lijkt me.

Wat is jullie idee hierover en bestaan er eventueel ook andere oplossingen hiervoor?

Acties:
  • 0 Henk 'm!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Als je de cron in je lokale database laat bijhouden welke rows zijn overgezet, dan kan je periodiek alle rows overzetten die nog niet eerder zijn overgezet. Zo heb je iig geen last van dubbele entries op de online db.

Today's subliminal thought is:


Acties:
  • 0 Henk 'm!

  • kmf
  • Registratie: November 2000
  • Niet online

kmf

Worden er op de remote server ook updates gedaan of niet?
Hoe update je die dingen lokaal dan? Kan je niet gewoon een connectie leggen naar de remote server of is dat ook uitgeschakeld? Anders kan je natuurlijk 2 update queries doen, 1 centraal en 1 remote.


Oftwel... need more input. Geen idee hoe je configuratie is nu... dus...

[ Voor 13% gewijzigd door kmf op 01-08-2006 22:56 ]

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Gewoon changed en created en last_exported timestamps bijhouden op lokale server. Als changed of created groter dan last_exported dan exporteren en overzetten.
Omdat je lokaal alle rechten hebt zou ik het gewoon lekker lokaal oplossen door je dbase te veranderen / een tabel toe te voegen zodat je op record niveau de veranderingen hebt ipv file niveau ( 10.000 records die veranderd zijn van 1kb zijn makkelijker te synchroniseren dan 1 file van 10.000 kb die in de synchronisatie tijd weer gewijzigd kan worden )

de last_exported timestamp hoef je trouwens niet op record niveau vast te leggen, kan op File-system niveau zolang ( omdat je een keer in de zoveel tijd een increment synchronisatie doet ) je maar ervoor zorgt dat als iets geexporteerd is dat het ook 100% in de online db staat. Zelf zou ik voor iets kiezen wat elke x minuten een incremental export maakt en dan 's nachts een full export ( heb nog bij geen enkel 24h bedrijf gewerkt, dus voor mij volstaat dit altijd perfect ) maakt zodat alle incrementele foutjes ( record wel geexporteerd, maar nog geen ok van online dbase en wordt toch lokaal aangepast ) elke nacht weer verholpen worden.
Maar dit hangt voornamelijk af van hoe critical is je online dbase, is het erg als je 23:59 minuten 1 record change mist??? of is dit acceptabel.

Is dit onacceptabel dan mag je per record gaan bijhouden wanneer het geexporteerd is en of het ok is aangekomen bij online dbase, is dit acceptabel dan is het gewoon simpel om de 5 minuten een export maken, alle records selecteren die na vorige export veranderd zijn en deze klaarzetten voor volgende export ( foutjes / locks worden wel gecorrigeerd tijdens nachtelijk complete export )

Acties:
  • 0 Henk 'm!

  • Beekforel
  • Registratie: November 2001
  • Laatst online: 21:00

Beekforel

Is eigenlijk geen vis

Topicstarter
Het gaat om een weerstation wat op een ADSL verbinding draait en gesynched moet worden met een online dbase. Ik durf het niet aan om op die ADSL verbinding een (nu) 300 bezoekers per dag los te laten omdat er een bedrijf van afhankelijk is.
Het weerstation zet iedere minuut een entry in de dbase en als er een keer een minuut mist is het geen ramp natuurlijk.
Ik heb het verder nog niet echt uitgedacht dus ik hoop op deze manier wat ideeen op te doen.

Het fijnst zou natuurlijk zijn dat er software voor bestaat of een mooie functie in PHP maar dat ben ik nog niet tegengekomen. Ik ben ook te lang niet met PHP bezig geweest dus moet echt hard nadenken om te verzinnen hoe ik iets ook alweer doe...

Acties:
  • 0 Henk 'm!

  • BBrunekreeft
  • Registratie: Mei 2004
  • Laatst online: 08:29

BBrunekreeft

Dus...

Beekforel schreef op woensdag 02 augustus 2006 @ 00:15:
Het fijnst zou natuurlijk zijn dat er software voor bestaat of een mooie functie in PHP maar dat ben ik nog niet tegengekomen. Ik ben ook te lang niet met PHP bezig geweest dus moet echt hard nadenken om te verzinnen hoe ik iets ook alweer doe...
Kijk eens naar sja.
Ik gebruik dat ook om mysql databases te syncen.
Werkt prima. Je moet alleen voor de source en target database wel dezelfde versies van MySQL hebben draaien

Acties:
  • 0 Henk 'm!

  • Brupje
  • Registratie: September 2001
  • Laatst online: 04-09 20:21

Brupje

3D nerd

kun je niet per regel een vlag aanmaken die aangeeft of de regel gekopieerd is? Als regels dus nog null zijn moeten ze worden gekopieerd en worden ze indien succesvol gevlagt. Kan met php prima denk ik

[ Voor 60% gewijzigd door Brupje op 02-08-2006 13:08 ]

Zie ook 123-3D voor 3D-printer stuff


Acties:
  • 0 Henk 'm!

Verwijderd

Kan je niet iets met de .bin bestanden die MySQL aanmaakt. Als ik me niet vergis staan hierin alle gepleegde transacties.
Pagina: 1