使用LAMP堆栈备份和恢复LXC容器 - MySQL无法在容器中启动

时间:2016-08-05 20:21:15

标签: mysql backup restore lxc

我按照这些简单的说明来备份和恢复LXC容器:

https://stackoverflow.com/a/34194341

备份和恢复过程顺利进行。我做了三倍肯定我在tar和untar'ing时使用--numeric-owner标志,并且容器启动正常。但是,在执行 service mysql restart (从journalctl -xe输出)时,容器barfs中的MySQL出现以下错误:

[ERROR] InnoDB: Unable to lock ./ibdata1, error: 11

[ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.

如果删除以下文件,我可以启动它,以便mysql重新创建它们:

的/ var / lib中/ MySQL的/ ibdata1中

的/ var / lib中/ MySQL的/ ib_logfile *

的/ var / lib中/ MySQL的/ aria_log_control

https://bbs.archlinux.org/viewtopic.php?id=160277

收集的“解决方案”

但这真是让我的网站数据库混乱。

这里发生了什么?

在我看来,文件权限或这些行中的某些内容已经出错了 - 但是当我比较原始工作容器和恢复副本之间的所有权和权限时,它们看起来都相同。

1 个答案:

答案 0 :(得分:0)

对于任何可能遇到这种情况的人:我的典型n00b错误。

我忘了在容器的配置文件中更新rootfs路径。

当我正在对现有容器进行恢复测试时,我已将我的备份解压缩到/ var / lib / lxc中的另一个目录 - 例如/ var / lib / lxc / restored - 但是没有更新/ var / lib / lxc / restored / config中的配置以指向正确的路径。

这导致容器使用与原始 - 仍在运行 - 容器相同的rootfs。这就是Mysql的问题。

有趣的是,您可以启动两个共享相同rootfs的容器。也许这个“功能”的某些应用程序在某处。

LXC太棒了。