我按照这些简单的说明来备份和恢复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
收集的“解决方案”但这真是让我的网站数据库混乱。
这里发生了什么?
在我看来,文件权限或这些行中的某些内容已经出错了 - 但是当我比较原始工作容器和恢复副本之间的所有权和权限时,它们看起来都相同。
答案 0 :(得分:0)
对于任何可能遇到这种情况的人:我的典型n00b错误。
我忘了在容器的配置文件中更新rootfs路径。
当我正在对现有容器进行恢复测试时,我已将我的备份解压缩到/ var / lib / lxc中的另一个目录 - 例如/ var / lib / lxc / restored - 但是没有更新/ var / lib / lxc / restored / config中的配置以指向正确的路径。
这导致容器使用与原始 - 仍在运行 - 容器相同的rootfs。这就是Mysql的问题。
有趣的是,您可以启动两个共享相同rootfs的容器。也许这个“功能”的某些应用程序在某处。
LXC太棒了。