如何修复损坏的mysql数据库,mysql数据库文件损坏怎么恢复

发布时间:2022-11-22

本文目录一览:

1、如何修复MySQL数据库
2、如何修复MYSQL数据库因断电造成的数据损坏
3、MySQL崩溃-修复损坏的innodb:innodb_force_recovery
4、怎样修复损坏了的innodb 表
5、怎样修复已经损坏的SQL数据库?
6、mysql数据库被删除怎么恢复

如何修复MySQL数据库

如何修复MySQL数据库 来快速修复所有的数据库或者特定的数据库;方法:进入Mysql的Bin目录:C:\Program Files\MySQL\MySQL Server 4.1\bin 运行:mysqlcheck -A -o -r -uroot -p123 注意,将123改成你自己的root用户密码

如何修复MYSQL数据库因断电造成的数据损坏

修复MYSQL数据库因断电造成的数据损坏 在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗? 当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份\恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。 现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的CHECK TABLEREPAIR TABLE的SQL语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchkisamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。 数据库被损坏分以下几种情况:

  1. 严重损坏
  2. 轻度损坏
  3. 有些表被损坏或有些表的部分记录被损坏

MySQL崩溃-修复损坏的innodb:innodb_force_recovery

Windows上安装了XMAPP-controller之后间歇性出现MySQL无法启动,查看日之后发现是innodb的报错,报错信息如下: 度娘上各种答案无法解决,后来直接看官方文档,直接上解决方案: 踩坑指南 - - 操作配置前需要做这些操作:

  1. 配置my.cnf 配置innodb_force_recovery = 16 试到正确为止,重启MySQL
  2. 导出数据脚本 mysqldump -uroot -p123456 test test.sql 导出SQL脚本。或者用Navicat将所有数据库/表导入到其他服务器的数据库中。注意:这里的数据一定要备份成功。然后删除原数据库中的数据。
  3. 删除ib_logfile0ib_logfile1ibdata1 备份MySQL数据目录下的ib_logfile0ib_logfile1ibdata1三个文件,然后将这三个文件删除
  4. 配置my.cnfmy.cnfinnodb_force_recovery 这行配置删除或者配置为innodb_force_recovery = 0,重启MySQL服务
  5. 将数据导入MySQL数据库 mysql -uroot -p123456 test test.sql;
    或者用Navicat将备份的数据导入到数据库中。如果在导入数据过程中发生tablespace不存在的问题,请删除data目录相应database下的文件。

怎样修复损坏了的innodb 表

InnoDB表损坏 InnoDB拥有内部恢复机制,假如数据库崩溃了,InnoDB通过从最后一个时间戳开始运行日志文件,来尝试修复数据库。 大多数情况下会修复成功,而且整个过程是透明的。 假如InnoDB自行修复失败,那么数据库将不能启动。 在继续操作前,先浏览下MySQL的日志文件,确定数据库是因为InnoDB表的损坏而崩溃。 有一种方法是更新InnoDB的日志文件计数器以跳过引起崩溃的查询,这种情况下,将造成数据的不一致性而且会经常使主从复制中断。 一旦确定MySQL因为InnoDB表损坏无法启动时,就可以按照以下5步进行修复:

  1. 添加如下配置到/etc/my.cnf文件中
    innodb_force_recovery = 4
    
  2. 这时就可以重新启动数据库了,在innodb_force_recovery配置的作用,所有的插入与更新操作将被忽略;
  3. 导出所有的数据表;
  4. 关闭数据库并删除所有数据表文件及目录,再运行 mysql_install_db来创建MySQL默认数据表;
  5. /etc/my.cnf中删除innodb_force_recovery这一行,再启动MySQL(这时MySQL正常启动);
  6. 从第3步备份的文件中恢复所有的数据。

怎样修复已经损坏的SQL数据库?

  1. 停止SQL Server的服务,备份SQL Server安装目录下的\data子目录
    下故障数据库的两个文件,一个数据文件hbposv6_branch_data.mdf
    一个hbposv6_branch_log.ldf(也有可能非此命名),同时查看磁盘
    空间是否有足够的空间;
  2. 启动SQL Server服务(如已停止),创建一个新的数据库,命名为
    原来数据库的名字。
  3. 停止SQL Server
  4. 把老数据库的MDF文件(hbposv6_branch_data.mdf)替换
    新数据库的相应的MDF文件,
    并把LDF文件(hbposv6_branch_log.ldg)删除。
  5. 重新启动SQL Server服务,然后运行如下命令:
    Use Master
    go
    sp_configure 'allow updates', 1
    reconfigure with override
    go
    begin tran
    update sysdatabases set status = 32768 where name = 'hbposv6_branch'
    --Verify one row is updated before committing
    commit tran
    go
    
  6. 停止SQL然后重新启动SQL Server服务,然后运行如下命令(更换日志文件路径地址):
    use master
    go
    DBCC TRACEON(3604)
    DBCC REBUILD_LOG('hbposv6_branch', 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv6_branch_log.ldf')
    --在这里,请输入你的数据库的路径
    go
    
  7. 停止SQL然后重新启动SQL Server服务,然后运行:
    use master
    go
    update sysdatabases set status = 8 where name = 'hbposv6_branch'
    go
    sp_configure 'allow updates', 0
    reconfigure with override
    go
    
  8. 运行dbcc checkdb(db_name) 检查数据库的完整性
  9. 修复数据库
    --请在查询分析器中执行下列语句。执行前断开其它所有数据库连接,最好是断开网线
    --如果不是该数据库名,请将数据库
    --hbposv6_branch
    --改为要修复的数据库
    USE master
    Go
    --单用户模式
    EXEC sp_dboption 'hbposv6_branch', 'single user', 'TRUE'
    go
    --数据库检查
    DBCC CHECKDB ('hbposv6_branch')
    Go
    --如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复
    --数据库修复
    DBCC CHECKDB ('hbposv6_branch','repair_rebuild')
    Go
    --再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;
    DBCC CHECKDB ('hbposv6_branch')
    Go
    --否则意味着还需要更高级别的修复;尝试将上面修复语句的'repair_rebuild'换为'repair_allow_data_loss'再试,之后再次检查数据库。
    --如果还有错误未修复,请把这些信息以文字的方式发给我们
    --退出前请一定要执行以下语句返回到多用户模式
    EXEC sp_dboption 'hbposv6_branch', 'single user','FALSE'
    go
    

注:都要把 dbname 替换成真实的数据库名字。

mysql数据库被删除怎么恢复

  1. 找个别的机器安装个同版本的mysql或从已安装同版本的其他机器上(非同版本的也可以试下):
    拷贝 mysql/data/mysql 目录到你的 mysql/data/ 下吧
  2. 试着启动mysql服务,如果能启动了,理论上应该丢失的只有用户、授权等一些系统信息,不影响你的使用的数据;
    如果不能启动,看错误日志,争取启动了。
  3. 赶紧把数据备份一份出来,重新把所有库(只是你后来创建的业务相关的库,不包括mysql库)都删了,重新导入一遍。理论上不这样也可以,但只是非生产重要的环境下。
  4. 重新做用户授权。