MySQL-Datenbankinhalt verteilen

Hallo,

ich melde mich hier im allgemeinen Teil zu Wort, da ich die Problematik keiner Programmiersprache zuordnen möchte.

Und zwar geht es um folgende Situation: Ich habe zwei voneinander unabhängige Projekte laufen. Beide laufen mit den Standardmitteln: Apache HTTP Server 2.2, PHP 5.3, MySQL 5.1

Es sollen nun einzelne Teile der MySQL-Datenbank synchronisiert werden.

Projekt A soll also stetig ein ausgewähltes Kontingent an Inhalten aus der Datenbank von Projekt B bekommen und andersrum genauso. Dabei sind beide MySQL-Datenbanken voneinander getrennt, d.h. beide liegen auf verschiedenen Server und können auch nicht von außerhalb betreten werden (bind-address und nur lokaler User angelegt).

Mit welchen Mitteln würdet ihr dieses Problem erledigen?

Leider fehlen mir völlig die Ansätze - auch was Technologien betrifft bin ich Laie. Wenn jemand also ein paar Stichwörter in den Raum werfen würde, so könnte das schon ein wenig Abhilfe verschaffen.



LG KK
 
Hi!

Abhängig von der Menge an Daten, deren Komplexität und wie oft diese Synchronisation vorgenommen werden soll gibt es diverse Möglichkeiten. Außerdem musst Du Dir überlegen, wie sensibel die Daten sind.
Wenn es sich z.B. um tägliche, komplexe Updates handelt, kann ich XML-RPC bzw. SOAP wärmstens empfehlen, am besten in Kombination mit TLS/SSL. PHP bringt von Haus aus eine sehr gute Unterstützung dieser Protokolle mit.
Bei einfacheren Daten reicht es theoretisch auch, wenn Du die Daten zum Download bereitstellst, z.B. in XML oder CSV und möglichst Passwortgeschützt, versteht sich. Zur reinen XML-Verarbeitung mit PHP gibt es verschiedene PHP-Module die dir das Leben erleichtern. Auch CSV lässt sich leicht verarbeiten (siehe String-Funktionen, v.A. str_getcsv etc.).
Wenn Du die Daten aber nicht mal in Ihrer Struktur verändern willst, sprich einfach nur die selben Tabellen und/oder Einträge brauchst, kannst Du auch einfach einen SQL-Dump vom entsprechenden Server laden und einspielen.
Um die Synchronisation anzustoßen liegen cronjobs nahe, aber natürlich kannst Du das auch manuell machen.
Brauchst Du die Daten allerdings in "Echtzeit", wird es etwas komplizierter - vor allem aus Performance-Gründen.

Gruß
Enum
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück