因overlay2文件夹占用过大而引起的docker数据迁移之战(下)

帮助自己养成记录的习惯


前言

上回书说到,曹操他为了喝一杯奶茶,而去和刘备称兄道弟,并把手下数万粮草兵马,以及财宝美人赠予刘备,只因刘备手里托着充满浓郁芳香的奈雪软欧包。他…
咳咳跑题了跑题了,想的我都流口水了。上回事情是这样,我把甲方系统的整个docker容器做了一次数据迁移,后来把所有容器都跑起来的时候发现,库表丢了…这不明摆着我在做着删库跑路的事情吗?这…我奖金都还没拿到手呢,怎么能跑呢?不行不行,我得想办法把这事解决咯,好歹,奖金拿到手再跑啊,你们说对不?


正文

还记得我之前给文件授权777的操作吗?在那样授权完之后,你登陆mysql之后,它会给你一个警告


这个警告的意思主要是my.cnf被赋予了所有用户都可做修改的权限,而这样做,mysql认为是不安全的,所以它在这里发出了警告,因此,各位俊男靓女们可得记得,擅用chmod 777 -R ./* 还是很容易留下安全隐患的。

呐,之前我的mysql库表不是都不见了吗?导致系统后台主工程跑不起来,数据基本等于全丢了,我当时内心可谓慌得一批。我眼瞅着我身旁安静躺在桌上的背包,内心已经响起了这样的呼喊:快,拿起包,跑!快!为了人民!为了社会!你一定要活下去!…

但是!我Dog_Z是这样的人吗?我是会捅了娄子就跑的人吗?——会。

开玩笑开玩笑,我可是很负责的小可爱呢。

紧接着,我整理了一下思绪,我之前用的是CP大法,那也就是说,我之前所有的原文件都还在,那…也就是说!我把docker的存储路径再改回去不就完了吗?改回去看看我数据是不是真的丢了,如果没丢那我把所有数据都转储出来,重新入库不就完了吗?吼!我的小脑袋瓜,可真聪明。

理清了思路,刹那间,只见我的双手在cherry 8.0上,飞速的舞蹈,就连我的大脑,都跟不上它的速度,就仿佛双手拥有了自己的思想,平常脑袋会了,手不会的事,就在此时此刻被证明了,它傲立在智商之巅,不屑一顾的说了句:大脑,你没了我,啥都不是。


(这里记得由于要改回之前的路径,所以/etc/systemd/system/docker.service.d/devicemapper.conf这个文件里面的路径得改,或者直接删了也可以)

待双手用回车给 show databases; 做了个Ending之后,我的快乐!它又回来了!Hhhhhhhhhh


数据没丢,我不用跑路了,我的奖金又有希望了!Hhhhhhhhhh

咳咳,那也就是说,在用CP大法的时候,貌似出了点问题。我当时就怀疑,由于docker对路径可能有很多联系,当时restart容器的时候,也报了path相关的错误,我在原来的路径外层多了一层/data ,这样子会不会导致有一些与路径相关的地方,我根本改不到,我也没办法一个一个去找到他们,再去做修改,这样太耗时间了。

我思来想去,想到了一个妙计,这个妙计妙到我觉得完全可以并入三十六计里面作为第三十七记,它就是——Rename 重命名!

我把var文件夹改个名字,然后再重新mkdir一个var文件夹并挂载上大容量磁盘,那我不就是完美解决了路径问题了吗?喔!我真是个天才!


紧接着就是一顿第三十七记的巧妙运用

mv var varr
mkdir var

然后重新找了个磁盘

fdisk -l

把/dev/vdc1挂载到/var上

mount /dev/vdc1 /var

那么我们的准备工作,就完成了,后续就是依照着我们上集的策略因overlay2文件夹占用过大而引起的docker数据迁移之战(上),stop docker再运用CP大法,然后再重启docker,连路径都不需要修改了!

然而,当我重新restart,并且重新进入mysql之后,我被现实打的猝不及防。


即使授权之后,mysql里面同样读取不到数据,系统还是无法正常运行,我…草率了。

但,对作为一柱擎天,emmm好像不对,作为顶梁支柱的帅Dog来讲,我怎么能够如此轻易的就放弃呢?这么简单的问题就倒下的话,我还怎么迎娶白富美,走上人生巅峰?

在我沉着冷静的对战况进行了解剖,分析,拿捏。我睁开眼睛的瞬间,看到了一条破绽之线,绷紧了!直指向问题的喉咙之处,我握紧了我的日轮刀,深深的进行了一次水之呼吸…


跑远跑远了,咳,我抓住了问题的核心——CP大法与权限。

我为什么要在CP完所有文件之后再去给它授权呢?我在CP的同时之间把它原先的所有权限,一并带过去,不就没这么多破事了吗?(这就是我上集说的,挖了一个坑,由于服务器原因,cp之后所有文件的权限会被改变,所以带着权限一起复制才是正确的做法。

cp -R -p /varr/* /var

喔!天呐!知识要学会灵活运用!不能靠死记硬背!小学的时候老师是怎么教你的???是不是只顾着睡觉了???——是的…

眼瞅着还有1个小时就午休了,赶紧把事情解决,我还要好好享受美食带来的快感呢。

我的日轮刀斩下鬼头的那一刻,就预示这这场战斗,我胜利了!


我看着docker运行在1个T的磁盘之下,望着这美景,我感到了些许欣慰。我做到了,我通过我的不懈努力,运用我的聪明才智,让我的容器孩子们拥有了广袤的土地,他们能够随意的翻滚,玩耍,造作。我很开心能够让他们尽情的放飞自我,这样,我不管多苦多累~一切,都是值得的!

喂,老板!问题解决了,叫甲方赶紧验收,我还等着项目奖金还花呗呢。

总结

我们在部署项目的时候,难免会遇到overlay2文件夹爆满的情况,有的时候是docker容器里面的东西太满,有的时候是docker运行的日志没做限制,导致日志文件撑爆了磁盘,前者建议更换容器存储位置到更大的磁盘,而后者则建议对docker日志的大小做一下限制。

这次问题的解决几个关键点:

  1. 复制的时候记得加上 -p连权限一起复制。
  2. 存储路径做了变更,记得修改/etc/systemd/system/docker.service.d/devicemapper.conf文件里的路径。
  3. systemctl daemon-reload 在配置文件修改完之后,这一步不能漏,否则docker启动不了。
  4. 过程中运用了crontab定时任务命令和mount磁盘挂载命令,这方面不懂的,我后续也会写一下相关的知识点,请多多关注。

OK!我是Dog_Z,一个刚入行没多久,帅气逼人的初级程序狗!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值