2 MySQL-Server synchronisieren



  • Gibts eine einfache Möglichkeit, 2 MySQL-Server zu synchronisieren (alle Daten ohne Rücksicht auf Verluste vom "Master" auf den "Slave" packen)?
    Die Replication-Funktion die MySQL bietet geht da, so wie ich das verstanden habe nicht, da ich vorher nicht weiß, wer den Master und wer den Slave spielt...
    Da ich das ganze eh von einem Programm aus mache, wäre natürlich die Möglichkeit, jeden Datensatz in der einen Connection zu lesen und in der Anderen zu schreiben. Das finde ich persönlich nicht so toll.
    Ich hatte auch schon fast eine Lösung gefunden, indem ich ein LOAD DATA LOCAL INFILE etc. mache. Dummerweise gibts kein SELECT * INTO LOCAL OUTFILE und ich habe keinen garantierten Zugriff auf Datein des Servers...

    Meine Frage ist also: "Wie kann ich möglichst einfach Alles von A nach B kopieren?"



  • Ohne zu wissen wer die Daten speichert wird es auch icht gehen. Ohne Rücksicht auf verluste mach ein Backup keine sinn.

    Replication ist bei MySQL sehr einfach.



  • Schwere ist das auch nicht 🙂
    Mir sagt das aber nicht ganz zu... ich will eigendlich nur alle Daten von A nach B kopieren, ohne das ich dazu die DB-Datein bewegen muss, da ich von meinem Programm aus keinen Zugriff auf diese habe.
    Das mit dem Bin-Log ist mir etwas suspekt, da ich auch Blobs in der DB habe und diese dann ja doppelt auf dem Server Platz vergeuden würden. Außerdem ist das replizieren in meinem Fall etwas "überqualifiziert", wenn du verstehst was ich meine.
    Mal Pseudocode von dem, was ich gerne machen würde:
    DELETE * FROM LOKALE_DATENBANK.ALLE_TABELLEN
    SELECT * FROM IP:PORT:USER:PASSWORD:DB:ALLE_TABELLEN INTO ALLE_LOKALEN_TABELLEN



  • -=]xXx[=- schrieb:

    Gibts eine einfache Möglichkeit, 2 MySQL-Server zu synchronisieren (alle Daten ohne Rücksicht auf Verluste vom "Master" auf den "Slave" packen)?

    Hier steht, wie man ein Master-Slave System mit MySQL aufsetzt:
    http://www.tecchannel.de/entwicklung/grundlagen/429801/



  • Du kannst
    SELECT * INTO OUTFILE 'daten.txt'
    FIELDS TERMINATED BY ','
    FROM `tabellenname`
    machen.
    Es wird eine Datei im MySQLdatenordner erstellt.

    Diese DAtei dann auf den neuen rechner kopieren und mit

    LOAD DATA INFILE 'daten.txt' INTO TABLE tabellenname
    FIELDS TERMINATED BY ','

    einfügen.

    Um es von einem Rechner aus zu machen musst du einen Dump erstellen.
    mysqldump
    diesen dump kannst du dann mit einer neuen verbindung einfügen.
    mysql -h deinrechner < dumpdatei.sql

    oder du schreibst dir ein programm welches jeden eintrag ausließt (macht der dump auch) und fügst diese Zeile gleich wieder auf dem neuen ein.

    Sei dir aber sicher das die Daten nicht konsitent sind wenn in dieser Zeit was in die Tabelle eingefügt wird ohne eine Tabellensperre zu machen.



  • Was spricht gegen simples Kopieren der Datenbankdateien im Filesystem?



  • Das ich da keinen Zugriff drauf habe.


Anmelden zum Antworten