博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次危险的运维mv操作
阅读量:6163 次
发布时间:2019-06-21

本文共 995 字,大约阅读时间需要 3 分钟。

hot3.png

1: 这次操作的原因是

    由于mysql数据放在/分区,而/分区快被写满了,只能把mysql数据移动到别的分区。

2: 所做的操作

    由于怕移动的时候由于意外被中断掉,使用nohup mv mydata/  /data &去移动。

3: 发现危险

    由于总共的数据39G,但发现移动到4G的时候,好像mv命令停止了,当初以为是在移动ibdata1这个文件比较大,所以这样。当初感觉有点奇怪,就看了下mv进程,发现处于T的状态,网上顺手查了下,查到这篇文章,

4: 吃饭时的讨论

    吃饭时跟同事在说,这次移动mysql数据的时候有点奇怪,好像移动数据的时候停止不动了。进程处于T的状态,然后我又用nohup执行,不知道发生了什么情况。同事顺口回了,用strace -p看一下就知道了,会逛刷。当时还没意识到mv被strace -p了,然后处于停止的状态。

5: 吃饭回来的时候

    发现应该已经移动完了,但数据还是一样,没有动过。同事说到strace,而我在文章中刚好也看到了,就再认真再看了下,发现如下说明:当进程正在被跟踪时,它处于TASK_TRACED这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。比如在gdb中对被跟踪的进程下一个断点,进程在断点处停下来的时候就处于TASK_TRACED状态。而在其他时候,被跟踪的进程还是处于前面提到的那些状态。

6: 问题解决

    想到可能被strace了,刚好同事说我在mv的时候,他顺手strace了一下,后来同事ps看了一下,发现strace进程没退出,用kill -9强杀后掉strace后,可以正常移动数据了。做了软链接,恢复了mysql服务,

7: 事后总结

    使用mv来移动重要数据风险还是比较高的,特别经历这次以后,发现mv是个比较危险的命令。也发现了一个重大情况,strace竟然会导致mv中止。幸好没出什么大事,不然数据量大,再弄个从库时间就太长了。

8: 改进方案

    使用cp拷贝数据过去(cp mydata/ /data/),使用mv换个名字(mv mydata mydata1),做个软链接(ln -s /data/mydata mydata)。最后rm -rf mydata1/即可,比较安全的方案。

转载于:https://my.oschina.net/zhuangweihong/blog/547260

你可能感兴趣的文章
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>
1. Git-2.12.0-64-bit .exe下载
查看>>
怎样关闭“粘滞键”?
查看>>
[转]React 教程
查看>>
拓扑排序介绍
查看>>
eclipse打开工作空间(workspace)没有任务反应
查看>>
使用Sybmol模块来构建神经网络
查看>>
字符串去分割符号
查看>>
WPF中,多key值绑定问题,一个key绑定一个界面上的对象
查看>>
UML类图简明教程
查看>>
java反编译工具(Java Decompiler)
查看>>
Android开发之自定义对话框
查看>>
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>