主页 > 知识库 > 解决docker重启redis,mysql数据丢失的问题

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

热门标签:企业办理400电话收费标准 新乡牧野400电话申请 智能电销机器人真的有用么 百度地图底图标注 激光标记地图标注 电销智能机器人试用 高德地图标注足迹怎么打标 中国地图标注上各个省 抚州市城区地图标注

官方文档:

所以 mysql应如下启动:

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

redis:

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数据丢失的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

标签:西安 忻州 辛集 延安 邯郸 南通 海西 临汾

巨人网络通讯声明:本文标题《解决docker重启redis,mysql数据丢失的问题》,本文关键词  解决,docker,重启,redis,mysql,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《解决docker重启redis,mysql数据丢失的问题》相关的同类信息!
  • 本页收集关于解决docker重启redis,mysql数据丢失的问题的相关信息资讯供网民参考!
  • 推荐文章