Docker系列---【mysql容器手动停止后,重启服务器,mysql容器被删掉了,如何恢复mysql数据?】...

mysql容器手动停止后,重启服务器,mysql容器被删掉了,如何恢复mysql数据?

1.问题描述

为了快速搭建数据库,我使用了docker搭建数据库,由于服务器资源紧张,我想先把mysql容器停掉,启动jenkins容器,使用完之后再停掉jenkins,启动mysql,结果由于服务器资源有限,服务器卡死了,无法远程连接了,没办法,我只能登录运营商的云平台管理平台,强制重启服务器。结果发现,重启之后,我的mysql容器没有了,使用docker ps -a查看不到了,我瞬间慌了。我当时暗自祈祷,希望volume没有被删掉,我就还有机会。于是,我开始了下面的尝试。

2.分析

2.1找到mysql容器的启动命令

grep "docker run" ~/.bash_history

搜索结果:
docker run -itd --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root1234! mysql:8.0.25 --lower_case_table_names=1
执行完之后,发现当时没有配置-v映射。这就尴尬了,继续往下走。

2.2执行上面的命令重新启动一个mysql容器,查找默认卷挂载位置

#用原来的命令先启动一个mysql容器
docker run -itd --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root1234! mysql:8.0.25 --lower_case_table_names=1#查看卷挂载的默认目录,拿到一串数字的上一级目录就行
docker inspect -f '{{ .Mounts }}' mysql8
#这里我们拿到的是`/var/lib/docker/volumes`

2.3在上一步拿到的卷挂载目录里寻找到原来mysql的挂载卷

#根据mysql查
find /var/lib/docker/volumes/ -name mysql
#推荐:根据binlog.index查(核心命令)
find /var/lib/docker/volumes/ -name binlog.index
#这里如果有多个,可以用`du -sh *`来根据大小推断哪个是你的mysql数据目录
#这里我只找到一个`/var/lib/docker/volumes/d95076020423ab2b10122e4e930c1f961116dc10c374527c33325a44a91da325/_data/binlog.index`
我们进入`/var/lib/docker/volumes/d95076020423ab2b10122e4e930c1f961116dc10c374527c33325a44a91da325/_data/`目录,目录结构如下图

下面这个就是mysql的data目录,只要这个在,数据就不会丢。

2.4 创建新的数据卷,挂载到这个data目录

注意:也可以直接在启动的时候-v挂载数据目录,但是目录太长了,建议建个新的数据卷.

docker volume create --driver local --opt type=none --opt device=/var/lib/docker/volumes/9c23ed8a8fe178af50d42546be2cbded238f29e0139acf7433245830201d3df7/_data --opt o=bind new_mysql_data

2.5 启动新的mysql容器,挂载数据目录

docker run -itd --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root1234! -v new_mysql_data:/var/lib/mysql  mysql:8.0.25 --restart always --lower_case_table_names=1

注意:
在服务器重启后,Docker容器的重新启动行为将依赖于容器的--restart选项设置。以下是各种情况的重新启动行为:

  • no:容器不会自动重新启动,即使服务器重启也不会。
  • always:容器将在服务器重启后自动重新启动,确保容器保持运行状态。
  • on-failure:容器只会在非正常退出时重新启动,这意味着容器不会在服务器重启后自动重新启动,除非它之前是因为错误而退出的。
  • unless-stopped:容器将在服务器重启后自动重新启动,除非您显式停止容器。
    如果您希望在服务器重启后容器自动重新启动,可以选择使用--restart always或--restart unless-stopped选项,具体取决于您的需求。

注意:
--lower_case_table_names参数是用于配置MySQL数据库服务器的一个选项,用来控制数据库表名的大小写敏感性。这个选项有三个不同的取值,分别是0、1和2,它们的作用如下:

  • --lower_case_table_names=0:这是默认值。在这种模式下,表名是区分大小写的。这意味着MyTable和mytable被视为不同的表。
  • --lower_case_table_names=1:在这种模式下,表名被存储为小写,并且对表名的比较是不区分大小写的。这意味着MyTable和mytable被视为相同的表。
  • --lower_case_table_names=2:在这种模式下,表名被存储为小写,并且对表名的比较是不区分大小写的。与模式1相似,不同之处在于这个模式还会将文件系统中的表名转换为小写,这对于操作系统文件名的大小写敏感性有关。这个选项通常在非大小写敏感的文件系统上使用。
    使用--lower_case_table_names参数通常取决于您的特定需求和环境。如果您需要在表名区分大小写,可以保持默认值(0)。如果您希望表名不区分大小写,可以使用1或2,具体取决于您是否需要文件系统上的大小写敏感性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue ant DatePicker 日期选择器 限制日期可控范围

场景 限制当前日期之前不能选择 限制只能选择日期区间内 Ant Design Vue 效果 <a-date-picker :disabledDate"disabledDate"></a-date-picker>method // 限制日期选择disabledDate(current) {return current && current > moment().endOf(&…

LeetCode 1465. 切割后面积最大的蛋糕:纵横分别处理

【LetMeFly】1465.切割后面积最大的蛋糕&#xff1a;纵横分别处理 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCut…

Vue-dvadmin-d2-crud-plus-常用配置-row-handle-columns-options

文章目录 1.row-handle columnHeader width minWidth fixed align renderHeader edit view remove remove.confirm remove.confirmTitle remove.confirmText custom 范例1 范例2 2.columns title key width minWidth fixed renderHeader sortable sortMethod sortBy sortOrders…

子类和父类存在同名函数的时候。

