1、崩溃恢复:

突然断电、宕机,导致mysql无法正常启动:

(1) 关闭数据库。

(2) Vim /etc/my.cnf  添加:innodb_force_recovery=1   默认为0。

1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。

2(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。

3(SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作。

4(SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作。

5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。

6(SRV_FORCE_NO_LOG_REDO):不执行前滚的操作。

(3)  启动mysql,如果启动失败则依次按照1-6顺序配置innodb_force_recovery参数

(4)  做全量备份。

(5) 删除ib_logfile0、ib_logfile1、ibdata1

2、利用二进制日志恢复(前提是二进制日志都在):

(1)利用时间或position进行恢复:

mysqlbinlog --start-positon=  --stop-positon= mysql-bin.000022 | mysql -uroot -p

mysqlbinlog --start-datetime="2016-9-25 22:01:08" --stop-datetime="2019-9-25 22:09:46" | mysql -uroot -p

(2)利用二进制日志转换成为.sql文件恢复;

mysqlbinlog --base64-output=decode-rows -v mysql-bin.000012 > ~/bin.sql

mysql -uroot -p < ~/bin.sql

3、利用历史备份+二进制日志还原:

(1)导入历史备份数据:

mysql -uroot -p123456 < all.sql

这时已经还原为备份时的数据库状态。

(2)找到历史备份数据的时间点,比如历史数据是昨晚0点备份的,那么就是0点。然后从二进制日志中找到昨晚0点的数据,利用mysqlbinlog命令进行还原。

mysqlbinlog --start-positon=  --stop-positon= mysql-bin.000022 | mysql -uroot -p

mysqlbinlog --start-datetime="2016-9-25 22:01:08" --stop-datetime="2019-9-25 22:09:46" | mysql -uroot -p

4、没有备份的历史数据的时候,可以只利用二进制日志恢复。前提是二进制日志必须都存在。

(1)做一个slave机,并启动服务。

(2)找到已经删除了或者清空了表的建表二进制日志名称。如:该表建表语句在mysql-bin.000009。找到删除操作前的position,也就是DROP或TRUNCATE语句前一个的position,如:语句在:mysql-bin.000061   position在73154

(3)在slave机上创建好数据库,然后change master to master_log_file='mysql-bin.000009',master_log_pos=107,master_port=3306;

START SLAVE UNTIL MASTER_LOG_FILE='mysql-bin.000061',MASTER_LOG_POS=73154;    开始启动slave并指定二进制日志的终点。

最新文章

  1. IConfigurationSectionHandler 使用~
  2. express-12 Cookie与会话
  3. 全面理解Javascript中Function对象的属性和方法
  4. node log4js包
  5. GridView導出Excel 解決亂碼問題
  6. Python能做些什么?
  7. Java泛型type体系
  8. python+ffmpeg切割视频
  9. Android进阶:六、在子线程中直接使用 Toast 及其原理
  10. Docker发布程序那些事
  11. 阿里云ECS Ubuntu16.0 安装 uwsgi 失败解决方案
  12. python APScheduler
  13. Mark Text - 下一代所见即所得的Markdown编辑器
  14. Qt自定义界面
  15. win10 使用tsmmc.msc 提示无法创建管理单元
  16. [转帖] Win10 多桌面转换的快捷键
  17. 使用Akka构建集群(二)
  18. ELK (Elasticsearch+Logstash+Kibana)部署
  19. CentOS中配置CDH版本的ZooKeeper
  20. 手把手实现腾讯qq拖拽删去效果(一)

热门文章

  1. 深入解读docker网络与kubernetes网络
  2. (十)SpringBoot的文件上传
  3. Ubuntu 18.04 LTS 安装过程
  4. Varnish快速安装及测试
  5. word2vec的Java源码【转】
  6. A8ERP管理系统(采购单管理)
  7. log4go折腾
  8. Win2D 入门教程 VB 中文版
  9. systemtap执行过程中报probe timer.profile registration error
  10. [转] 学习,思维三部曲:WHAT、HOW、WHY(通过现象看本质)