mysql - 从 MySQL 数据库修复/恢复数据

标签 mysql database mariadb innodb repair

我的树莓派(InnoDB 引擎)上存储的 MySQL 数据库有一个大问题。 我在这个领域不是很专家,但我会尽力向您解释这个问题。

每次我尝试启动 MySQL 时都会崩溃,并且我需要恢复存储在数据库中的数据。 错误是:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

我只是尝试使用 innodb_force_recovery 标志从 1 到 6 启动 MySQL,但它仍然崩溃。从日志中我了解到问题是某些表内部的损坏。

我尝试使用 https://recovery.twindb.com/ 检查我的数据库文件它表明“mysql”数据库中的一些表需要恢复,“生产”数据库(矿井)中的表没问题,事实上我可以在这个网站上看到我的所有数据。 如何轻松恢复我的数据?有一些我可以使用的免费工具或脚本吗? 我的所有文件均为 ibdata01、*.frm、*.ibd

最佳答案

您可以使用Undrop for InnoDB recovery.twindb.com 背后的工具。 要恢复损坏的数据库,您需要按照https://twindb.com/recover-corrupt-mysql-database/中的步骤进行操作。

解析ibd文件:

# ./stream_parser -f /var/lib/mysql/sakila/actor.ibd

来自 PRIMARY 索引的转储记录:

# ./c_parser -6f pages-actor.ibd/FIL_PAGE_INDEX/0000000000000015.page \
    -t sakila/actor.sql \
    > dumps/default/actor 2>&1 dumps/default/actor_load.sql

然后加载转储:

# mysql --local-infile sakila < dumps/default/actor_load.sql

关于mysql - 从 MySQL 数据库修复/恢复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52275850/

相关文章:

database - 同一个表中具有不同值的重复字段

MySQL 到 MariaDB - INSERT INTO with WHERE NOT EXIST

mysql - MariaDB Galera Cluster Node 频繁访问磁盘导致性能大幅下降

php - 如何将日期时间值从 mysql 导出到 php

php - 使用 php mysql 每行显示 2 或 3 个图像

mysql - 创建rails SUM查询对象

xml - 在 Xquery 中按属性比较元素

mysql - GlassFish 动态 JDBC 池

java - mybatis 映射器 xml : The content of element type "mapper" must match

mysql - 如何在 Percona 中使用 XtraDB 和 TokuDB?