mysql 数据库表错误 修复 总结

mysql 数据库坏表修复

萝卜白菜,各有所爱,能干活、能修复表才是王道!!!

修复之前谨记:先备份数据库 (备份完成后再进行以下修复操作)

可以mysqldump -A  > all.sql   进行全库备份  (mysqldump导出错误的时候可以省略错误的表进行导出其他的数据添加选项   --ignore-table=table_name  )  也可以进入到/usr/local/shell/ 执行  mysql_backup.sh进行备份数据库  以上两种方式都不可以备份 可以进入到/data/mysql/3306目录里面将以下所有文件信息copy一份

针对MyIsam表进行修复方法

1.描述:

在数据库可以进入 mysql程序正常,只有日志中抛有tables错误的时候使用以下修复:

mysql>  REPAIR TABLE 表名

3.描述:

在数据库不能进入、数据库程序不能够正常启动的时候使用

mysqlcheck -Aor       (此命令在数据库外执行,针对所有myisam的数据库表进行修复 -A=所有all、-o, --optimize 进行对索引优化【重新整理索引】-r, --repair 修复 )

shell# mysqlcheck -Aor   执行的时候会抛出错误(凡是innodb表都会抛错误)

在知道是那个表错误的情况下可以使用以下命令进行修复  (后续可以添加-f选项 force  强制修复,慎用此选项操作)

shell# myisamchk   -oar   tables.MYI

针对Innodb表修复方法

1.描述:

数据库可以进入 mysql程序正常,只有日志中抛有tables错误的时候使用以下修复:

1、通过mysqldump将错误的表进行导出(仅导出数据即可),确定导出没有问题!

2、进入mysql   truncate table  表名

3、通过mysql命令将刚才导出的数据库数据灌入即可搞定

2.描述:

可参考 http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

数据库无法正常启动,日志中存在表错误,index错误信息 修复:

1、在my.cnf文件里面添加

[mysqld]

innodb_force_recovery = 1     (1级别最低通常只是作为跳过表错误正常启动mysql服务)

级别越高,修复难度越大、 (1-6)

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):不执行前滚的操作。

2、能够正常启动mysql后,上层应用不用启动、防止写入数据出现错误

进入mysql 进行更改错误表的信息

mysql>  alter table  table_name  ENGINE=myisam;

修改完成后使用Myisam的修复方式进行修复

修复完成之后将表更改为innodb 、my.cnf 文件的innodb_force_recovery = 1 注释掉之后重新启动mysql注意观察日志是否抛错

3、通过数据库备份加binlog日志进行恢复,步骤过多,不予写出

仍然可以参考 http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

进行恢复

时间: 2024-10-11 06:20:40

mysql 数据库表错误 修复 总结的相关文章

阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录找出占用最大的. 根据经验来说基本都是日志文件占用的,那么就是停止应用清理日志,或者清理日志后重启应用即可. 但是本实例的异常是网站主页正常,但是子导航的内容为空,首先怀疑的就是磁盘满了导致mysql数据库的数据异常. 问题排查: 排查的方法是打开mysql的errlog 添加以下配置重启mysql

批量修改mysql数据库表前缀。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

mysql数据库表间内外链接详解

1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:select table1.column,table2.column from table1 [inner | left | right | full ] join table2 ontable1.column1 = table2.column2; inner join 表示内连接: left jo

MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题

Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字段ishaspic:新添字段时,报错 [SQL] alter table WorkTask add ishaspic int(10) Null;[Err] 1034 - Incorrect key file for table 'WorkTask'; try to repair it 解决方案:新建

将Hive统计分析结果导入到MySQL数据库表中(一)——Sqoop导入方式

最近在做一个交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HBase中存储,然后使用Hive外部表关联HBase,对HBase中数据进行查询.统计分析,将分析结果保存在一张Hive表中,最后使用Sqoop将该表中数据导入到MySQL中.整个流程大概如下: 下面我主要介绍Hive关联HBase表--Sqoop导出Hive表到MySQL这些流程,原始数据集收集.MapReduce清洗及WEB界面展示此处不介绍. 一.HBase数据库表 hbase(main):

查看和改动MySQL数据库表存储引擎

要做一名合格的程序猿,除了把代码写的美丽外,熟知数据库方面的知识也是不可或缺的.以下总结一下怎样查看和改动MySQL数据库表存储引擎:        1.查看数据库所能支持的存储引擎:show engines;        2.查看某个数据库中某个表所使用的存储引擎:show table status from db_name where name='table_name';(注:将where条件去掉后能够查看某个数据库中全部表的存储引擎情况)        3.改动表引擎方法:alter t

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "

【初学菜鸟作-MySQL数据库表的基本操作与权限管理】

表基本操作练习 1 复制用户信息表user的所有记录到userdb表里. mysql> create table userdb select * fromuser; 2 查看userdb表的表结构 mysql> desc userdb; 3 删除userdb表的所有记录 mysql> delete from userdb 4 把name字段设置为index字段 mysql> create index name on userdb(name) 5 添加编号字段id  在所有字段上方,

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se