我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用 docker 部署 MySQL 会导致数据丢失吗

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用 docker 部署 MySQL 会导致数据丢失吗

2023年2月28日,今天下午电话面试 java 岗位,经过一些提问后,面试官问了一个问题,“那么你最近在关注什么方面的技术点呢?”,可能是我之前的回答不太理想,且说辞都是“不好意思,可能最近没有太经常使用这方面的东西。”(其实就是忘了)。

我说“最近在读关于SpringCloud 分布式微服务的书。” 本以为他会接着问一些SpringCloud相关的技术点。结果...

面试官,“嗯嗯,那么docker用过吗?”
我一整个没反应过来。然后简单讲了一下docker的概念。

问题

问了一个我没面对过的问题。
使用 docker 部署 mysql,如果服务器宕机重启,会有什么结果。
在这里插入图片描述
面试官尝试引导我。
会不会影响mysql的存储。
“我觉得不会啊。”全凭直觉说的,甚至没有测试过这种情况。
他直接就问了,使用docker部署mysql服务,如果服务器重启后,mysql的数据还在吗?
我说在啊,然后一顿扯皮。
实际上对 docker 的一些概念还是有点模糊,所以导致临场发挥啥也说不明白。

docker 理解为 一台虚拟机
镜像 image 理解为 一个安装包
容器 container 理解为 通过镜像安装好的应用

docker 部署 MySQL

  1. 下载 MySQL安装包(pull image,拉取镜像)
  2. 安装 MySQL安装包(run image,运行镜像)
  3. 启动 MySQL服务(start container,启动容器)

正文

回来以后查了一下这个问题。确实存在这种数据消失的情况。
但实际上并不是 docker 服务器重启之后 MySQL 数据丢失,而是 MySQL 部署在 docker 的容器中,如果此容器被 docker rm 掉。然后重新 run 一个 MySQL 容器,此时 原有的 MySQL 容器中的数据确实丢失了。
丢弃 docker 这个概念,本质上就是安装一个 MySQL 卸载了,然后又安装一个 MySQL ,那么第一个 MySQL 中的数据肯定没有了。
思路理清了,验证一下。

验证docker、MySQL容器重启后,数据不会丢失

首先 在启动的 MySQL容器中创建一个数据库并添加表和数据

在这里插入图片描述

上图,为启动着的 MySQL 容器,现在用 navicat 链接这个 MySQL服务,创建一个数据库,创建表,创建数据。

在这里插入图片描述
在这里插入图片描述

上图,cloud是之前启动的 MySQL 容器,并且保存了数据

现在模拟 docker 服务重启
在这里插入图片描述

重启完毕检查容器状态

在这里插入图片描述

docker 服务重启,导致内部的容器也被停止此时,启动容器,然后通过 navicat 链接数据库,查看刚才建的库表以及数据是否丢失。

在这里插入图片描述

在这里插入图片描述

打开链接

在这里插入图片描述

打开数据库

在这里插入图片描述

发现表和数据都在

总结,docker 宕机的情况下 将容器重启,MySQL的数据不会丢失。

删除 MySQL容器,重新 run MySQL镜像,数据会丢失的解决方案

参考此链接
使用 外部数据卷 Bind mount a volume
在这里插入图片描述
在这里插入图片描述

执行 docker run --help使用 -v 来绑定一个 docker 外部数据卷

在这里插入图片描述

上图,运行mysql 5.7的镜像,docker run  使用docker 服务 执行 run 命令-d 后台运行-p 接口映射-v 将/usr/local/mysql5.7 事先创建好的文件夹  映射为 容器内的路径 /var/lib/mysql-e 是配置环境变量,设置一下密码--name 给容器命名mysql:5.7  run 这个 mysql 版本是  5.7---------------------------------------------------然后, 尝试链接这个新建的MySQL服务

在这里插入图片描述

在这里插入图片描述

新的链接,继续执行前面的脚本
create database testdatabase;use testdatabase;create table test_table(id int primary key,`name` varchar(5));insert into test_table values(1,'aa'),(2, 'bb');

在这里插入图片描述

数据表创建完毕,停容器,删容器,再重新执行一遍,运行容器的命令。

在这里插入图片描述

尝试链接数据库看数据是否已经被持久化。

在这里插入图片描述

发现,之前添加的库表都在。查看一下我们启动 MySQL容器时外挂的文件夹内容是否有变化

在这里插入图片描述

发现已经生成了很多文件,可以观察到 刚创建的数据库  testdatabase

总结

docker 部署 MySQL服务,只有 MySQL 容器被删除的情况下,数据会丢失。可以通过 docker 外挂宿主机的文件夹,来存储 MySQL 的数据。并且当重新运行一个 MySQL 镜像时,也要外挂同一个文件夹,确保容器能读取到先前删除的容器内的数据。

面试并不总是一帆风顺的,有的面试确实是技术碾压,有的面试确实可以为自己查缺补漏,虽然 java 技术栈的学习不能面面俱到,但对技术的追求还是要以此为目标持续下去。

来源地址:https://blog.csdn.net/weixin_44062052/article/details/129270530

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用 docker 部署 MySQL 会导致数据丢失吗

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用 docker 部署 MySQL 会导致数据丢失吗

2023年2月28日,今天下午电话面试 java 岗位,经过一些提问后,面试官问了一个问题,“那么你最近在关注什么方面的技术点呢?”,可能是我之前的回答不太理想,且说辞都是“不好意思,可能最近没有太经常使用这方面的东西。”(其实就是忘了)
2023-08-16

使用limit分页查询时,做delete操作,会导致丢失数据

使用limit分页查询时,做delete操作,会导致丢失数据目录使用limit分页查询时,做delete操作,会导致丢失数据一、准备数据1.1 mysql数据脚本1.2代码二、验证1.验证前全部数据2.第一页数据3.删除记录4. 新增记录5.第二页数据6. 验
使用limit分页查询时,做delete操作,会导致丢失数据
2021-07-07

如何使用Docker部署mysql数据库

今天小编给大家分享一下如何使用Docker部署mysql数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、检查系统版本
2023-07-05

怎么使用docker-compose部署mysql数据库

要使用docker-compose部署MySQL数据库,需要按照以下步骤操作:首先,确保你已经安装了Docker和docker-compose。如果没有,请先安装它们。创建一个新的文件夹,用于存放你的docker-compose.yml文件
怎么使用docker-compose部署mysql数据库
2024-04-09

使用Docker部署MySQL数据库的两种方法

目录引言第一部分:通过 docker CLI 命令部署 mysql1. 安装 Docker2. 拉取 MySQL 镜像3. 启动 MySQL 容器4. 验证 MySQL 运行状态5. 进入 MySQL 容器第二部分:通过 Docker Co
使用Docker部署MySQL数据库的两种方法
2024-10-17

云原生使用Docker部署mysql数据库的详细过程

目录一、检查系统版本二、检查docker状态1.检查docker版本2.检查docker状态三、在docker hub搜索mysql四、下载mysql镜像五、创建mysql容器1.创建数据目录2.运行mysql容器3.查看mysql容器状态
2023-03-23

编程热搜

目录