大意了,数据库数据无了,记录一下通过ibdata1恢复数据的过程 ...

打印 上一主题 下一主题

主题 830|帖子 830|积分 2490

媒介

最近在做自己的个人博客,然后有一个功能是记录每天发表的文章数量,效果当天发布的文章却没有记录到,因为我摆设java到docker时添加文章也会造成时间会少8小时,马上遐想到了是docker的mysql容器的时区问题,从网上找了修改容器内的时区,为了一劳永逸,直接把容器删了重新设置时区,效果忘记备份了,记录一下恢复数据的过程。

前提

必须有将mysql的数据挂在到数据卷上,然后必要有原先的表结构,这个我在当地电脑上也有一个数据库,只是双方数据差别,所以直接导出了一个表结构。

步骤

1.误删容器后,首先找到挂在的数据卷位置,可以通过该命令进行数据卷检察
  1. docker volume ls
复制代码
一般数据卷的位置在/var/lib/docker/volumes,可以进入检察
  1. cd /var/lib/docker/volumes/
复制代码
2.通过finalshell将数据卷的数据全部拷贝到当地电脑中。

此中的焦点文件就是ibdata1以及你的数据库,这里我的数据库是llpyblog
3.通过以下命令删除原先的数据卷
  1. docker volume rm ‘数据卷名称’
复制代码
4.然后重新创建数据卷并启动容器,就是这个-e TZ=Asia/Shanghai,让我忙活一上午
  1. docker volume create mysqldata
  2. docker run --name mysql \
  3. -e MYSQL_ROOT_PASSWORD=123456 \
  4. -e TZ=Asia/Shanghai \
  5. -p 3306:3306 \
  6. -v mysqlcnf:/etc/mysql/conf.d/hmy.cnf \
  7. -v mysqldata:/var/lib/mysql \
  8. -d mysql:5.7.25
复制代码
创建完后,通过navicat毗连上,创建好数据库后运行sql文件,初始化好表结构。
5.进入数据卷位置
  1. cd /var/lib/docker/volumes/
  2. mysqldata
复制代码
会出现一个你创建的数据库名称的文件,把该文件夹删除

 并删除以下三个文件

6.将之前拷贝到当地电脑的同名的llpyblog文件夹拷贝一份进来,再将ibdata1拷贝进来

注意:紧张的事变说3遍
不要将ib_logfile0和ib_logfile1一同拷贝,否则不能启动mysql容器,我在这里踩了很久的坑,差点放弃。
不要将ib_logfile0和ib_logfile1一同拷贝,否则不能启动mysql容器,我在这里踩了很久的坑,差点放弃。
不要将ib_logfile0和ib_logfile1一同拷贝,否则不能启动mysql容器,我在这里踩了很久的坑,差点放弃。

7.重启mysql容器
  1. docker stop mysql
  2. docker start mysql
复制代码
重启后重新进入navicat,可看到数据已经恢复。
再次访问网站,看到数据恢复,舒服了!!!

总结

在做一些操作之前,记得先备份好数据,如果一开始直接转储一份sql文件出来,就避免掉许多麻烦了!!!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表