在容器中恢复 Percona Xtradb
Recover Percona Xtradb in container
我有 Percona Xtradb Cluster 运行 在容器上。
我停止了容器然后又启动了它。
我有错误:
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
现有容器?
有什么方法可以让Docker容器在主进程(mysqld
)停止后仍然运行吗?
该容器使用卷(参见 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 现在应该可以工作了。
我有 Percona Xtradb Cluster 运行 在容器上。
我停止了容器然后又启动了它。
我有错误:
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
现有容器?有什么方法可以让Docker容器在主进程(
mysqld
)停止后仍然运行吗?
该容器使用卷(参见 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 现在应该可以工作了。