首页 > 解决方案 > mariadb 数据库损坏。无法进行 mysql_upgrade、mysqlcheck 或 mysqldump

问题描述

今天早上我的 mariadb 数据库无法启动。

看来我有一些损坏的 InnoDB 表,它只会以innodb_force_recoveryset 开头(值1让它开始)。

我已经尝试过mysql_upgrade --force,但是一旦到达损坏的表,它就会失败并出现错误2013: Lost connection to MySQL server during query when executing 'REPAIR NO_WRITE_TO_BINLOG VIEW ... '

使用mysqlcheck, 再次到达损坏的表,然后失败,2013: Lost connection to MySQL server during query when executing 'CHECK TABLE ... '所有后续检查都失败2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) when executing 'CHECK TABLE ... '

尝试使用 mysqldump 时非常相似。我已经遵循了这里的建议,mysqldump mydatabase --skip-lock-tables --hex-blob --skip-extended-insert > /root/db_backup/mydatabase.sql但再次,只要它碰到我得到的第一个损坏的表mysqldump: Couldn't execute 'show create table "my_table"': Lost connection to MySQL server during query (2013)

我尝试将innodb_force_recovery值增加到 6,但无济于事。

我还在 my.cnf 中添加了以下内容

net_read_timeout=7200 
net_write_timeout=7200
max_allowed_packet=1024M

它是在 Centos 7 上运行的 mariadb 10.2.28

标签: mysqlmariadb

解决方案


在过去的几天里,我们的几台服务器发生了这种情况。我们在回滚到以前版本的 mariadb 时运气不错,但您可能必须导出 dbs,删除并重新导入 dbs。我们有几个不同的服务器提供商,两者都发生了。一位提供商告诉我们某些版本存在问题。

不用说,在做任何会丢失数据的事情之前确保你有备份。

这些是我们的服务器主机给我们的可能导致这些问题的版本: 10.1.42 10.2.28 10.3.19 10.4.9


推荐阅读