mysqldump:无法执行‘show create table `xxx.yyy`’:表‘yyy’在引擎中不存在(1932)

mysqldump:无法执行‘show create table `xxx.yyy`’:表‘yyy’在引擎中不存在(1932)

我不得不在 Proxmox 中重做我的服务器 (Debian 9)。我更新了一个包 (libc6),并破坏了依赖关系(我没有对它进行快照……)。受影响的守护进程之一是 MySQL / MariaDB,我无法从 PhpMyAdmin 进行备份,因为守护进程不工作,我无法连接到数据库。

现在我已经安装了 Debian 10,但是在从另一台机器恢复数据库时遇到了问题。

mysqldump: Couldn't execute 'show create table `xxx.yyy`': Table 'yyy' doesn't exist in engine (1932)

我尝试以下解决方案时提示以下错误:

root@debian:~# mysqldump -u root -p --all-databases > all_databases.sql
Enter password:
mysqldump: Got error: 1932: "Table 'mysql.gtid_slave_pos' doesn't exist in engine" when using LOCK TABLES
root@debian:~# mysqldump --skip-lock-tables -u root -p --all-databases > all_databases.sql
Enter password:
mysqldump: Couldn't execute 'show create table `gtid_slave_pos`': Table 'mysql.gtid_slave_pos' doesn't exist in engine (1932)

来源: https://support.plesk.com/hc/en-us/articles/213931725-Dump-of-the-MySQL-database-hosted-on-the-Plesk-server-fails-mysqldump-table-doesn-t-exist-when-using-LOCK-TABLES

root@debian:~# mysqlfrm --server=xxx:yyy@localhost:3306 test.frm --port=3310
WARNING: Using a password on the command line interface can be insecure.
# Source on localhost: ...
Usage: mysqlfrm --server=[user[:<pass>]@host[:<port>][:<socket>]|<login-path>[:<port>][:<socket>]] [path\tbl1.frm|db:tbl.frm]

mysqlfrm: error: Can't connect to MySQL server on 'localhost:3306' (111 Connection refused)

来源: https://dba.stackexchange.com/a/127813

MariaDB [(none)]> ALTER TABLE mysql.gtid_slave_pos DISCARD TABLESPACE;
ERROR 1932 (42S02): Table 'mysql.gtid_slave_pos' doesn't exist in engine

来源: https://stackoverflow.com/questions/51997127/restore-mysql-database-using-only-frm-and-ibd-files

我将尝试回答一些有人已经问过我的相关问题。

  • 我怎么会陷入这种状态?

我并不完全清楚,但我认为在我尝试了几种解决方案,降级 libc6 或尝试让 mariadb 再次运行,并尝试重新启动 mysqld/mariadb 服务几次后,MySQL 被破坏了。

  • Debian 9 中的 MySQL/MariaDB 版本是什么?

mariadb Ver 15.1 Distrib 10.1.44-MariaDB,适用于 debian-linux-gnu (x86_64),使用 readline 5.2

  • Debian 10 中的版本是什么?

mariadb Ver 15.1 Distrib 10.3.22-MariaDB,适用于 debian-linux-gnu (x86_64),使用 readline 5.2

  • 我是否将整个数据目录从一个复制到另一个?

不,我没有尝试过……但我在 stackoverflow 网站和谷歌上都找不到任何有用的东西。也许我会尝试研究以下信息(我稍后会编辑这个问题),但如果能看到与此相关的答案就太好了。

  • 我运行了 mysql_upgrade 吗?

不,我没有尝试过在 Debian 9 中更新 mariadb 可能是一个可行的解决方案。但是查看 Debian 9 的软件包时,我没有找到适用于 Debian 9 的 mariadb 10.3 版本(clib6 2.30-10 需要的版本,我使用的是 2.14)。

您能否对服务器中的其他数据库(即不是名为 mysql 的数据库)进行 mysqldump?

是的,我备份了一些数据库,但无法备份所有数据库(10 个中只有 3 个或 4 个)。

还有其他选择吗?

相关内容