2016-04-21 5 views
1

Ich versuche, eine entfernte Datenbank in eine lokale Docker-Container-Datenbank zu dumpen.Dump Remote-MySQL-Datenbank von einem Docker-Container

$ docker exec -i my_container \ 
    mysqldump my_remote_database -h my_remote_host.me -u my_remote_user -p 

Das gibt mir die Remote-Dump gut

hier meine Versuche So sind:

$ docker exec -i my_container \ 
    mysqldump my_remote_database -h my_remote_host.me -u my_remote_user -p \ 
| docker exec -i my_container mysql -u my_local_user -pmy_local_password \ 
     -D my_local_database 

$ docker exec -i my_container bash -c \ 
    "mysqldump my_remote_database -h my_remote_host.pp -u my_remote_user -p \ 
    | mysql -u my_local_user -pmy_local_password -D my_local_database" 

Beide scheinen keine Auswirkungen auf die lokale Datenbank zu haben (obwohl kein Fehler)

Wie kann ich diese Daten übertragen?

Antwort

1

Ich hole immer gerne Probleme aus dem Container in einem interaktiven Terminal.

Zunächst erhalten die cantainer von Bildlauf und überprüfen Sie folgendes sehen:

  1. Wenn Sie auf den lokalen Container bash docker exec -ti my_container bash, funktioniert die Remote-Host-Namen my_remote_host.me Entschlossenheit und können Sie eine Route dorthin? Verwenden Sie ping oder nslookup.
  2. Von der interaktiven Terminal-Bash-Shell können Sie eine Verbindung mit der Remote-DB herstellen? Versuchen Sie einfach eine Vanilla mysql cli Verbindung mit den Anmeldeinformationen
  3. Schließlich versuchen Sie den Dump aus dem interaktiven Terminal und erstellen Sie einfach eine mydump.sql Dump-Datei.

Dann schauen Sie sich, dass im Inneren des Behälters:

  1. Sie auf den lokalen DB vorgesehen, um die credetials anschließen kann (bei Verwendung von TCP-Verbindung nicht der Hostname Buchse sollte lösen, aber es sieht aus wie Ihre lokalen db verwendet eine Buchse)
  2. sehen Sie, wenn Sie die Dump-Datei mysql -u my_local_user -pmy_local_password -D mylocaldb < mydump.sql

wenn das alles funktioniert, dann können Sie beginnen bei der Suche, warum das Rohr versagt Verwendung geladen werden kann, aber ich vermute, dass das Problem b kann e mit einer der Beschlüsse.

Ich bemerke, dass Sie lokale Datenbank sagen. Befindet sich die "lokale Datenbank" innerhalb des Containers oder auf dem Docker-Host, auf dem eine Socket-Verbindung ausgeführt wird?

+0

Vielen Dank für Ihre Antwort. Alle Schecks, die Sie erwähnen, habe ich schon gemacht (die ersten drei Schecks sind in meiner Frage tatsächlich enthalten). Ich kann dann den Dump mit mysql injizieren. Das Problem scheint tatsächlich bei der Pipe zu liegen. –

+0

Mein späterer Versuch funktionierte tatsächlich. Ich habe den Inhalt der Zieldatenbank falsch überprüft ... –

+0

@Pierredelespinay passiert jedem! – Ray

Verwandte Themen