2017-02-11 3 views
2

Ich habe Percona Xtradb Cluster auf Container ausgeführt.Recover Percona Xtradb in Container

Ich habe den Container gestoppt und dann gestartet.

Ich habe Fehler:

2017-02-11T13:12:00.423566Z 0 [ERROR] Found 1 prepared transactions! It means that mysqld was not shut down properly last time and critical recovery information (last binlog or tc.log file) was manually deleted after a crash. You have to start mysqld with --tc-heuristic-recover switch to commit or rollback pending transactions.

2017-02-11T13:12:00.423739Z 0 [ERROR] Aborting

Die Meldung sagt, dass ich mysqld --tc-heuristic-recover aber Container stoppt nach mysql nicht anspringt.

Meine Fragen sind:

  • Wie kann ich dieses Problem nicht zu run neuen Container aber start bestehende Problem lösen?

  • Gibt es eine Möglichkeit, den Docker-Container noch laufen zu lassen, nachdem der Hauptprozess (mysqld) gestoppt wurde?

+0

Angenommen, Ihre Daten befinden sich außerhalb des Containers (ex Volume). Warum erstellen Sie keinen neuen Container mit dem Befehl fix? – Salem

+0

Nein, Daten befinden sich im Container. –

+0

Welches Bild verwendest du? – Salem

Antwort

1

Das Container verwendet Bände (siehe here), so dass Ihre Daten nicht im Inneren des Behälters ist.

Um zu suchen, wo es gespeichert ist, verwenden Sie docker container inspect YOUR_CONTAINER_NAME, und suchen Sie nach Mounts in der Ausgabe. Wenn Sie jq installiert haben Sie so etwas wie

$ docker container inspect YOUR_CONTAINER_NAME | jq ".[0].Mounts" 

Nachdem Sie das Verzeichnis, wo die Daten gespeichert verwenden können, sollten Sie erstellen Sie eine Sicherungs.

Sie können dann einen neuen Container mit einer Bindung an dieses Verzeichnis erstellen. Etwas wie

$ docker run -it -v VOLUME_PATH:/var/lib/mysql OTHER_OPTIONS_HERE image_name /bin/sh 

Dies sollte Ihnen eine Shell geben, wo Sie alle Befehle ausführen können, die Sie benötigen.

Sobald Sie fertig sind, können Sie diesen Container löschen, und hoffentlich sollte der Percona jetzt funktionieren.