2017-02-11 68 views
2

我有Percona Xtradb Cluster在容器上運行。在容器中恢復Percona Xtradb

我停止了容器,然後啓動它。

我有錯誤:

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

的消息說,我需要mysqld --tc-heuristic-recover但MySQL的啓動失敗後的容器停止。

我的問題是:

  • 我能不解決這個問題,以run新的容器,但start現有的?

  • 在主進程(mysqld)停止後,有什麼辦法讓Docker容器仍然運行嗎?

+0

假設你的數據在容器外(ex卷),爲什麼不用你的fix命令創建一個新的容器? – Salem

+0

不,數據在容器內。 –

+0

您使用的是哪張圖片? – Salem

回答

1

該容器使用卷(請參閱here),因此您的數據不在容器內。

要找到它的存儲位置,請使用docker container inspect YOUR_CONTAINER_NAME,並在輸出中搜索Mounts。如果您已經安裝jq你可以使用類似

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

一旦你發現那裏的數據存儲在目錄中,你應該創建備份

然後,您可以創建一個新的容器,並綁定到該目錄。像

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

這應該給你一個shell,你可以執行你可能需要的任何命令。

一旦你完成了,你可以刪除這個容器,希望percona現在可以工作。