我尝试在 MySQL 处于活动状态时复制 MySQL 数据目录(我知道这样做的潜在缺点,但我无法停止 MySQL,因为它需要保持运行)。
导出/导入转储不是我想要的,因为我想调查 .frm 和 .idb 文件中的一些详细信息。正因为如此,我想复制它们。
我可以复制大部分文件,但有些文件无法复制。失败的文件由 mysql 组和用户拥有,因此我做了一个su mysql
.但我无法复制它们,因为我得到了Permission denied
。
为了了解更多细节,我跑了strace -v
:
open("webinar_citrix_go_to_meeting_appointments.frm", O_RDONLY|O_NONBLOCK) = 4
fstat(4, {st_dev=makedev(253, 3), st_ino=787045, st_mode=S_IFREG|0660, st_nlink=1, st_uid=44897, st_gid=40898, st_blksize=4096, st_blocks=16, st_size=7396, st_atime=2019/06/26-00:23:19.012875620, st_mtime=2018/04/06-11:33:23, st_ctime=2018/04/27-09:00:12.027723187}) = 0
fcntl(4, F_GETFL) = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
fcntl(4, F_SETFL, O_RDONLY|O_LARGEFILE) = 0
write(7, "C0660 7396 webinar_citrix_go_to_"..., 57) = 57
不幸的是,我没有看到支持我的理论的错误代码。是否有一个开关可以让 scp 忽略打开的文件?
ls -l
失败的文件之一(所有失败的文件具有相同的权限)的输出是-rw-rw---- 1 mysql mysql
.
id
告诉我活动用户具有正确的组成员身份:
uid=44897(mysql) gid=10100(user) groups=10100(user),40898(mysql)