将大型数据库导入docker

时间:2016-06-08 16:58:21

标签: mysql database import docker dump

我正在将一个大型应用程序导入Docker。部分应用程序是一个数据库。我已将数据库转储到.sql文件中,现在我试图通过从主机挂载目录并发出命令将其导入到运行官方mysql映像的docker容器中

mysql -u myUsername -p myDB < /mountdir/databasedump.sql

数据库转储非常大,超过10GB。一切都顺利一小时,但随后发出错误

loop: Write error at byte offset

我感觉容器的大小已用完。

有没有更聪明的方法来完成数据库的docker化?如果没有,我如何将庞大的数据库导入容器?

2 个答案:

答案 0 :(得分:0)

Don't use a devicemapper loop file for anything serious! Docker对此有警告。

对于您可能需要尝试mounting a host directory as a volumecreating a local volume的数据库,以避免泊坞文件的文件系统开销。这两者基本上是相同的东西。

如果您使用的是RHEL,则可以直接使用尺寸合适的LVM精简池。有一个用于更改存储驱动程序的进程in this answer

答案 1 :(得分:0)

问题是任何容器都无法存储整个导入的数据库,这是26Gb,错误是由于容器磁盘空间不足。

我通过使用-v开关将主机上的目录作为外部卷安装并编辑MySQL配置以在其中存储数据库来解决问题。

这个解决方案当然是非虚拟化&#39;数据库,它可能是一个安全风险。数据库服务器运行良好虚拟化。在我的情况下,稍微削弱的安全性不是问题。