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

Backup and restore LXC container with LAMP stack - MySQL cannot start in container

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

备份和恢复过程顺利。我已经三重确保在 tar 和 untar 时使用 --numeric-owner 标志,并且容器 star 正常。但是,在执行 service mysql restart 时,容器 barfs 中的 MySQL 到处都是以下错误(来自 journalctl 的输出 -谢):

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

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

如果删除以下文件,我可以将其恢复tar,以便mysql重新创建它们:

/var/lib/mysql/ibdata1

/var/lib/mysql/ib_logfile*

/var/lib/mysql/aria_log_control

"Solution" 来自 https://bbs.archlinux.org/viewtopic.php?id=160277

但是这严重扰乱了我的站点数据库。

这是怎么回事?

在我看来,文件权限或类似的东西出了问题 - 但是当我比较原始的工作容器和我恢复的副本之间的所有权和权利时,它们看起来完全相同。

对于可能遇到此问题的任何人:我的典型 n00b 错误。

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

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

这导致容器使用与我的原始容器相同的 rootfs - 仍然是 运行 - 容器。这是 Mysql.

的问题

有趣的是,您可以启动两个共享同一个 rootfs 的容器。也许某处有一些关于此 "feature" 的应用程序。

LXC 很棒。