zoukankan      html  css  js  c++  java
  • 生产案例:某客户MySQL服务器断电起不来恢复处理

    背景

    有朋友找说他们MySQL数据库由于断电后服务器起不来了,版本MySQL5.7.4,服务器windows server2012,没有备份,没有主从,没有开启binlog,里面有四五年的分区表。

    思路一:

    首先去看error日志,发现日志里全是read only分区表空间,无法打开库,如下:

    [ERROR] InnoDB: Operating system error number 2 in a file operation.
    2021-06-28T10:02:52.331948Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
    2021-06-28T10:02:52.333886Z 0 [ERROR] InnoDB: Cannot open datafile for read-only: '.gpsdata_gps_day#p#day_am.ibd'

     想到就是断电后导致日志缓存刷新错乱报错,所以尝试修改下面参数1,2,3,4,5,6来启动去先备份数据,还是不行

    innodb_force_recovery=0
    

    思路二:

    实在启动不了,只想想办法如何快速把数据恢复了,因为什么备份都没有,所以只能用表空间ibd来恢复了。

    1、装一个Linux虚拟机,利用MySQL的frm文件来找回建表语句

    yum install mysql-connector-python-2.1.8-1.el7.x86_64.rpm
    yum install mysql-utilities-1.6.5-1.el7.noarch.rpm
    

    2、把frm后缀的文件全部上传到一个文件夹/root/gaohuirong

    3、mysqlfrm恢复建表语句

    注:分区表提取不出来,还有提取出来的表可能有一些特殊字符检查一下

    mysqlfrm --diagnostic /root/gaohuirong/ > createtable.sql
    

    4、复制原来MySQL5.7.4的软件搭建一个新的MySQL环境

    1)复制软件

    2)安装MySQL:

    mysqld --initialize-insecure --conlose
    
    mysqld --install mysql1
    
    net start mysql1

    5、再新的环境上创建提取的表格

    source createtable.sql

    7、把新建的表的表空间discard去除:

    alter table 表名 discard tablespace;

    8、把之前的ibd文件拷贝到新建对应的目录,然后import导入表空间数据

    alter table 表名 import tablespace; 

  • 相关阅读:
    Spring 之 BeanFactory 源码
    pig first trial
    分布
    Think Stats CDF, mayplot
    think stat  4_1, 4_3
    python 指数分布的模拟 expovariate
    [转载]巴洛克和哥特式建筑的区别
    统计中的过采样
    Python iterator/generator
    python zip
  • 原文地址:https://www.cnblogs.com/galengao/p/14958760.html
Copyright © 2011-2022 走看看