将数据库从 docker 备份到真机

Posted

技术标签:

【中文标题】将数据库从 docker 备份到真机【英文标题】:Backup DB from docker to real machine 【发布时间】:2020-07-28 01:53:08 【问题描述】:

已解决!

早上好 :)

有人从 docker 备份到主机的数据库吗?我有一个 mysql 数据库,但我想将它克隆到我的真机中,因为每次我运行容器时它都会创建一个新图像,但我想每次都使用这个 db(所以我希望 db 持久保存在真机中)。

非常感谢!

【问题讨论】:

你创建了volumen来持久化数据库数据吗? 不,我认为这是我真正需要的不?,当 docker-compose down 或我关闭计算机时,我需要一些东西来保存我的数据库... 所以你需要这个docs.docker.com/compose/compose-file/#volumes在电脑重启后恢复你的数据库 那太好了,非常感谢,但我也需要在我的本地机器上复制一份,我想在下面回答:) 是的,但是为什么您需要在本地机器上复制一份呢?您需要 sql 转储还是只想持久化 db(就是该卷)? 【参考方案1】:

如果您的 Docker 容器已经配置为使用容器内的 MySQL 数据库,您可以使用容器内的 mysqldump 进行数据库备份,如下所示:

mysqldump database > database.sql

(注意!您在容器中运行它)

然后您可以使用docker container cp 命令在容器和本地文件系统之间复制文件。例如:

docker container cp <containerId>:/file/path/within/container /host/path/target

(注意!您在本地文件系统中运行它)

所以使用这个例子,命令行会变成:

docker container cp <containerId>:/full/path/to/database.sql .

这会将文件 database.sql 复制到本地文件系统中的当前目录。

【讨论】:

我认为容器有问题,数据在 phpMyAdmin 上,但我找不到 mysql db 容器 IP,所以我无法连接,知道吗?我正在粘贴图片 非常感谢!它对我有用:) 但我不知道如何通过工作台连接,例如因为我找不到容器 IP,我给你正确的答案,但我希望你知道如何解决查找容器 IP 的问题。 你必须发布 db 端口,你将通过localhost:published_db_port从主机连接

以上是关于将数据库从 docker 备份到真机的主要内容,如果未能解决你的问题,请参考以下文章

Android studio 运行到真机上面出现闪退现象,加急,在线等。

Oculus Quest2 | Unity配置Oculus Quest2开发环境,并打包一个应用到真机测试

如何将SQLITE数据库文件打包到程序安装包里?

iOS真机调试步骤

android studio 运行程序到真机The APK file does not exist on disk.Error while Installing APK

android studio 运行程序到真机The APK file does not exist on disk.Error while Installing APK