媒介
最近在做自己的个人博客,然后有一个功能是记录每天发表的文章数量,效果当天发布的文章却没有记录到,因为我摆设java到docker时添加文章也会造成时间会少8小时,马上遐想到了是docker的mysql容器的时区问题,从网上找了修改容器内的时区,为了一劳永逸,直接把容器删了重新设置时区,效果忘记备份了,记录一下恢复数据的过程。
前提
必须有将mysql的数据挂在到数据卷上,然后必要有原先的表结构,这个我在当地电脑上也有一个数据库,只是双方数据差别,所以直接导出了一个表结构。
步骤
1.误删容器后,首先找到挂在的数据卷位置,可以通过该命令进行数据卷检察
一般数据卷的位置在/var/lib/docker/volumes,可以进入检察
- cd /var/lib/docker/volumes/
复制代码 2.通过finalshell将数据卷的数据全部拷贝到当地电脑中。
此中的焦点文件就是ibdata1以及你的数据库,这里我的数据库是llpyblog
3.通过以下命令删除原先的数据卷
4.然后重新创建数据卷并启动容器,就是这个-e TZ=Asia/Shanghai,让我忙活一上午
- docker volume create mysqldata
- docker run --name mysql \
- -e MYSQL_ROOT_PASSWORD=123456 \
- -e TZ=Asia/Shanghai \
- -p 3306:3306 \
- -v mysqlcnf:/etc/mysql/conf.d/hmy.cnf \
- -v mysqldata:/var/lib/mysql \
- -d mysql:5.7.25
复制代码 创建完后,通过navicat毗连上,创建好数据库后运行sql文件,初始化好表结构。
5.进入数据卷位置
- cd /var/lib/docker/volumes/
- mysqldata
复制代码 会出现一个你创建的数据库名称的文件,把该文件夹删除
并删除以下三个文件
6.将之前拷贝到当地电脑的同名的llpyblog文件夹拷贝一份进来,再将ibdata1拷贝进来
注意:紧张的事变说3遍
不要将ib_logfile0和ib_logfile1一同拷贝,否则不能启动mysql容器,我在这里踩了很久的坑,差点放弃。
不要将ib_logfile0和ib_logfile1一同拷贝,否则不能启动mysql容器,我在这里踩了很久的坑,差点放弃。
不要将ib_logfile0和ib_logfile1一同拷贝,否则不能启动mysql容器,我在这里踩了很久的坑,差点放弃。
7.重启mysql容器
- docker stop mysql
- docker start mysql
复制代码 重启后重新进入navicat,可看到数据已经恢复。
再次访问网站,看到数据恢复,舒服了!!!
总结
在做一些操作之前,记得先备份好数据,如果一开始直接转储一份sql文件出来,就避免掉许多麻烦了!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |