我在一个EC2实例上有一个mysql数据库服务器,在Raid 0数组中有3个驱动器。今天早上,服务器崩溃了,在检查了日志之后,我注意到一个结构需要清理错误(即系统错误代码117)。这样,我试图在受影响的驱动器上运行一个xfs_check,但返回的内容如下:
xfs_repair: /dev/md0 contains a mounted filesystem
fatal error -- couldn't initialize XFS library我已经安装了所有必要的工具/包,所以我检查了syslog并返回如下:
Filesystem "md0": XFS internal error xfs_da_do_buf(2) at line 2112 of file /build/buildd/linux-ec2-2.6.32/fs/xfs/xfs_da_btree.c. Caller 0xffffffff81261bb5在尝试一个xfs_repair之后,我仍然可以看到相同的输出和相同的syslog条目。
由于问题仅存在于一个数据库目录中,是否有一种方法可以修复上述问题,或者让mysql忽略数据库目录以便继续运行(即手动删除数据库,同时保持lib目录完整)。任何建议都会有帮助。
发布于 2011-05-30 04:42:07
卸载当前安装的任何内容。xfs_repair有时对此有点挑剔。lsof /mountedpartition,看看如果您无法卸载分区,哪些分区仍然处于打开状态。
根据关闭方式的不同,您可能需要执行-L来清除日志,并且不管您的偏好如何,在xfs_repair上使用-P - xfs_repair通常会运行并被卡住,然后就坐在那里,-P允许它继续运行。
如果您想检查进度,从另一个终端会话,strace -p (pid的xfs_repair),你可以看到它是否还在做什么。
我不知道您正在运行的是什么版本的xfsprogs/xfsdump,但是,看看您的操作系统是否可以进行升级--有一些最近的升级(过去8个月)解决了一些奇怪的缓冲区溢出问题。XFS工具目前为3.1.5。
在修复过程中,您将无法很容易地有选择地删除目录--尽管错误消息表明您将看到一些数据丢失,或者会在/lost+found中找到这些文件。根据结构的糟糕程度,您可能会发现很少有数据丢失。如果你真的想深入,你可以有目的地遍历元结构并清除某些部分,但是,我想你可能会发现这是非常复杂的。
或者,从备份中恢复mkfs和还原。
在重读过程中,文件系统似乎已经挂载,您可以做的是关闭mysql,将一个坏的数据库目录移出mysql目录,重新启动mysql。文件系统应该在某个时候被清理,但是,如果唯一的问题是一个目录和您能够挂载文件系统,那么您应该能够写/移动这个目录。
https://serverfault.com/questions/275066
复制相似问题