Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabelle nach anderen Server übertragen

Einklappen

Neue Werbung 2019

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

  • Tabelle nach anderen Server übertragen

    Hallo.
    Server A ist ein Webserver bei einem Provider gehostet mit DB und PHP ich kann nicht von außen auf DB zugreifen
    Server B ist ein lokaler Server ( das ich viele habe kann es ein Debian, Redhat, Ubuntu, Rasbian oder oder sein)
    der Lokale Server ist mein test server wo ich pages erst teste vevor ich sie ins internet stelle.
    eine aufgabe des lokalen server ist eine datenerfassung (bestes beispiel türöfffner, ich kann auslesen mit welchen schlüssel welche türe wann geöffntet worden ist)
    da ich nicht immer alles von hand auf extern server kopieren möchte suche ich eine alternative.

    1.
    Auf Server A eine PHP datei wo ich einträge in DB machen kann
    auf Server B ein I-Frame wo ich PHP datei vom Server A öffne und inhalt aus DB über gebe
    2.
    da dachte ich an php upload funktion aber meine gedanken dazu sind noch ein chaos ( wenn ich senden klicke sollen eine txt datei übertragen werden und dann in db eingelesen werden )

    bei beide Variationen bin ich nicht weiter gekommen habe ich da denk fehler oder sind diese Varianten gar nicht möglich ?
    Mich interesiert erst mal letzeres bevor ich tiefer in upload oder so abtauche, wenn letzteres zutrifft gibt es alternativen ?

  • #2
    Der iFrame bringt dich nicht weiter.
    php läuft ja dadurch nicht auf dem anderen Server, nur weil die Ausgaben in einen iFrame geladen werden.

    Du musst die Daten tatsächlich übertragen, wie du es in deiner zweiten Idee schon vor hast.
    Wichtig ist jedenfalls, dass das ganze nicht in deinem Browser passiert. Die Server dollen untereinander Daten austauschen.

    Möglichkeit 1
    Auf Server A bietest du eine REST Api per http an, die funktionen bereitstellt, um Einträge in die DB zu schreiben (ggf. auch zu löschen oder zu ändern nach deinem Bedarf)
    Server B (dein Homeserver) ruft diese API auf, aber nicht mittels Iframe sondern innerhalb des php scripts. Server B ist also selbst der "Browser"
    Das kannst du mit curl machen, oder mit simplen file_get_content aufrufen. Ja, damit geht auch POST etc. Schau dir stream_context_create dazu an.

    Möglichkeit 2 (eher für ganze kopien von tabellen)
    Du erstellst auf server B einen dump der benötigten Daten.
    Server B lädt den dump z.B. via FTP oder auf andere Weise auf Server A hoch und ruft anschließend einen Endpunkt auf, der Server A die hochgeladene Datei importieren lässt.

    Falls du mysqldump nicht von der shell aufrufen kannst, geht das auch rein in php z.B. mit dieser tollen Implementierung:
    https://github.com/ifsnop/mysqldump-php


    Good programming is 5% knowledge, 5% skill, 20% caffeine, 30% attention to detail and 40% RTFM
    Kapazitäten frei: Einfach per PN ein Angebot einholen.

    Kommentar


    • #3
      Möglichkeit 2 von Dir würde ausscheiden im Grunde wegen komplette Tabelle,
      Wenn ich 2 Tabellen befüllen würde, (Tabelle 1 enthällt alle Daten, Tabelle 2 würde nur neue Daten bekommen undnach update gellert), könnte dann Möglichkeit 2 klappen.

      Alle:
      viele Begriffe wo ich nicht verstehe ( wie REST API, .. ) aber nicht schlimm solage ich sie nachlesen kann bzw im Codebeispie lesen kann.

      werde mal Möglichkeit 1 weier mich beschäftigen

      Kommentar


      • #4
        Möglichkeit 2 (eher für ganze kopien von tabellen)
        Du erstellst auf server B einen dump der benötigten Daten.
        Server B lädt den dump z.B. via FTP oder auf andere Weise auf Server A hoch und ruft anschließend einen Endpunkt auf, der Server A die hochgeladene Datei importieren lässt.
        Möglichkeit 2 von Dir würde ausscheiden im Grunde wegen komplette Tabelle,
        muss ja nun nicht alles immer gedumped werden.

        https://simplebackups.com/blog/the-c...with-mysqldump

        Kommentar


        • #5
          Es gibt auch noch andere Tools wie z.B. pt-table-sync welches recht effektiv 2 Tabellen auf 2 Servern synchronisieren kann.
          https://docs.percona.com/percona-too...able-sync.html

          PS: Auch wenn es ein Percona Tool ist, funktioniert dies mit allen MySQL Varianten (Mysql, MariaDB, PerconaDB, etc.)

          Kommentar


          • #6
            Die percona tools sind insgesamt alle ziemlich gut, aber passen hier leider wohl nicht ins Szenario.

            Die Ziel DB ist ja nach Auskunft des Fragestellers nicht von außen erreichbar, sodass ein lokal ausgeführtes pt-table-sync sie nicht erreichen kann.

            In umgekehrter Reihenfolge geht das ebenso nicht, weil dort keine Shell verfügbar ist (und weil wahrscheinlich der lokale Server nicht auch nicht dauerhaft und von außen erreichbar ist)

            Theoretisch käme auch noch eine ganz normale Replikation zwischen den beiden DBs in Frage, aber das würde auch wieder gegenseitige direkte Zugriffe erfordern.

            Good programming is 5% knowledge, 5% skill, 20% caffeine, 30% attention to detail and 40% RTFM
            Kapazitäten frei: Einfach per PN ein Angebot einholen.

            Kommentar


            • #7
              langsam server ist nicht gleich server der eine ist ein lokaler server (siehe Anhang ) der andere ist im internet aber ohne zugriff von außen (Server A)
              Server bekommt die DB daten über PHP und über python
              einträge auf Server B wo über python laufen werden unter php angeschaut ( Webseiten zugriff ) bei doppel einträge habe ich eine Löschbutton eingesetzt
              Python soll eine Datei erstellen mit datum/uhrzeit voran im Dateinamen, änderungen wo über php gemacht werden sollen auch eine datei mit datum/uhrzeit voran erstellt werden
              und später übertragen werden beim einlesen sollen die dateien in der erstellen reihenfolge(datum/uhrzeit sotiert) eingespielt werden um die daten nutzen zu können und ich von allen orten aus drucken möchte
              soviel zu meinen vorhaben bzw gedankenspiel.
              Befüllen = Insert Into ...., Update = update...... lösch = delete.... ( vereinzelte einträge)
              es gibt tabellen wo von Server B wo praktisch nur befüllt werden, ausname das löschen, andere Tabellen können befüllt werden bzw können upgedatet werden von einzellen Daten bis zur kompletten Tabelle
              weil ich das nicht alles 2 mal machen möchte suchte ich eine lösung ( dachte mir eine lösung aus ) wie ich z.b. wöchendlich erledigen kann und zwar so das ich alles unter kontrolle habe ( verstehe was passeirt wo )
              mit dem dump sehe ich ein problem
              https://simplebackups.com/blog/the-c...with-mysqldump
              auf diese seite unten ( 2. ) heißt es Server A erlaubt kein zugriff ( Sicherheitsmaßnahme ( für mich ist das so das ich nur intern auf DB zugreifen kann ( bind-dns 127.0.0.1 in my.conf)

              percona tool bzw pt-.... sehe ich nach lesen das selbe problem wie oben

              tmobuilder schrieb
              Möglichkeit 2 (eher für ganze kopien von tabellen)
              Du erstellst auf server B einen dump der benötigten Daten.
              Server B lädt den dump z.B. via FTP oder auf andere Weise auf Server A hoch und ruft anschließend einen Endpunkt auf, der Server A die hochgeladene Datei importieren lässt.

              sowas hatte ich mir gedacht aber mein IFRAME machte nicht mit, drum jetzt jede änderung vom Server B in Datei speichern und dann hochladen
              bisher habe ich über move-upload... gearbeitet aber eine ftp verbindung direkt habe ich mir keine gedanken bisher gemacht
              wenn ich so darüber nach denke wäre via ftp direkt ein guter weg
              Aber:
              wie kann ich dann meine Datei einlesen und daten zurückspielen, bzw datei einlesen mit php ist kein problem und daten dan nutzen zu können worauf ich hinaus möchte
              1. daten erstellen
              2. ftp daten hochladen
              3. ?
              ? = Wenn ich auf Server A eine PHP Datei erstelle wo mir meine Datei öffnet und einließt bzw daten verarbeitet, bzw sobald eine bestimmte Seite auf Server A aufgerufen , soll der code ausgeführt werden
              bin ich jetzt auf richtigen weg ?
              Angehängte Dateien

              Kommentar


              • #8

                sucht du load data ?
                https://dev.mysql.com/doc/refman/8.4/en/load-data.html

                https://dev.mysql.com/doc/refman/8.4/en/load-data.html#load-data-file-location

                Kommentar


                • #9
                  Entweder load data (falls der Server an den Speicherort dran kommt und du über entsprechende Rechte verfügst) oder genau deine Idee zu (3).

                  Du erstellst ein php script, was die datei zeilenweise liest, und die enthaltenen Anweisungen ausführt.

                  Du kannst die Schritte 1-3 jeweils einzeln von Hand machen, oder aber auch automatisch vom Homeserver aus anstoßen.

                  btw:
                  Wenn du ssh Zugriff auf die Box hast, könntest du auch "böse" sein und einen Tunnel bohren... Dann hast du nämlich doch von außen Zugriff.
                  Es gibt jede Menge Lösungen für die Frage "wie kommen meine Daten von A nach B". Manche sind eleganter, aber auch die ganz stumpfen führen zum Ziel
                  Good programming is 5% knowledge, 5% skill, 20% caffeine, 30% attention to detail and 40% RTFM
                  Kapazitäten frei: Einfach per PN ein Angebot einholen.

                  Kommentar

                  Lädt...
                  X