innodb文件损坏处理

innodb文件损坏报错如下:

2018-09-03T09:52:43.486363Z 0 [ERROR] InnoDB: Space id and page no stored in the page, read in are [page id: space=0, page number=50345472], should be [page id: space=0, page number=408]
2018-09-03T09:52:43.486498Z 0 [ERROR] InnoDB: Database page corruption on disk or a failed file read of page [page id: space=0, page number=408]. You may have to recover from a backup.
2018-09-03T09:52:43.486544Z 0 [Note] InnoDB: Page dump in ascii and hex (16384 bytes):
 len 16384; hex 0d00000003003600013700c6003600000000000000000000000000000000000000000000000000000000000000000000000000000000810a81bcff2606027b04811b4c8d4172697374657520526f7a616e736b69203c61726f7a616e736b407265646861742e636f6d3e205b322e362e33322d3134372e656c365d4dc928c02d205b6275696c645d2064697361626c65205765727220666f722065787465726e616c206d6f64756c657320284172697374657520526f7a616e736b6929205b3730333530345d880f81bcff2506027b048f254c8d4172697374657520526f7a616e736b69203c61726f7a616e736b407265646861742e636f6d3e205b322e362e33322d3134382e656c365d4dcbcbc02d205b6e65745d20646363703a2068616e646c6520696e76616c69642066656174757265001df982854381bcff2406027b048a0d4c8d4172697374657520526f7a616e736b69203c61726f7a616e736b407265646861742e636f6d3e205b322e362e33322d3134392e656c365d4dcd1d402d205b7838365d204d43453a2044726f70207468652064656661756c74206465636f64696e67206e6f746966696572202850726172697420426861726761766129205b3638383238315d0a2d205b7838365d204d43453a20446f206e6f74207461696e74207768656e2068616e646c696e6720636f727265637461626c65206572726f7273202850726172697420426861726761766129205b3638383238315d0a2d205b6b65726e656c5d207072696e746b3a2075736520704b20666f72202f70726f632f6b616c6c73796d7320616e64202f70726f632f6d6f64756c657320285068696c6c692018-09-03T09:52:43.492211Z 0 [Note] Semi-sync replication initialized for transactions.
2018-09-03T09:52:43.504398Z 0 [Note] Semi-sync replication enabled on the master.
70204c6f756768657229205b3637393236325d0a2d205b6b65726e656c5d2074696d65722064656275673a2048696465206b65726e656c206164647265737365732076696120704b20696e202f70726f632f74696d65725f6c69737420285068696c6c6970204c6f756768657229205b3637393236325d0a2d205b64726d5d20646f206e6f74206c65616b206b65726e656c2061646472657373657320766961202f70726f632f6472692f2a2f2018-09-03T09:52:43.504481Z 0 [Note] Starting ack receiver thread
766d6120285068696c6c6970204c6f756768657229205b3637393236325d0a2d205b6b65726e656c5d206b7074725f726573747269637420666f7220686964696e67206b65726e656c20706f696e746572732066726f6d20756e70726976696c6567656420757365727320285068696c6c6970204c6f756768657229205b3637393236325d0a2d205b6e65745d20666978206e65746e732076732070726f746f20726567697374726174696f6e206f2018-09-03T09:52:43.504874Z 0 [Note] Recovering after a crash using mysql-bin
2018-09-03T09:52:43.510443Z 0 [Note] Starting crash recovery...
72646572696e67202857616465204d65616c696e6729205b3730323330365d207b4356452d323031312d31373637204356452d323031312d313736387d00000000206f7074696f6e73206c656e67746820284a697269205069726b6f29205b3730333031335d207b4356452d2018-09-03T09:52:43.510528Z 0 [Note] Crash recovery finished.

  使用innodb_force_recovery参数来恢复,innodb_force_recovery参数有6个选项具体如下

1 (SRV_FORCE_IGNORE_CORRUPT)

Lets the server run even if it detects a corrupt page. Tries to make SELECT * FROM tbl_name jump over corrupt index records and pages, which helps in dumping tables.

2 (SRV_FORCE_NO_BACKGROUND)

Prevents the master thread and any purge threads from running. If a crash would occur during the purge operation, this recovery value prevents it.

3 (SRV_FORCE_NO_TRX_UNDO)

Does not run transaction rollbacks after crash recovery.

4 (SRV_FORCE_NO_IBUF_MERGE)

Prevents insert buffer merge operations. If they would cause a crash, does not do them. Does not calculate table statistics. 
This value can permanently corrupt data files. After using this value, be prepared to drop and recreate all secondary indexes. Sets InnoDB to read-only.

