MySync - ein Tool zum Synchronisieren einer Web-MySQL mit einer Client-MySQL Datenbank

MySync
  Allgemeines
  Anleitung
  FAQ
  Support
  Download

Referenzen
  FunMode
  FunFetish
  Korsett
  Korsett-Haus
  Loratus Korsetts
  Schreinerei Meier

Allgemeines
  Links
  Impressum
  Haftungsausschluss

Partnerseiten
  IrfanView Download

     





Anleitung

1. Download und Installationsvorbereitungen
2. Konfiguration PHP-Dateien und Upload
3. Konfiguration Client-Software
4. Konfiguration der zu synchronisierenden Tabellen
5. Definition von zeitgesteuerten Synchronisations-Jobs
6. Manuelles Synchronisieren
7. Demo Tabellen und Cronsjobs

1. Download und Installationsvorbereitungen
Achtung, bevor Sie mit der Installation und Konfiguration beginnen sollten Sie unbedingt ein Backup Ihrer Datenbank erstellen, um bei einer fehlerhaften Konfiguration die Daten wieder herstellen zu können!
Alle benötigten Dateien finden Sie unter Download. Der Client-Teil von MySync besteht lediglich aus einer EXE-Datei und erfordert keine Installation.
Überprüfen Sie nun, ob die folgenden Tabellennamen in Ihrer Datenbank verwendet werden:
  • mysync_client
  • mysync_client_fields
  • mysync_configuration
  • mysync_cronjobs
  • mysync_cronjobs_description
  • mysync_direction_description
  • mysync_server
  • mysync_server_fields

  • Sollte einer dieser Tabellennamen bereits anderweitig in Ihrer Datenbank verwendet werden, so ist bei der aktuellen Version leider keine Insatallation möglich. In einer der kommenden Versionen werden dann auch Tabellennamen frei definierbar sein.
    Wenn diese Namen frei sind können Sie die Tabellen und Demo-Datensätze mit Hilfe des im Installationspaket enthaltenen SQL-Scriptes sowohl auf der Client-MySQL Datenbank, als auch auf der Server MySQL-Datenbank anlegen. Auf der Serverdatenbank ist lediglich die Existenz der Tabellen notwendig. Der Tabelleninhalt spielt serverseitig keine Rolle.

    2. Konfiguration PHP-Dateien und Upload
    Ändern Sie in der Datei config.php aus dem Verzeichniss includes die Parameter gemäß Ihrem Server ab.
    Je nach Installationspfad muß auch die erste Zeile der Datei mysync_db_access.php angepaßt werden. Insbesondere die Pfadangaben zu den Dateien und die Datenbankparameter müssen angepasst werden. Danach können die PHP Dateien zum Webserver hochgeladen werden.
    Vergeben Sie danach auf die Unterverzeichnisse Include und Upload Berechtigungen zum Ausführen von Dateien für Owner, Gruppe und All.

    3. Konfiguration Client-Software
    Als erstes benötigen sie eine MySQL ODBC Verbindung auf Ihrem Client zu Ihrer Client-Datenbank. Aktuelle ODBC-Treiber können Sie von der Seite http://www.mysql.de/products/myodbc/index.html laden. Richten Sie nun unter Systemsteuerung -> Datenquellen ODBC einen System-DSN Eintrag zu der lokalen Datenbank ein.
    Danach kann die Applikation MySync in einem beliebigen Verzeichnis installiert und gestartet werden.
    Beim ersten Starten von MySync werden Sie nach einem ADO-Connection String zur Verbindung mit der MySQL-Datenbank gefragt.
    Die genaue Syntax ist teilweise versionsabhängig, lautet aber meist wie folgt:
    dsn=ODBC_DSN_NAME;uid=USERNAME;pwd=PASSWORT;option=16386
    Ersetzen Sie die Worte in Großbuchstaben durch Ihre persönlichen Parameter
    Wenn eine funktionierende Datenbankverbingung aufgebaut werden konnte startet das Tool.
    Nun können Sie unter:
    -> Konfiguration
      -> MySync Parameter
    weitere Einstellungen vornehmen und testen.

    Folgende Parameter müssen angegeben werden:
    Local Temp Pfad für MySync: Tragen Sie hier den Pfad zu einem existierenden Verzeichniss ein, in welchem die temporär erzeugte Datei für den Upload abgelegt werden soll. (z.Bsp. C:\TEMP)
    FTP Servername/IP: Tragen Sie hier die FTP-IP-Adresse oder den Servernamen ein (z.Bsp. ftp://100.123.123.12)
    FTP User: Tragen Sie hier einen FTP-Usernamen ein, mit welchem sich MySync auf den FTP-Account verbindet. (z.Bsp. web199)
    FTP Passwort: Hier bitte das dazugehörige Passwort eintragen. (z.Bsp. geheimespasswort)
    FTP Upload-Verzeichniss: Geben Sie hier den Pfad zum Upload-Verzeichniss aus Sicht des FTP-Users an (z.Bsp. upload/)
    FTP Upload Dateiname: Hier können sie einen beliebigen Dateinamen wählen, unter welchem die temporäre Datei abgelegt werden soll. (z.Bsp. mysync_upload.sql)
    Maximale Zeilen pro Transfer: Hier können Sie einen Richtwert angeben, wieviel Zeilen maximal in eine Synchronisationsdatei geschrieben werden. Je nach Netzwerkgeschwindigkeit kann man diese Zahl größer oder kleiner einstellen. Ein guter Wert ist normalerweise zwischen 500-1000. Wenn mehrere Datensätze zur exakt gleichen Zeit geändert wurden, werden alle Datensätze dieses Timestamps unabhängig der Maximal-Grenze übertragen! Deshalb nach Möglichkeit das Feld der letzten Datenänderung sekundengenau pflegen.
    URL MySync: Tragen Sie hier die URL zu der Datei mysync_db_access.php ein. Standardmäßig wird eine .htaccess und eine .htpasswd Datei für einen Passwortschutz des Verzeichnisses MySync mitgeliefert.
    Der vorbelegte Benutzer lautet: mysyncremote mit dem Passwort mysync#12345. Diese Daten sollten sie unbedingt in der Datei .htpasswd ändern, um einen unberechtigten Zugriff auf ihr MySync-Verzeichniss zu verhindern.

    4. Konfiguration der zu synchronisierenden Tabellen
    Die Pflege der zu synchronisierenden Tabellen erfolgt derzeit ausschließlich auf Tabellenebene. Eine Konfigurationsmaske wird in einer der nächsten Versionen folgen.
    Die zur Synchronisation relevanten Tabellen sind ausschließlich:
  • mysync_client
  • mysync_client_fields

  • In der Tabelle mysync_client gibt es folgende Felder:
    Id: auto_increment Feld - Zählt automatisch in 1'er Schritten hoch
    update_id: Beliebige ID zur Gruppierung von Tabellen bzw. Jobs. Einträge mit der gleichen ID werden innerhalb eines Synchronisations-Jobs bearbeitet.
    table_name: Name der zu synchronisierenden Tabelle
    max_id: Derzeit höchster Wert im numerischen auto_increment-Feld der zu synchronisierenden Tabelle
    fieldname_max_id: Feldname des auto_increment-Feldes der zu synchronisierenden Tabelle
    date: Derzeit höchstes Datum im Feld der aktuellsten Änderung
    fieldname_date: Feldname des Datumfeldes der aktuellsten Änderung
    direction_id: Numerischer Wert für welche Synchronisationsrichtung der Datensatz gültig ist.
  • 1=Web/Server -> Client
  • 2=Client -> Web/Server

  • Soll eine Tabelle in beide Richtungen synchronisiert werden, so sind zwei Einträge, jeweils einer mit direction_id=1 und einer mit direction_id=2, erforderlich.
    Alle Tabellen und Richtungseinträge, welche in einem Lauf synchronisiert werden sollen erhalten die gleiche update_id.

    Pflegt man nur Einträge in die Tabelle mysync_client und lässt die Tabelle mysync_client_fields leer, so wird immer der gesamte Datensatz übertragen, wobei zuerst immer die Daten vom Client zum Server übergeben werden. Würden in diesem Fall zwischen 2 Synchronisationsläufen Änderungen an beiden Seiten (Client/Server) vorgenommen werden, so werden die serverseitigen Änderungen vom Client überschrieben.
    Dieser Modus ist z.B. nutzbar, wenn man Bestellungsdatensätze synchronisieren will, da nach einer Bestellung der Datensatz normalerweise serverseitig nicht mehr geändert werden kann, und somit gibt es kein Problem, wenn bei allen Synchronisationsläufen die clientseitigen Änderungen zum Server datensatzweise übergeben werden.
    Will man jedoch bei einer Tabelle zeitgleich server- und clientseitig unterschiedliche Datenfelder ändern, so gibt es eine weitere Möglichkeit dies zu tun, ohne dabei die serverseitigen Änderungen zu verlieren.
    Hierzu ist die Tabelle mysync_client_fields mit den entsprechenden Feldern zu versorgen.
    Id: Beinhaltet die ID des Feldes ID aus der Tabelle mysync_client des entsprechenden Tabelleneintrages
    fieldname: Beinhaltet den Feldnamen des Feldes, welches per Update aktualisiert werden soll. Die Feldnamen der zu der Tabelle zugehörigen fieldname_max_id und fieldname_date dürfen hier nicht verwendet werden.
    Auf diesem Weg kann man bei einer Tabelle für die Synchronisation Client -> Web/Server andere (oder auch gleiche) Felder angeben, wie bei der synchronisation server/web -> Client. Gibt man komplett unterschiedliche Felder an, so können an beiden Tabellen zeitgleich Änderungen vorgenommen werden, ohne dass die eine Änderung die andere überschreibt. Gibt man gleiche Felder an, so gilt, dass für die gleichen Felder die Daten des Clients die Daten der Web/Server Datenbank überschreiben, so fern eine Änderung in beiden Datenbanken zwischen zwei Synchronisationsintervallen vorliegt.

    5. Definition von zeitgesteuerten Synchronisations-Jobs
    Um die Synchronisation einer Tabellengruppe mit einer Update_ID ausführen zu können müssen entsprechende Jobs in den Tabellen mysync_cronjobs und mysync_cronjobs_description definiert werden.
    Zuerst wird die Tabelle mysync_cronjobs gepflegt:
    job_id: auto_increment Feld - Zählt automatisch in 1'er Schritten hoch
    time_to_call: Gibt die Dauer in Sekunden an, welche zwischen zwei Synchronisationsläufen vergehen soll. Die Dauer des Synchronisationslaufes wird hierbei nicht mitgerechnet, es handelt sich hier um die Pausenzeit zwischen den Läufen! Trägt man hier eine 0 ein, so wird der Job nicht automatisch ausgeführt, sondern kann nur manuell angestoßen werden.
    job Enthält entweder die Update_id einer Tabellengruppe oder eine URL, welche zeitgesteuert aufgerufen werden soll.
    job_type Enthält den numerischen Wert, welcher aussagt, ob es sich um eine Tabellengruppe oder eine URL handelt.
  • 1=update_id einer Tabellengruppe
  • 2=URL, welche zeitgesteuert aufgerufen werden soll
  • last_modified Zeitinformation der letzten Änderung

    Zusätzlich ist noch die Tabelle mysync_cronjobs_description zu pflegen: synchro_id: auto_increment Feld - Zählt automatisch in 1'er Schritten hoch
    job_id: job_id aus der Tabelle mysync_cronjobs
    language_id: Vorbereitung für spätere Mehrsprachigkeit - derzeit fix '2' für Deutsch eintragen
    description: Titel, unter welchem der Job angezeigt werden soll
    last_modified Zeitinformation der letzten Änderung

    Die neuen Jobs werden erst nach einem Neustart von MySync sichtbar. Änderungen am Feld time_to_call werden auch während des Programmlaufes regelmäßig gelesen.

    6. Manuelles Synchronisieren
    Alle Jobs können auch unabhängig der automatischen Synchronisation jederzeit manuell ausgeführt werden. Hierzu einfach auf:
    -> Synchronisieren
      -> Manuell Synchronisieren
    Wenn man die automatische Synchronisation vollständig abschalten will, so kann man dies, in dem man das Häckchen bei Auto Synchro entfernt.

    7. Demo Tabellen und Cronsjobs
    Mit der Auslieferung von MySync sind bereits 2 Cronjobs und eine Demo-Tabelle enthalten, welche die Funktionsweise und die Feldabhängigkeiten zeigen.
    Der Cronjob zur Synchronisation der Tabelle ist durch ein Zeitintervall von 0 sec. standadtmäßig deaktiviert, da die Synchronisation erst funktioniert, wenn alle Parameter unter
    Konfiguration -> MySync Parameter ordnungsgemäß eingestellt sind.