Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank - Nur 1/3 der vorhandenen Tabellen syncen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank - Nur 1/3 der vorhandenen Tabellen syncen

    Hallo Community,

    ich wurde gestern Abend vor ein Problem gestellt, mit dem ich soweit noch nicht zutun hatte, und wollte fragen, wie ihr sowas lösen würdet.

    Innerhalb der Entwicklung benutze ich ein Shop Framework, welches ich innerhalb des Cores nicht verändern werde (Update Fähigkeit, etc.)

    Der Shop hat 2 Instanzen, nämlich eine Produktiv Instanz, und eine Test Instanz. Auf der Produktiv Instanz gibt es wichtige Daten, die auch auf die Test Instanz müssen, und zwar in Form von Tabellen in einer MySQL Datenbank.

    Nun habe ich als erstes an eine Master > Slave Spiegelung gedacht, jedoch gibt es auf der Produktiv Instanz viele sensible Daten, die aber keineswegs auf die Test Instanz landen sollten.

    Ebenso würde ich ungerne einen Cronjob erstellen, der in einem bestimmten Intervall einen Dump der entsprechenden Tabellen erzeugt, und diesen auf der Test Instanz importiert, weil das aus der Sicht der Architektur wirklich unschön wäre.

    Meine andere Idee wäre, einen zweiten MySQLi Adapter zu programmieren, der sich von der Test Instanz auf die Produktiv Instanz verbindet, und von dort die Daten selektiert, jene ich sonst per Cronjob dumpen würde. Jedoch gibt es innerhalb der Tabellen auch Abhänigkeiten zu anderen Tabellen, die von dem eigenen Server gebraucht werden - also sozusagen eine Select Statement über 2 Server. Wieder mehr als unschön.

    Wie würdet ihr das angehen? Falls ihr mehr Informationen zum Szenario braucht, gebt mir gerne Bescheid!

    Kurzer Nachtrag:
    Wäre das möglicherweise mit Triggern zu lösen, jene bei einem Change auf den betreffenden Tables reagieren?

  • #2
    Technisch ist es kein Problem einzelne Tabellen zu replizieren. Du kannst auf dem Slave explizit die Tabellen angeben. Das Problem sind aber die Abhägigkeiten. Du schreibst selbst das es zwischen den Tabellen die du replizieren/nicht replizieren willst abhängigkeiten gibt. Sobald dort FKs zu nicht repizierten Tabellen repliziert werden funktioniert das nicht mehr oder es entsteht Datenmüll. (je nach dem ob constraints genutzt werden oder nicht)
    Das nächste Problem ist auf dem Slave zu schreiben ist eine dumme Idee. Damit zerschiest du dir wenn du glück hast die Replikation oder erzeugst Datenmüll.

    Das sind auch keine Mysql spezifischen Probleme, die Probleme sind grundlegender Natur und werden dir bei jedem Ansatz begegnen.

    Kommentar


    • #3
      Zitat von erc Beitrag anzeigen
      Das sind auch keine Mysql spezifischen Probleme, die Probleme sind grundlegender Natur und werden dir bei jedem Ansatz begegnen.
      Deswegen muss es auch zwangsweise nicht innerhalb MySQL gelöst werden. Es ist im Grunde mehr Zufall, das es jetzt gerade MySQL ist. Gerne kann man die relevante Daten in irgendeiner Form auslagern, wenn ihr dafür eine praktikable Lösung kennt?

      Kommentar


      • #4
        Zitat von Tyralcori Beitrag anzeigen
        Deswegen muss es auch zwangsweise nicht innerhalb MySQL gelöst werden. Es ist im Grunde mehr Zufall, das es jetzt gerade MySQL ist.
        Und die grundlegende Probleme, die nicht Mysql spezifisch sind, gibt es nicht bei anderen Ansätzen?
        Du musst als erstes ausarbeiten was du für Daten synchronisieren willst, wie schnell, was dabei für Probleme auftreten können und wie diese Probleme aufgelöst oder umgangen werden. Danach kannst du über ein technischen Ansatz nachdenken.

        Kommentar

        Lädt...
        X