【mysql因为断电导致数据损坏无法启动mysql的处理方式及mysql数据恢复方法】

本文主要讲述的是通过删除ib和index文件后mysql仍然无法正常启动的后续恢复操作,由于过程中涉及到删除单个表操作,操作需谨慎,建议提前物理备份。

第一步基本恢复操作

通过下面操作无法恢复mysql启动的后续恢复操作,操作需谨慎
1、删除ib_logfile0和ib_logfile1文件
2、删除mysql-bin.index文件

第二步终极恢复操作

通过上述操作后还无法正常启动mysql服务,请参考下面方式进行数据库恢复,谨慎操作。

1. 修改mysql启动级别

在my.cnf中修改增加或者修改启动级别:
innodb_force_recovery=6
然后启动mysql,一般情况下就可以启动成功了,启动成功后备份全量数据库或者分库备份都可以;

2. 备份数据库

备注:备份过程中可能出现数据表错误无法访问并导致备份失败,报错如下:

这种错误的处理办法是进入到mysql的data目录下,找到相对应的表比如表名字叫cloudeyes,进入到该目录中找到该表的原始数据进行备份操作,备份后删除该表。

mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table asset_all at row: 1268151

  • ls *asset_all*
  • mv *asset_all * /home/mysql_bak/
  • rm -f *asset_all *

备注1:上述问题可能会重复出现多次,直至所有损坏的数据均已删除为止。
备注2:上述操作存在永久丢失数据风险,数据备份后再删除,单个表的数据恢复操作请另行处理。

3、重新停止并启动数据库

4 、备份正常启动后的数据库数据

mysqldump -uroot -p --set-gtid-purged=OFF > mysqldump_mysql1_$(date +%Y%m%d).sql

5、停止数据库,然后删除当前mysql的data目录下所有数据库数据包含以下几个文件:

1、对应的数据库目录比如cloudeyes
2、删除ib_logfile0和ib_logfile1文件
3、删除mysql-bin.index文件

6、重新启动数据库,一般情况都会启动成功

7、导入新备份出来的所有数据

备注说明1:因为导入数据库缺失了第三步中缺少的数据,可以重新创建缺少的数据表结果或者可以用历史备份的数据导入一份,但是确保数据是否可以跟当前的数据兼容或冲突,谨慎操作。
备注说明2:在第三步的时候存在数据挪走或者删除后无法恢复的风险,生产需谨慎。

处理一下出现的日志 Plugin 'FEDERATED' is disabled. 2017-11-15 19:23:46 16c0 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. 2017-11-15 19:23:46 1404 [Note] InnoDB: Using atomics to ref count buffer pool pages 2017-11-15 19:23:46 1404 [Note] InnoDB: The InnoDB memory heap is disabled 2017-11-15 19:23:46 1404 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2017-11-15 19:23:46 1404 [Note] InnoDB: Memory barrier is not used 2017-11-15 19:23:46 1404 [Note] InnoDB: Compressed tables use zlib 1.2.3 2017-11-15 19:23:46 1404 [Note] InnoDB: Not using CPU crc32 instructions 2017-11-15 19:23:46 1404 [Note] InnoDB: Initializing buffer pool, size = 9.0G 2017-11-15 19:23:46 1404 [Note] InnoDB: Completed initialization of buffer pool 2017-11-15 19:23:46 1404 [Note] InnoDB: Highest supported file format is Barracuda. 2017-11-15 19:23:46 1404 [Note] InnoDB: Log scan progressed past the checkpoint lsn 9219742510 2017-11-15 19:23:46 1404 [Note] InnoDB: Database was not shutdown normally! 2017-11-15 19:23:46 1404 [Note] InnoDB: Starting crash recovery. 2017-11-15 19:23:46 1404 [Note] InnoDB: Reading tablespace information from the .ibd files... 2017-11-15 19:23:46 1404 [Note] InnoDB: Restoring possible half-written data pages 2017-11-15 19:23:46 1404 [Note] InnoDB: from the doublewrite buffer... InnoDB: Doing recovery: scanned up to log sequence number 9219763629 InnoDB: 1 transaction(s) which must be rolled back or cleaned up InnoDB: in total 0 row operations to undo InnoDB: Trx id counter is 275040768 2017-11-15 19:23:47 1404 [Note] InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percent: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 2017-11-15 19:23:48 1404 [Note] InnoDB: 128 rollback segment(s) are active. InnoDB: Starting in background the rollback of uncommitted transactions 2017-11-15 19:23:48 fc8 InnoDB: Rolling back trx with id 275035944, 0 rows to undo 2017-11-15 19:23:48 fc8 InnoDB: Assertion failure in thread 4040 in file fut0lst.ic line 83 InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 2017-11-15 19:23:48 1404 [Note] InnoDB: Waiting for purge to start 2017-11-15 19:23:48 1404 [Note] InnoDB: 5.6.21 started; log sequence number 9219763629 2017-11-15 19:23:48 1404 [Note] Server hostname (bind-address): '*'; port: 3306 2017-11-15 19:23:48 1404 [Note] IPv6 is available. 2017-11-15 19:23:48 1404 [Note] - '::' resolves to '::'; 2017-11-15 19:23:48 1404 [Note] Server socket created on IP: '::'. 2017-11-15 19:23:48 1404 [Note] Event Scheduler: Loaded 0 events 2017-11-15 19:23:48 1404 [Note] D:\Documents\mysql\bin\mysqld.exe: ready for connections. Version: '5.6.21' socket: '' port: 3306 MySQL Community Server (GPL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值