2

我在容器上运行Percona Xtradb 集群。

我停止了容器,然后启动了它。

我有错误:

2017-02-11T13:12:00.423566Z 0 [错误] 找到 1 个准备好的交易!这意味着 mysqld 上次没有正确关闭,并且在崩溃后手动删除了关键恢复信息(最后一个 binlog 或 tc.log 文件)。您必须使用 --tc-heuristic-recover 开关启动 mysqld 以提交或回滚待处理的事务。

2017-02-11T13:12:00.423739Z 0 [错误] 中止

消息说我需要mysqld --tc-heuristic-recover但容器在 mysql 无法启动后停止。

我的问题是:

  • 我怎样才能解决这个问题而不是run新容器而是start现有容器?

  • 有什么方法可以让 Docker 容器在主进程(mysqld)停止后仍然运行?

4

1 回答 1

1

该容器使用卷(参见此处),因此您的数据不在容器内。

要查找它的存储位置,请使用并在输出中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

这应该为您提供一个外壳,您可以在其中执行您可能需要的任何命令。

完成后,您可以删除此容器,希望 percona 现在应该可以工作了。

于 2017-02-11T19:21:55.740 回答