MySQL故障案例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL故障案例相关的知识,希望对你有一定的参考价值。
第1章 mysql故障案例:
1.1 背景说明:
mysql的架构中没有主从复制的体系,也没有按时进行备份
数据库中有两个库conf库和jira库,仅有一份备份的数据,还是一年前的备份
1.2 故障场景:
意外宕机,导致磁盘物理损坏,也就是说mysql软件程序中data数据目录中的jira文件都没有了
数据库无法启动,经过检查,conf库数据文件都还在,也就是ibd和frm文件都存在
领导要求,conf还是好的,能不能临时先把数据库跑起来,然后想办法修复jira库
1.3 故障环境模拟:
1.3.1 进入到data数据库目录下,删除某一个库的.ibd文件
[[email protected] jiang]# pwd /application/mysql/data/jiang [[email protected] jiang]# ll total 16 -rw-rw---- 1 mysql mysql 61 Apr 3 19:01 db.opt -rw-rw---- 1 mysql mysql 8556 Apr 8 21:19 stu.frm -rw-rw---- 1 mysql mysql 0 Apr 8 21:25 stu.ibd [[email protected] jiang]# echo 123 >stu.ibd
1.3.2 重启mysql服务
[[email protected] jiang]# /etc/init.d/mysqld start Starting MySQL... ERROR! The server quit without updating PID file (/application/mysql/data/db01.pid).
1.4 临时解决方案:
1.4.1 搭建一个临时节点,也就是mysql多实例,多实例的搭建这里不进行演示,然后启动多实例
[[email protected] 3307]# sh /server/scripts/mysql.sh start MySQL 3307 Starting [ OK ] [[email protected] 3307]# ss -tunlp|grep 3307 tcp LISTEN 0 80 :::3307 :::* users:(("mysqld",pid=5219,fd=11))
1.4.2 进入到数据库,创建表结构
要恢复什么表,需要创建好和故障前一样的表结构,然后导入.ibd文件,否则无法导入,
mysql> create table people (id int,name varchar(20));
1.4.3 删除新创建的库的.ibd文件,因为没有数据,一会要导入新的数据
mysql> alter table people discard tablespace; Query OK, 0 rows affected (0.27 sec)
1.4.4 把.ibd文件复制到多实例的数据库目录下,并授权给mysql用户
[[email protected] zabbix]# cp -a ../people.ibd . [[email protected] zabbix]# chown mysql.mysql people.ibd
1.4.5 重新导入.ibd文件
mysql> alter table people import tablespace; Query OK, 0 rows affected, 1 warning (0.34 sec) mysql> select * from people; +------+-----------------------------------------------------------------------------------------------------------------+ | id | name | +------+-----------------------------------------------------------------------------------------------------------------+ | NULL | ang ?? 1 ssd 1 angbo (?? 1 angbosd | | NULL | NULL | | NULL | angbosd | | NULL | ssd 1 angbo (?? 1 angbosd | +------+-----------------------------------------------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
查看表中所有内容,已经可以看到数据了
说明:所以架构中,无论架构体系的大小,或者说数据存储量的多少,该备份的一定要进行备份,这个懒偷不得
对于备份数据,可以定时全量备份sql文件,或者把mysql服务做主从复制
以上是关于MySQL故障案例的主要内容,如果未能解决你的问题,请参考以下文章