在容器中恢复Percona Xtradb

我在容器上运行Percona Xtradb集群

我把容器停了下来,然后开始了。

我有错误:

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

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

消息说我需要mysqld --tc-heuristic-recover但是在mysql启动失败后容器停止运行。

我的问题是:

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

  • 主进程( mysqld )停止后有没有办法让Docker容器仍然运行?

该容器使用卷(请参阅此处 ),所以您的数据不在容器内。

要find它的存储位置,请使用docker container inspect YOUR_CONTAINER_NAME ,然后在输出中searchMounts 。 如果你安装了jq你可以使用类似的东西

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

一旦find存储数据的目录,就应该创build一个备份

然后,您可以创build一个新的容器,并绑定到该目录。 就像是

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

这应该给你一个shell,你可以执行你可能需要的任何命令。

一旦你完成,你可以删除这个容器,希望percona现在应该工作。