#问题描述 在学习别人的code的时候&#xff0c;往往存在子类和父类&#xff0c;发现子类和父类存在同名函数&#xff0c;并且父类中改该方法是异常触发&#xff0c;如果子类的该方法有具体的执行内容的话&#xff0c; 其实是可以执行子类的方法&#xff0c;而不执行父类方法。…

【Javascript】函数声明的方式

方式一&#xff1a; function c(a,b){return ab;}var sumc(3,4);console.log(sum); 方式二&#xff1a; var afunction (a,b){return ab;}; console.log(a(1,3)); 方式三&#xff1a; 构造声明 var cnew Function (a,b,return ab); console.log(c(1,2));声明函数过程中&…

BUUCTF刷题记录

[BJDCTF2020]Easy MD51 进入题目页面&#xff0c;题目提示有一个链接&#xff0c;应该是题目源码 进入环境&#xff0c;是一个查询框&#xff0c;无论输入什么都没有回显&#xff0c;查看源码也没什么用 利用bp抓包查看有没有什么有用的东西 发现响应的Hint那里有一个sql语句&…

Visual Studio 2022 设置 PySide6 扩展工具

前言 本人不想电脑上装一堆的IDE,所以把 Python 开发也交给了 Visual Studio,如果你不是用 Visual Studio 做 Python 开发,下文就不用看了。 PySide简介 PySide跟PyQt类似,都是支持Python的Qt包,不同的是,PyQt是第三方的,PySide是Qt官方的。 PySide的推出比PyQt晚很…

设备管理软件管理系统

从设备检查到设备保养&#xff0c;再到设备维护&#xff0c;全方位视角掌握设备状态的管理软件。让企业员工可以随时随地的查看设备的各种信息&#xff1a;巡检信息、保养计划、备件更换提醒、维修保养资料等。 1、一物一码&#xff0c;建立设备电子档案“身份证” 精准管控每一…

如何通过内网穿透实现公网远程连接Redis数据库

公网远程连接Redis数据库【内网穿透】 文章目录 公网远程连接Redis数据库【内网穿透】前言1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址…

Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印

本项目所有源码和依赖资源都在文章顶部链接&#xff0c;有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板获取业务数据并写入该 word 模板&#xff0c;生成新的 word 文档将新生成的 word 文档转换为 pdf 格式对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的…

随笔:使用Python爬取知乎上相关问题的所有回答

项目中数据分析的需要自己从知乎某个专门的问题上爬数据&#xff0c;但众所周知&#xff0c;知乎的问题的显示方式有点胃疼&#xff08;指滑动后下翻加载更多回答&#xff0c;还经常卡住&#xff09;&#xff0c;翻了翻网上的教程发现有的要么就是很老了要么就是付费的&#xf…

【详细】Java网络通信 TCP、UDP、InetAddress

一、网络程序设计基础 1.局域网与因特网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机&#xff08;服务器<-->网络<-->客户机&#xff09;。 服务器是指提供信息的计算机或程序&#xff0c;客户机是指请求信息的计算机或程序。网络用…

基于java+swing+mysql实现的仓库商品管理系统

JavaSwingmysql用户信息管理系统 一、系统介绍二、功能展示三、项目相关3.1 乱码问题3.2 如何将GBK编码系统修改为UTF-8编码的系统&#xff1f; 四、其它1.其他系统实现 五、源码下载 一、系统介绍 本系统实现了两个角色层面的功能&#xff0c;管理员可以管理用户、仓库、商品…

Pinia中如何实现数据持久化操作

使用vue3中的pinia&#xff0c;我们可以在多个页面间共享数据&#xff0c;但是一旦我们关闭或刷新页面&#xff0c;这些数据就会丢失&#xff0c;因此&#xff0c;我们需要有一种数据持久化的解决方案。在记录vue3 使用vue3中的pinia&#xff0c;我们可以在多个页面间共享数据&…

一体化运维监控:数据中心运维可视化的指挥中枢

在当今数字化世界中&#xff0c;数据中心的运维管理对于企业的稳定运营至关重要。然而&#xff0c;传统的运维管理方式往往面临着许多挑战&#xff0c;如多系统整合困难、运维效能低下等。为此&#xff0c;监控易品牌推出了一体化运维管理软件&#xff0c;旨在构建数据中心可视…

【App 抓包提示网络异常怎么破?】

背景 当你测试App的时候,想要通过Fiddler/Charles等工具抓包看下https请求的数据情况,发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例: 455 x 705 Fiddler中看到的请求是这样的: 619 x 215 你可能开始找证书的问题:是不是Fiddler/Charles的证书没有…

sqlalchemy的部分函数合集

func.concat func.group_concat func.find_in_set func.sum func.left func.month func.round func.avg func.rpad func.ifnull func.replace func.date_format CONCAT 函数&#xff1a;将两个或多个字符串连接在一起。例如&#xff1a; SELECT CONCAT(Hello, , World) AS r…

单元测试Testng

Test官网介绍 tentng官网 TestNG - Download Current Release and Beta Versions Maven <dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>7.6.1</version><scope>test</scope> …

数字化工厂:连接、集成与数据融合

随着科技的不断发展&#xff0c;数字化工厂管理系统逐渐成为制造业的重要趋势。数字化工厂的核心在于连接、集成与数据融合&#xff0c;通过这些技术手段&#xff0c;实现对设备、生产线、工厂、供应商、产品、客户等各个环节的全面优化&#xff0c;提升企业的生产效率和产品质…

NET-MongoDB的安装使用

一&#xff0e;下载 MongoDB 点击 Select package 选择自己所需版本后点击下载&#xff0c;本文选用Windows 6.0版本以上 二、配置MongoDB 在 Windows 上&#xff0c;MongoDB 将默认安装在 C:\Program Files\MongoDB 中。 将 C:\Program Files\MongoDB\Server\version_numbe…