5 (SRV_FORCE_NO_UNDO_LOG_SCAN)

Does not look at undo logs when starting the database: InnoDB treats even incomplete transactions as committed. 
This value can permanently corrupt data files. Sets InnoDB to read-only.

6 (SRV_FORCE_NO_LOG_REDO)

Does not do the redo log roll-forward in connection with recovery. This value can permanently corrupt data files. 
Leaves database pages in an obsolete state, which in turn may introduce more corruption into B-trees and other database structures. Sets InnoDB to read-only.

  尽量用最小的参数尝试启动,大的包含小的

 

innodb_force_recovery=1

  修改参数以后启动成功,mysqlcheck工具检查看具体哪个表的文件损坏。

[root@redis03 data]# mysqlcheck -A -u root -p
Enter password: 
ht.tb                                              OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
sys.sys_config                                     OK

  如果有损坏可以先备份出来删除原表在导入进去

mysqldump  --databases ht --set-gtid-purged=OFF >ht.sql
mysql -u root -p < ht.sql

  

转载于:https://www.cnblogs.com/omsql/p/9592756.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: InnoDB和MyISAM是MySQL数据库存储引擎的两种类型。最大的区别在于它们的锁机制和事务支持。InnoDB支持行级锁和事务处理,可以在高并发的情况下更好地保护数据完整性和一致性。而MyISAM没有行级锁和事务支持,适合于读取频繁、写入少的应用场景。此外,InnoDB还支持外键约束、崩溃恢复等功能。 ### 回答2: InnoDB与MyISAM是MySQL数据库中最常见的两种存储引擎。它们有以下几个区别。 1. 事务支持:InnoDB是支持事务的存储引擎,而MyISAM不支持事务。事务是一系列操作的集合,要么全部成功,要么全部回滚。这使得InnoDB更适合处理需要保证数据一致性和完整性的应用程序,如银行交易或电子商务。 2. 锁级别:InnoDB使用行级锁,而MyISAM使用表级锁。行级锁意味着只锁定所需的行,而不是整个表,这样可以提高并发性能。表级锁可能会导致更多的锁冲突和阻塞。 3. 外键约束:InnoDB支持外键约束,而MyISAM不支持。外键约束用于维护表之间的关系,并确保数据的完整性。通过外键约束,可以实现级联删除和更新,从而简化了数据处理的复杂性。 4. 全文搜索:MyISAM支持全文搜索的功能,而InnoDB在早期版本中不支持。全文搜索是一种通过关键字搜索数据库中的文本内容的功能,如网站搜索引擎。 5. 数据一致性:InnoDB通过使用日志文件来保证数据的一致性和可恢复性。如果数据库异常终止,InnoDB可以使用日志文件来恢复已提交的事务并保证数据的一致性。MyISAM没有这样的机制,如果数据库崩溃,可能会导致数据丢失或损坏。 综上所述,InnoDB更适合于需要事务支持和数据一致性的应用程序,而MyISAM则适用于只读或不需要事务支持的应用程序。选择存储引擎应基于应用程序的需求、性能要求和数据完整性的重要性来进行决策。 ### 回答3: InnoDB和MyISAM是MySQL中两种常见的数据库引擎。它们在一些方面有明显的差异。 首先,InnoDB支持事务处理,而MyISAM不支持。事务是一种将多个SQL操作组合成一个逻辑工作单元,并要么全部提交成功,要么全部失败回滚的功能。这使得InnoDB适用于需要保证数据一致性和完整性的应用,比如银行系统或电子商务网站。 其次,InnoDB支持行级锁定,而MyISAM只支持表级锁定。行级锁定允许多个并发用户同时访问同一张表的不同记录,提高并发性能。而表级锁定会阻塞其他用户对整个表的访问,对于大量插入或更新操作频繁的应用来说,可能会造成性能瓶颈。 此外,InnoDB支持外键约束,可以通过外键关联不同表之间的数据完整性。而MyISAM不支持外键约束。 另一个区别是对于崩溃恢复的支持。InnoDB有日志文件和预写日志机制,可以在崩溃后通过回滚日志来恢复尚未持久化的更改。而MyISAM则没有这种机制,可能会导致崩溃后的数据丢失或者需要手动修复。 最后,InnoDB将表结构和数据存储在同一文件中,而MyISAM将表结构和数据分开存储在不同的文件中。这种存储方式使得InnoDB更加适合处理大量数据和频繁更新操作的场景。 综上所述,InnoDB和MyISAM在事务处理、锁定级别、外键约束、崩溃恢复和数据存储等方面存在显著差异。选择使用哪种引擎取决于具体应用的需求和优化目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值