首页 > 解决方案 > 将 MySQL /var/lib/mysql 移动到共享卷

问题描述

我在 Synology nas 上的 Docker 中运行带有 MySQL 8.0.18 的容器。我只是用它来支持那个盒子上的另一个容器(Mediawiki)。MySQL 在 path 安装了一个卷/var/lib/mysql。我想将其移至共享卷,以便我可以使用 File Station 访问它并定期备份它。如何docker在不破坏 MySQL 的情况下将其移动到下面显示的共享?

在此处输入图像描述

以下是 Synology nas 上的可用共享。

在此处输入图像描述

或者,有没有一种方法可以简单地将 /var/lib/mysql 复制到共享的 docker 文件夹中?这也适用于定期备份。

谢谢,拉斯

编辑:按照 Zeitounator 的计划显示结果。在运行 docker 命令 (2.) 之前,我在 File Station 中创建了mediawiki_mysql_backups和文件夹。12-29-2019运行 2. 和 3. 之后,来自 mysql 的所有文件都在这里,我现在有一个很好的备份!

在此处输入图像描述

标签: mysqldockersynology

解决方案


  1. 停止当前容器以确保 mysql 未运行。
  2. 创建一个虚拟临时容器,在其中安装 2 个所需的卷。我倾向于使用busybox来完成这类任务=>docker run -it --rm --name temp_mysql_copy -v mediaviki-mysql:/old-mysql -v /path/to/ttpe/docker:/new-mysql busybox:latest
  3. 复制所有文件 =>cp -a /old-mysql/* /new-mysql/
  4. 退出虚拟容器(如果您使用我上面的命令,它将自行清理)
  5. 创建一个带有 mysql:8 映像的新容器,将新文件夹安装在其中/var/lib/mysql(您可能需要在 syno docker gui 中执行此操作)。
  6. 如果一切正常,请删除旧mediaviki-mysql

推荐阅读