Kalle: Daten von lokalem- zum mysql- Server beim Hoster synchronisieren

Hallo,

ich habe lokal einen mysql Server am Laufen und einen bei meinem Hoster. Nun würde ich gerne ein php-script schreiben, das gewisse Daten zwischen den Servern synchronisiert.

Was ist die beste Strategie dafür?

gruß
Kalle

  1. Hi!

    ich habe lokal einen mysql Server am Laufen und einen bei meinem Hoster. Nun würde ich gerne ein php-script schreiben, das gewisse Daten zwischen den Servern synchronisiert.
    Was ist die beste Strategie dafür?

    Welche Strategien kennst du bereits und wie passen sie oder auch nicht auf deine Gegebenheiten?

    Lo!

  2. Hello,

    ich habe lokal einen mysql Server am Laufen und einen bei meinem Hoster. Nun würde ich gerne ein php-script schreiben, das gewisse Daten zwischen den Servern synchronisiert.

    Was ist die beste Strategie dafür?

    Welche Zugriffsrechte hast Du beim Hoster?
    Hast Du einen eigenen Datenbankserver dort, oder wird der mit anderen Usern geteilt?

    In der PHP-API sollte auf jeden Fall eine vernünftige Fehlerstrategie vorhanden sein für den Fall, dass der Datanbankserver nicht erreichbar ist oder nur gelesen werden kann. Der User sollte keine Billig-Die()-Seite bekommen, sondern eine qualifizierte und valide HTML-Seite.

    Um welches Datenvolumen handelt es ich insgesamt beim NySQL-Server?

    Werden offline (also auf der Kopie) auch Daten verändert?

    Die einfachste Lösung wäre es.

    EWin Shellscript schreiben, das per Cronjob aufgerufen wird:

    • den MySQL-Server kurtz runterfahren

    • eine Vollsicherung der MySQL-Dateien durchführen

    • den MySQL-Server wieder hochfahren

    • die gesicherten Dateien in einem targz-File in einem "Abholverzeichnis" zur Verfügung stellen

    • da das Script sich vermutlich nicht per SSH-Zertifikat auf deinem Server zuhause anmelden
        kann, da der höchstwahrscheinlich keine feste IP hat, muss Dein Server zuhause dann
        gelegentlich die Daten vom Host beim Provider abholen.

    Wenn Du allerdings auf der DB zuhause auch arbeiten willst, dann muss da eine ganz andere Strategie her. Es müssten dann Transaktionslogs geschrieben werden und gegeneinander abgeglichen werden.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. So Umfangreich sind meine Zugriffsrechte leider nicht, dass ich ein Cronjop oder dergleichen auf dem Server beim Hoster starten kann.

      Die auszutauschende Datenmenge ist nur am Anfang groß.
      Das kann mit der Hand am Arm, sprich phpmyadmin ex-und import geschehen.

      Man kann es mit dem Datenaustausch zwischen einem Onlineshop und einem lokalen Wawi vergleichen, wobei am Tag so etwa 20-30 Aktionen transveriert werden müssen. Also nicht die Welt.

      Im laufenden Betrieb dachte ich, in den Datenbank jeweils ein aktualisierungs-Flag zu setzen.
      So ist die Datenmenge doch recht überschaubar.
      Das Ganze ist auch nicht sonderlich zeitkritisch.

      Gruß

      1. Hello,

        So Umfangreich sind meine Zugriffsrechte leider nicht, dass ich ein Cronjob oder dergleichen auf dem Server beim Hoster starten kann.

        Hast Du für Deinen Host zuhause ein Dyn-DNS eingerichtet?
        Hast Du mal versucht, den MySQL-Server darauf aus dem Internet heraus anzusprechen? Dafür solltest Du einen 'username'@'%' einrichten mit äußerst eingeschränkten Rechten.

        Wenn Du das beides realisiert hast, dann kannst Du als nächstes mal probieren, ob Dein Hoster Requests von innen nach außen (von deinem Account bei ihm) auf Port 3306 zulässt. Wenn das der Fall ist, kannst Du mittels eines PHP-Scriptes auf dem Webspace auch deinen MySQL-Server zuhause erreichen.

        Nun müsstet Du nur deine Applikation auf dem Webspace genügend intelligent verfassen oder ändern. Für jedes datenverändernde Statement, das dort abläuft, wird das Statement nebst Status (rrfolgreich/schiefgegangen) in einer separaten Tabelle abgespeichert.

        Nun musst Du nur ein Script erstellen, dass alle erfolgreichen Statements nochmal abfährt, aber nun auf den Datenbestand auf deinem MySQL-Servfer zuhause und sofort abbricht, wenn eins nicht erfolgreich ausgeführt werden kann.

        Mit diesem "Transaktionslog für Arme" kannst Du die beiden MySQL-Server synchron halten, solange Du am betroffenen Datenbestand der Kopie keine lokalen Änderungen vornimmst.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de