MySQL运维:利用lsof命令恢复删除文件

需积分: 3 29 下载量 49 浏览量 更新于2024-08-09 收藏 4.93MB PDF 举报
"MySQL运维技巧-誉天hcie-r&s面试宝典v3.0(原版) 面试必备" 在MySQL运维中,DBA需要掌握一系列技巧和问题处理方法,以应对可能出现的各种情况。本资料重点介绍了如何利用lsof命令来恢复误删除的文件,这是数据库管理中一个非常实用的技能。 lsof命令是Linux系统中的一个工具,用于显示当前系统中所有打开文件的状态,包括进程ID(PID)、用户、文件描述符(FD)以及文件名等信息。在数据库运维中,如果一个正在运行的MySQL进程意外删除了某个文件,例如数据文件`func.MYD`,lsof可以帮助我们找回这个文件。通过`lsof -p <PID>`可以查看指定进程打开的所有文件,找到对应被删除文件的文件描述符(FD)。 当我们发现一个被删除的文件仍在进程的文件描述符中时,可以通过`/proc/<PID>/fd/<FD>`路径访问这个文件。例如,如果PID为28400的mysqld进程打开了文件`func.MYD`,我们可以通过`/proc/28400/fd/291`来访问。文件描述符是进程识别文件的方式,即使文件在文件系统中已被删除,只要进程不关闭这个文件描述符,文件数据仍可被读取和写入。 恢复误删文件的具体步骤如下: 1. 使用`lsof`命令找到仍然持有被删除文件句柄的进程及其文件描述符。 2. 访问`/proc/<PID>/fd/<FD>`路径,确认文件还在。 3. 使用I/O重定向,将数据复制到新的文件中,如`cat /proc/28400/fd/291 > /data/to/path/mysql/func.MYD`,这样就完成了文件的恢复。 这个技巧在处理如Apache服务器的日志文件或数据库数据文件等重要文件的误删除时尤为关键。在给出的例子中,当Apache服务器的access_log被误删,通过`lsof`找到仍然持有文件句柄的进程,然后在`/proc`目录下找到文件描述符,就可以恢复access_log的内容。 此外,这本书《MySQL DBA修炼之道》还涵盖了MySQL的入门知识、开发阶段的技巧和测试基础,包括MySQL的安装部署、基本架构、SQL语法、索引、权限管理、查询优化、性能测试等方面,旨在帮助读者全面理解和掌握MySQL的运维与开发工作。这本书对于希望成为训练有素的DBA来说,是一份宝贵的参考资料。