Window10数据库崩溃启动失败,MySQL8.0.30通过data文件夹恢复数据库到Docker

背景:

昨天关机前还在使用mysql,一切正常,但今天打开电脑,发现mysql启动不起来了,老是提示端口占用,但是系统也没有新安装什么软件,而且通过查询nat命令也没发现3306端口占用。而且修改成3307等其它端口也都一直提示错误,如下:

2024-03-08T02:57:46.934875Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2024-03-08T02:57:46.936846Z 0 [System] [MY-010116] [Server] D:\software\mydevutils\MySQLServer8\bin\mysqld.exe (mysqld 8.0.30) starting as process 4036
2024-03-08T02:57:46.948027Z 0 [Warning] [MY-013907] [InnoDB] Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity=100663296. Please use innodb_redo_log_capacity instead.
2024-03-08T02:57:46.950713Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-03-08T02:57:47.789982Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-03-08T02:57:48.201977Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-03-08T02:57:48.202579Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-03-08T02:57:48.204860Z 0 [ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: 以一种访问权限不允许的方式做了一个访问套接字的尝试。2024-03-08T02:57:48.205403Z 0 [ERROR] [MY-010257] [Server] Do you already have another mysqld server running on port: 3307 ?
2024-03-08T02:57:48.205806Z 0 [ERROR] [MY-010119] [Server] Aborting
2024-03-08T02:57:49.468506Z 0 [System] [MY-010910] [Server] D:\software\mydevutils\MySQLServer8\bin\mysqld.exe: Shutdown complete (mysqld 8.0.30)  MySQL Community Server - GPL.

我再尝试重装这个mysql8.0.30,重装后发现,它官方的这个msi镜像装了之后等半天也没法启动mysql80服务,跟我手动启动情况一致。

感觉系统有点问题,但毕竟是工作电脑不好随便重装。幸好我重装的时候有备份mysql8下的data文件夹,电脑也还有安装docker,这时我想到数据库能否恢复到docker中的mysql中,说干就干。

一、拉取镜像

docker pull mysql:8.0.30

二、创建挂载路径

mkdir -p /usr/local/software/mysql/3312/data
mkdir -p /usr/local/software/mysql/3312/logs
mkdir -p /usr/local/software/mysql/3312/conf

三、创建配置文件my.cnf

//根目录选择自身实际最大磁盘路径 一般为/home 或者定义/data 或自定义路径
vi /usr/local/software/mysql/3312/conf/my.cnf
//insert 插入以下内容[mysqld]#服务端口号 默认3306
port=3306
user=mysql
#mysql数据文件所在位置
datadir=/var/lib/mysql#pid
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
default-time-zone = '+8:00'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 允许访问的IP网段
bind-address=0.0.0.0#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve=1#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED#最大连接数
max_connections=400#最大错误连接数
max_connect_errors=1000#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=1G

四、通过data文件恢复data里的数据库

Mysql里的数据一般会自动保存到D:\MySQL Server 8.0\Data目录下,卸载前要将其备份。

目前进测试了同版本的Mysql8.0.30,其它的版本目前没有测试成功,有成功或者方法的麻烦分享一下,谢谢。

个人发现我这个版本data下面才有#ib_16384_0.dblwr,#ib_16384_1.dblwr这两个文件。

在这里插入图片描述

五、启动docker 容器

# -p 端口映射 3312:3306 指外部访问端口改成33060规避一些默认端口被禁情况docker run --privileged=true -p 3312:3306 -m 1g --name mysql3312 \
-v /usr/local/software/mysql/3312/conf:/etc/mysql/conf.d \
-v /usr/local/software/mysql/3312/logs:/var/log/mysql \
-v /usr/local/software/mysql/3312/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.30  --lower_case_table_names=1 

六、检查容器是否正常运行

#检查镜像是否正常运行
docker ps#启动后,查看日志,没出现error才能正常启动
docker logs mysql3312
#期间,我遇到两个错误,一个是lower_case_table_names有误,所以启动的时候加上
--lower_case_table_names=1
#另一个错误,提示#innodb_redo有误,所以猜测是里面的文件跟新mysql匹配不上,清空再次运行即刻
docker start mysql3312#进入容器
docker exec -it mysql bash#用默认密码登陆账号
#我发现有趣的是,第一次运行容器,都要stop重新start容器才能里面才能执行成功这个命令
mysql -uroot -p

七、创建对应数据库及账号密码


#创建账号并授权
CREATE USER 'hans'@'%' IDENTIFIED BY 'hans';
CREATE DATABASE test_database CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
GRANT ALL PRIVILEGES ON test_database .* TO 'hans'@'%';
FLUSH PRIVILEGES;

相信大家有看到为啥docker运行路径感觉是Linux下面。确实是的,这是因为我电脑同时装了Linux8虚拟机。

提醒一下,由于覆盖了旧系统的data文件,密码也是旧系统的密码。

好了,分享到此结束,欢迎提出指正。

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

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

相关文章

组态软件的概念

一、前言 组态软件是一种用于设计、配置和管理自动化系统的软件。它可以帮助用户快速地创建和修改自动化系统的界面、逻辑和通信功能,从而提高生产效率和质量。 二、组态软件的定义 组态软件是一种集成开发环境,用于设计、配置和管理自动化系统。它通…

两会声音|中国石化人大代表:要突出战略性新兴产业、未来产业的位置

十四届全国人大二次会议即将闭幕,“新质生产力”首次写入政府工作报告,并出现在了重要位置。政府工作报告主要从推动产业链供应链优化升级、积极培育新兴产业和未来产业、深入推进数字经济创新发展等三个方面进行了阐述和规划。 全国两会期间&#xff0c…

2024 年系统架构设计师(全套资料)

2024年5月系统架构设计师最新第2版教材对应的全套视频教程、历年真题及解析、章节分类真题及解析、论文写作及范文、教材、讲义、模拟题、答题卡等资料 1、2023年11月最新第2版本教材对应全套教程视频,2022年、2021年、2020年、2018年、2016年五套基础知识精讲视频、…

搭建nacos集群,并通过nginx实现负载均衡

nacos、eureka、consul、zookeeper等都是常用的微服务注册中心,这篇文章详细介绍一下在Ubuntu操作系统上搭建一个nacos的集群,以及通过nginx的反向代理功能实现nacos的负载均衡。 目录 一、安装nacos 1、安装nacos 2、修改nacos配置文件 3、创建naco…

学习JAVA的第十九天(基础)

目录 File 成员方法(判断和获取) 成员方法(创建和删除) 成员方法(获取并遍历) IO流 FileOutputStream FileInputStream 文件拷贝 前言:学习JAVA的第十八天(基础)…

【C语言】Linux内核pci_read_config_和pci_write_config_

一、pci_read_config_讲解 这些函数是Linux内核中用于从PCI设备的配置空间读取信息的函数。配置空间是PCI设备的一小块内存,它存储了关于该设备的重要信息,例如设备ID、供应商ID、中断设置等。 pci_read_config_byte、pci_read_config_word、pci_read_c…

章六、集合(1)—— 概念、API、List 接口及实现类、集合迭代

零、 关闭IDEA调试时自动隐藏空元素 一、 集合的概念 存储一个班学员信息,假定一个班容纳20名学员 当我们需要保存一组一样(类型相同)的元素的时候,我们应该使用一个容器来存储,数组就是这样一个容器。 数组有什么缺…

一文读懂:公网IP地址证书

公网IP证书是一种SSL证书,用于验证和确认特定的公网IP地址是否实际属于申请者。如果验证通过,证书颁发机构将向该IP地址持有人颁发一个以IP地址为主题的SSL证书。使用公网IP证书可以有效提升IP身份的辨识度,减少网站链接被假冒的风险&#xf…

学会这7种SQL进阶用法,让你少走99%的弯路!

引言 在日常业务开发中,熟练掌握SQL语言是至关重要的。除了基础的增删改查操作外,了解和掌握一些进阶的SQL用法能够让你更高效地处理各种复杂的数据操作。本文将介绍几种SQL进阶用法,让你少走99%的弯路,提高数据处理效率。 自定…

【Idea】八种Debug模式介绍

1.行断点 在对应的代码行左侧边栏点击鼠标左键,会出现一个红色圆圈,以debug模式执行时当代码运行到此处则会停止,并可以查询相关上下文参数 2.方法断点 在方法左侧点击创建断点,在方法进入时会停止,同时可以右键断点,…

vite vue3 路由配置@找不到文件问题描述

问题描述 在vite.config.js文件中配置路由的时候,添加路由界面,找不到指定的文件,提示错误,如图所示: 但是换成 ./ 或者 ../ 就正常了,也没有报错问题 解决办法 1.安装一个path的插件 npm install --sav…

风车IM即时通讯系统APP源码DJ2403版完整苹果安卓教程

关于风车IM,你在互联网上能随便下载到了基本都是残缺品, 经过我们不懈努力最终提供性价比最高,最完美的版本, 懂货的朋友可以直接下载该版本使用,经过严格测试,该版本基本完美无缺。 1.宝塔环境如下: Ngin…

什么是Git引用和分支?

一. 引言 什么是Git引用和分支?比如我在 Github 上一个项目的 .git/refs目录下: ├─heads │ dev │ master │ ├─remotes │ └─origin │ master │ └─tags refs 目录下包含了 heads、remote、tags 三个子目录&#xff0…

openCV制作九宫格图片

我想将任意九张图片按照九宫格排列方式合并成一张大图,使用openCV实现。 如果用画图工具来实现的话,需要事先准备一个600 X 600像素的画布。用openCV实现也是同理,准备一张600 X 600的图片。然后将图片划分成9份,每一份替换成小图…

《Ubuntu20.04环境下的ROS进阶学习0》

一、逛ROS应用商店 在上一专栏http://t.csdnimg.cn/oGlcu,我们了解了ROS的基本功能。这一专栏将会在此基础上做出进一步拓展学习。那么首先我们要学会下载并阅读别人的代码。常用的两个应用商店一个是ROS的官方应用商店ROS index,另一个就是我们熟知的gi…

11---数字温度 OR 湿度传感器电路设计

视频链接 数字温度or湿度传感器电路设计02_哔哩哔哩_bilibili 数字温度 OR 湿度传感器电路设计 1、温湿度传感器 DHT11 DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度-5%RH, 温度-2℃,量程湿度20-90%RH, 温度0~50℃。 D…

MySQL临时表创建出错(OS errno 13 - Permission denied)

一个客户向我抱怨:在MySQL查询小表没有问题,查询大表出错,下面是他发给我的出错的部分截屏(客户的表名被我隐藏了)。 这里的给出的信息已经比较明显了,是向/tmp目录中创建临时表失败(临时表的路…

【嵌入式——QT】Splash与登录窗口

一般的大型应用程序在启动时会显示一个启动画面,即Splash窗口,Splash窗口是一个无边对话框,一般显示一个图片,展示软件信息,Splash窗口显示时,程序在后台做一些比较耗时的启动准备工作,Splash窗…

Websocket在Asp.net webApi(.net framework)上的应用

之前在写看板部分的web api的时候,都是通过Ajax在规定时间内轮询调用web api,这样简单省事,但是当看板多了(并发量上来)以后,比较消耗服务器的性能,所以最近研究了websocket,希望使用…

【CSS面试题】外边距折叠的原因和解决

参考文章 什么时候出现外边距塌陷 外边距塌陷,也叫外边距折叠,在普通文档流中,在垂直方向上的2个或多个相邻的块级元素(父子或者兄弟)外边距合并成一个外边距的现象,不过只有上下外边距才会有塌陷&#x…