Mysql

Percona MySQL 5.7 |XtraBackup 2.4 - xb_load_tablespaces() 失敗,錯誤程式碼 11

  • February 6, 2022

我正在嘗試將 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 使用者權限、系統使用者權限、目錄權限或結構,但現在我看到了這個錯誤。當我以 root 身份執行命令時,我無法複製該問題,因此它讓我相信這是系統權限問題。

我暫時禁用了 selinux 以將其作為乾擾項移除。我還向 databacker mysql 使用者授予了 ALL 權限,以防我失去了一個新權限。

這是我使用的命令:

su -s /bin/bash databacker -c "innobackupex --user=databacker --password=p4ssw0rd --socket=/var/lib/mysql/mysql.sock --stream=tar /tmp | gzip - > /tmp/wtf.tgz"

我以 databacker 使用者的身份測試了 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"

我錯過了什麼?

我在升級時遇到了類似的問題,最終我得到了混合庫。確保您還沒有過期的庫文件。我不得不完全解除安裝 My​​SQL 並從頭開始重新安裝它,然後它就可以工作了。

您是否遵循了他們的文件?

另請注意:由於文件的屬性將被保留,在大多數情況下,您需要在啟動數據庫伺服器之前將文件的所有權更改為 mysql,因為它們將歸創建備份的使用者所有:

$ chown -R mysql:mysql /var/lib/mysql

您的第二個和第三個 InnoDB 錯誤消息也可能是由於您創建了一個與數據文件同名的子目錄。

在添加您自己的調試語句後,考慮從 xtrabackup 源建構。

還有這個:Debugging mysqld under gdb to get more information when mysqld crashs。

還有這個:編譯 MySQL 進行調試

我的評論是在我檢查了原始碼之後發表的。看看源 - 你可能會找到你正在尋找的東西。

我提到在 gdb 下調試 mysqld 和編譯 MySQL 進行調試是為了作為一般情況下的“哦,順便說一句”。– KXNV-89.1FM

引用自:https://dba.stackexchange.com/questions/176275