您的当前位置:首页解决docker重启redis,mysql数据丢失的问题

解决docker重启redis,mysql数据丢失的问题

2021-03-27 来源:六九路网
解决docker重启redis,mysql数据丢失的问题

官⽅⽂档:

所以 mysql应如下启动:

docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密码 -v /windows盘符/指定的⽂件夹路径:/var/lib/mysql mysql:5.7redis:

docker run -p 6379:6379 -d -v /windows盘符/指定的⽂件夹路径:/data redis:5.0 redis-server --appendonly yes多看官⽅⽂档,⾥⾯有详细的说明

补充知识:docker 挂载进容器的⽂件修改后没有改变需要重启

今天发现⼀个很奇怪的现象,就是我在宿主机上的⽂件挂载进docker后,主机上删除了⽂件,并且重新上传重命名为相同名字的⽂件,容器中的没有同步.

先来说下Linux,Linux存储是分为iNode和block的,iNode存储的是⽂件的属⾏信息,例如⼤⼩,在磁盘的什么位置,block是4k⼤⼩的⼀个块,存储的是⽂件的实际信息,不⾜4k⼤⼩的⽂件也会占⽤掉4k的空间.

了解了上⾯,再来说docker,挂载进docker的⽂件,实际上是docker记住了⼀个iNode,他可以通过这个iNode找到block,也就是实际的⽂件信息.如果是⽤ > 追加重定向写⼊⽂件,是可以同步到docker的,但是如果是rm 重命名的,⽂件的iNode就改变了,但是docker中的iNode还是指向了之前的磁盘位置,所以⽂件没有改变.

rm 原理:rm只是删除了iNode,没有了iNode通过正常⽅式,找不到磁盘上的block,看起来就是删除了,但是⽂件信息还在,⽂件信息会在下次写⼊到这⾥的时候覆盖掉,所以数据被删除还有恢复的⽅法,但是,如果删除的时候⽂件是打开的,⽂件也不会被删除

同样的还有vim ,vim ⽂件的时候,是基于现有的⽂件copy了⼀份,同级⽬录下会有⼀个 .开头swp结尾的⽂件,当你保存退出的时候,vim 会删掉源⽂件,将这个⽂件重命名为源⽂件的名字,iNode⾃然也就改变了.

以上这篇解决docker重启redis,mysql数据丢失的问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容