zoukankan      html  css  js  c++  java
  • 记一次 MariaDB 崩坏 恢复

    检查日志的时候发现 mariadb 报了好多错,最近一段时间 一直有崩溃的;并且正好赶上要修改数据库看表字段,较多表要修改。

    虽然修改表理论上是不会蹦了书库的,单最后结果是崩溃频率增加,当天下午到晚上就起不来数据库库了,我也要崩了!!!∑(゚Д゚ノ)ノ

    1. 解决启动崩溃

    然后 根据错误查找解决办法:

    140605 13:39:32 [ERROR] Plugin 'InnoDB' init function returned error.
    140605 13:39:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
    140605 13:39:32 [ERROR] Unknown/unsupported storage engine: InnoDB
    140605 13:39:32 [ERROR] Aborting

    解决办法: 删日志》》 数据库数据文件夹下的 ib_logfile0,ib_logfile1 文件,删除后果然可以了;

    但是很快又蹦了,并且启动不了,根据错误指示,加 innodb_force_recovery 参数 ;

    然后尝试,从1到6,一直试到5 才能启动。

    2. 备份

    然后赶快备份咯。

    mysqldump -uusername -ppswd dbname > 20210712.dbname.sql

    这样单库备份过程中经常遇到备份到某个表时数据库又蹦了,添加忽略参数忽略这个表吧:

    mysqldump -uuser -ppswd dbname --ignore-table=dbname.t1 --ignore-table=dbname.t2 --ignore-table=dbname.t3 --ignore-table=dbname.t4 --ignore-table=dbname.t5 > 20210712.dbname.sql

    但是后来遇到 一个库里好多个表会蹦库~!

    这招不行,重新来过的过程和次数太折磨人了~~~ 库大,耗时

    并且这些表也是重要的表,要备份的!

    遂尝试了 单个表备份,发现这会蹦的表,单个备份时竟然不蹦了~!!

    于是,写脚本吧,一个库的表一个批次:

    mysqldump -uusername -ppswd dbname t1 >> 20210712.dbname.sql
    mysqldump -uusername -ppswd dbname t2 >> 20210712.dbname.sql
    mysqldump -uusername -ppswd dbname t3 >> 20210712.dbname.sql

    注意: 是双箭头重定向符号

    保存为 bk_dbname ,然后执行 bash bk_dbname

    3. 重新建库

    把原数据文件夹 改名,重新建立一个同样名称的文件夹,改权限 

    chown -R mysql.mysql /var/lib/mysql

    建立初始数据,和 初始化mysql 等

    mysql_install_db
    mysql_secure_installation

    然后连接上 创建各个数据库, 然后还原

    mysql -hhostname -uusername -ppassword dbname < backupdb.sql

    4. 最后发现,可以更简单的操作

    配置多实例,可以直接从坏库导入到新库!

    echo dump table  t1
    mysqldump -c -n --insert-ignore  -uuser -ppswd -S/data/3308/mysql.socket dbnamet1| mysql -uuser -ppswd dbname
    echo dump table  t2
    mysqldump -c -n --insert-ignore  -uuser -ppswd -S/data/3308/mysql.socket dbnamet2| mysql -uuser -ppswd dbname

    -S 参数指定 坏库的 socket 文件路径

    多实例(飞机传送),配置上并不复杂,新版更轻松。

    PS: 最后, 检查日志, 是一个表的索引坏了引起崩溃,然后其他表也出现了索引坏了,最后大蹦.

  • 相关阅读:
    HISI MPP模块 AO 和 ADEC 参数配置(转)
    HISI H264/H265 P帧帧内刷新功能,降低I帧太大带来的网络冲击(转)
    LiteOS系统--快速烧写.bin文件到norflash相应位置(转)
    海思平台(hi3559av100)的pq_sample代码编译过程和执行过程(转)
    MySQL主从同步配置
    WebLogic
    为什么公司用weblogic而不用tomcat?
    查看和更改rpm的默认安装路径的方法
    VM options 以及 properties文件的一些理解
    Could not transfer artifact xxx from/to xxx解决方案
  • 原文地址:https://www.cnblogs.com/lzpong/p/15007895.html
Copyright © 2011-2022 走看看