将大型数据库导入 docker 时出现写入错误
Write error when importing large database to docker
我正在将大型应用程序导入 Docker。应用程序的一部分是数据库。我已将数据库转储到 .sql 文件中,现在我正尝试通过从主机挂载目录并发布将其导入 docker 容器 运行 官方 mysql 图像命令
mysql -u myUsername -p myDB < /mountdir/databasedump.sql
数据库转储非常大,超过 10GB。一个小时一切正常,但随后出现错误
loop: Write error at byte offset
我感觉容器的大小用完了。
有没有更聪明的方法来完成数据库的docker化?如果没有,如何将庞大的数据库导入到容器中?
Don't use a devicemapper loop file for anything serious! Docker 对此有警告。
对于您可能想要的大小的数据库,请尝试 mounting a host directory as a volume or creating a local volume 以避免 docker 的文件系统开销。这两者本质上是同一件事。
如果您使用的是 RHEL,则可以直接使用足够大小的 LVM 精简池。有一个更改存储驱动程序的过程。
问题是任何容器都无法存储整个导入的数据库,即 26Gb,错误是由于容器 运行 磁盘不足 space。
我通过使用 -v 开关从主机挂载一个目录作为外部卷并编辑 MySQL 配置以将其数据库存储在那里解决了这个问题。
这个解决方案当然 'un-virtualizes' 数据库,它可能存在安全风险。数据库服务器虽然虚拟化运行良好。在我的情况下,稍微削弱的安全性不是问题。
我正在将大型应用程序导入 Docker。应用程序的一部分是数据库。我已将数据库转储到 .sql 文件中,现在我正尝试通过从主机挂载目录并发布将其导入 docker 容器 运行 官方 mysql 图像命令
mysql -u myUsername -p myDB < /mountdir/databasedump.sql
数据库转储非常大,超过 10GB。一个小时一切正常,但随后出现错误
loop: Write error at byte offset
我感觉容器的大小用完了。
有没有更聪明的方法来完成数据库的docker化?如果没有,如何将庞大的数据库导入到容器中?
Don't use a devicemapper loop file for anything serious! Docker 对此有警告。
对于您可能想要的大小的数据库,请尝试 mounting a host directory as a volume or creating a local volume 以避免 docker 的文件系统开销。这两者本质上是同一件事。
如果您使用的是 RHEL,则可以直接使用足够大小的 LVM 精简池。有一个更改存储驱动程序的过程
问题是任何容器都无法存储整个导入的数据库,即 26Gb,错误是由于容器 运行 磁盘不足 space。
我通过使用 -v 开关从主机挂载一个目录作为外部卷并编辑 MySQL 配置以将其数据库存储在那里解决了这个问题。
这个解决方案当然 'un-virtualizes' 数据库,它可能存在安全风险。数据库服务器虽然虚拟化运行良好。在我的情况下,稍微削弱的安全性不是问题。