AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 55495
Accepted
Tobia
Tobia
Asked: 2013-12-24 04:47:07 +0800 CST2013-12-24 04:47:07 +0800 CST 2013-12-24 04:47:07 +0800 CST

崩溃后 MySQL InnoDB 中的数据丢失

  • 772

我在 MySQL 5.6 社区版服务器安装中发现了 6 天的回滚。似乎有些日志丢失了,我不明白为什么。

2013-12-22 20:38:54 380 [Note] Plugin 'FEDERATED' is disabled.
2013-12-22 20:38:54 380 [Warning] option 'innodb-autoextend-increment': unsigned value 67108864 adjusted to 1000
2013-12-22 20:38:54 388 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2013-12-22 20:38:54 380 [Note] InnoDB: The InnoDB memory heap is disabled
2013-12-22 20:38:54 380 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2013-12-22 20:38:54 380 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-12-22 20:38:54 380 [Note] InnoDB: Not using CPU crc32 instructions
2013-12-22 20:38:54 380 [Note] InnoDB: Initializing buffer pool, size = 86.0M
2013-12-22 20:38:54 380 [Note] InnoDB: Completed initialization of buffer pool
2013-12-22 20:38:54 380 [Note] InnoDB: Highest supported file format is Barracuda.
2013-12-22 20:38:54 380 [Note] InnoDB: The log sequence numbers 5988825 and 5988825 in ibdata files do not match the log sequence number 6057379 in the ib_logfiles!
2013-12-22 20:38:54 380 [Note] InnoDB: Database was not shutdown normally!
2013-12-22 20:38:54 380 [Note] InnoDB: Starting crash recovery.
2013-12-22 20:38:54 380 [Note] InnoDB: Reading tablespace information from the .ibd files...
2013-12-22 20:38:57 380 [Note] InnoDB: Restoring possible half-written data pages 
2013-12-22 20:38:57 380 [Note] InnoDB: from the doublewrite buffer...
2013-12-22 20:39:07 380 [Note] InnoDB: 128 rollback segment(s) are active.
2013-12-22 20:39:07 380 [Note] InnoDB: Waiting for purge to start
2013-12-22 20:39:07 380 [Note] InnoDB: 5.6.13 started; log sequence number 6057379
2013-12-22 20:39:07 380 [Note] Server hostname (bind-address): '*'; port: 3306
2013-12-22 20:39:07 380 [Note] IPv6 is available.
2013-12-22 20:39:07 380 [Note]   - '::' resolves to '::';
2013-12-22 20:39:07 380 [Note] Server socket created on IP: '::'.
2013-12-22 20:39:12 380 [Note] Event Scheduler: Loaded 0 events
2013-12-22 20:39:12 380 [Note] C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld: ready for connections.

你能告诉我为什么会发生这种情况以及如何恢复这些数据吗?有可能吗?您是否认为 MyISAM 表更安全,并且开关可以解决此类错误?

编辑

关于这个谜题的更多信息。

  • 这台机器有一个 RAID-1 卷。

  • 该问题是在12 月 22 日断电后出现的。关闭电源后,我得到了以前的日志,并且我的数据库有很多天的数据回滚。我发现数据库与 12 月 14 日的数据完全一致。

  • 从12 月 14 日到 21 日,有很多服务器正常关闭(每天晚上),我找到了 12 月 14 日到 21 日每天的完整备份。12 月 22 日的备份有 8 天的数据间隙。

我觉得这很奇怪。我可以理解断电后的数据丢失,但我无法理解这么大的回滚(8 天),因为在这 8 天内有很多服务器关闭和 mysqldump 备份确认所有数据都正确存储。我想有一个 innodb 日志刷新问题,但为什么这么大?

谢谢

innodb mysql-5.6
  • 2 2 个回答
  • 4027 Views

2 个回答

  • Voted
  1. jeremycole
    2014-01-16T19:02:02+08:002014-01-16T19:02:02+08:00

    该日志仅表明您没有正确关闭,因此在启动时,InnoDB 必须进行“崩溃恢复”。丢失数据的不是崩溃恢复——而是您的操作系统或硬件。崩溃恢复实际上是为了避免由于崩溃而丢失数据(这就是它的全部目的)。

    日志消息表明存在严重问题:

    The log sequence numbers 5988825 and 5988825 in ibdata files do not match the log sequence number 6057379 in the ib_logfiles!
    

    这可能意味着由于 MySQL 中的错误配置或操作系统或硬件的错误配置,数据无法有效地进入磁盘。

    如果您使用innodb_flush_log_at_trx_commitset 以外的任何设置运行1,这是您的错,因为这是一个危险的设置。如果您使用 运行它1,这意味着 InnoDB 正在请求将数据写入磁盘并确认,但系统在写入数据时对 InnoDB 撒谎,导致稍后损坏。

    没有办法取回数据。如果您需要丢失的数据,则必须从备份中恢复。

    MyISAM 绝对不安全,事实上,在同样的情况下,MyISAM 很可能会遭受严重的腐败。

    • 2
  2. Best Answer
    Tobia
    2017-05-25T06:20:19+08:002017-05-25T06:20:19+08:00

    对我来说,问题是操作系统崩溃或关机后自动 WINDOWS RESTORE 。令人难以置信的是,该程序替换了 IBD 文件(数据库索引)!我解决了禁用 Windows 还原,我找不到任何方法来更改 mysql 索引文件扩展名或忽略 Windows 还原中的文件。

    几个月来我真的很生气和担心这个问题,我希望这可以帮助你。

    • 2

相关问题

  • XtraDB (InnoDB) 中的并发 INSERT

  • 将 PRIMARY KEY 添加到大型 InnoDB 表的好方法是什么?

  • 如何在不离线几个小时的情况下将 66,862,521 行的表从 MyISAM 转换为 InnoDB?

  • 在同一台服务器上混合 InnoDB 和 MyISAM 表是常见的做法吗?

  • 如何更改 phpmyadmin 中的默认存储引擎?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    授予用户对所有表的访问权限

    • 5 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve