我试图将MySQL从5.6升级到5.7,一切似乎都正常,但当我尝试运行xtrabackup时,我现在得到了以下错误:
InnoDB: Allocated tablespace ID 12 for percona/checksums, old maximum was 0
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to the directory.
xtrabackup: error: xb_load_tablespaces() failed witherror code 11没有什么改变,mysql用户perms,系统用户perms,目录perms,以及结构,但是现在我看到了这个错误。当我以根用户身份运行命令时,我无法复制这个问题,因此它使我相信这是一个系统权限问题。
我暂时禁用了selinux,把它作为一个干扰物移除。我还将所有权限都授予了数据库程序mysql用户,以防它是我丢失的新权限。
下面是我使用的命令:
su -s /bin/bash databacker -c "innobackupex --user=databacker --password=p4ssw0rd --socket=/var/lib/mysql/mysql.sock --stream=tar /tmp | gzip - > /tmp/wtf.tgz"我测试了perms作为数据库程序的用户,这一切似乎都像预期的那样工作:
su -s /bin/bash databacker -c "cd /tmp && touch test.txt"
su -s /bin/bash databacker -c "cd /var/lib/mysql && touch test.txt"我遗漏了什么?
发布于 2017-11-17 19:42:44
在升级过程中,我遇到了一个类似的问题,在升级过程中,我使用了混合库。确保你已经没有过时的图书馆文件还在那里。我必须完全卸载MySQL并从头重新安装它,然后它就开始工作了。
发布于 2020-08-25 13:12:24
你跟踪他们的文件?了吗
还要注意:由于文件的属性将被保留,在大多数情况下,您需要在启动数据库服务器之前将文件的所有权更改为mysql,因为它们将由创建备份的用户拥有:
$ chown -R mysql:mysql /var/lib/mysql您的第二条和第三条InnoDB错误消息也可能是因为您创建了一个与数据文件同名的子目录。
在添加了自己的调试语句之后,可以考虑从xtrabackup构建。
还有:当mysqld崩溃时,在gdb下调试mysqld可以获取更多信息。
这个:编译MySQL进行调试
我的评论是在我检查了源代码之后做出的。看看来源-你可能会找到你想要的东西。
我提到在gdb下调试mysqld和编译MySQL进行调试是为了一般情况下的“噢,BTW”。- KXNV-89.1FM
https://dba.stackexchange.com/questions/176275
复制相似问题