Code前端首页关于Code前端联系我们

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

terry 2年前 (2023-09-30) 阅读数 39 #Mysql
文章标签 Mysql

本文内容列表:

  • 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的check

table和repair

table

sql语句(与PHP结合最好),另一种方法是使用MySQL提供的多个myisamchk (与PHP的最佳组合),

isamchk数据恢复恢复工具。在很多用户看来,这两种方法都比较复杂,并不适合大多数用户。另外,这两种方法都无法有效恢复MySQL数据库,并且可能会导致数据库进一步损坏,给大家造成难以挽回的损失。基于以上原因,这两种MySQL数据库恢复方法不建议大家使用。

以下情况会导致数据库损坏:

1。重伤

2。轻度伤害

3。某些表损坏或某些表的某些记录损坏

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

在Windows上安装XMAPP控制器后,MySQL间歇性启动失败。检查日期后发现是innodb报错。错误信息如下:

度娘各种解答都无法解决。后来直接看官方文档,直接解决:

陷阱指南--使用配置之前需要做这些操作:

1.配置my.cnf 配置innodb_force_recovery = 1到6.尝试直到可以正确,启动MySQL

2.导出数据脚本 mysqldump -uroot -p123456 test test.sql 导出SQL脚本。或者使用 Navicat 将所有数据库/表导入到其他服务器上的数据库。注意:这里的数据一定要备份。然后删除原数据库中的数据。 ?删除配置或者配置为innodb_force_recovery = 0,重启MySQL服务

5.将数据导入MySQL数据库 mysql -uroot -p123456 test test.sql;

或者使用Navicat将备份的数据导入到数据库。如果导入数据过程中该表空间不存在,请删除数据目录下对应数据库中的文件。

如何修复损坏的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 数据库?

? (不是这样命名的),检查磁盘空间

是否有足够的空间;

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 '允许更新',1

使用覆盖重新配置

go

开始 trans

更新 sysdatabases 设置状态 = 32768 其中 name = 'hbposv6_branch_branch'-er update com commit tran

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')

-输入数据库路径

7.停止 SQL,然后重新启动 SQL Server 服务,然后运行:

use master

go

update sysdatabases set status = 8 where name = 'hbposv6_branch'

go

sp_configure', '允许更新' 0

使用覆盖

go

8重新配置。运行 dbcc checkdb(db_name) 以检查数据库的完整性

9。修复号码库

--请在查询分析器中执行以下语句。在运行之前断开所有其他

数据库连接。最好拔掉网线

--如果不是数据库名,请更改数据库

--hbposv6_branch

--更改为要修复的数据库

USE master

Go

--单用户模式

EXEC sp_dboption 'hbposv6_branch', 'single user', 'TRUE'

go

--数据库检查bpos Go

--如果返回结果出现红色提示,则说明数据库有错误,需要修复

--数据库修复

DBCC CHECKDB('hbposv6_branch','repair_rebuild')

Go

--再次检查数据库。如果返回结果没有红色提示,则

表示修复成功;

DBCC CHECKDB('hbposv6_branch')

Go

--否则说明需要更高级别的修复;尝试将上面修复语句中的

'repair_rebuild'更改为'repair_allow_data_loss'并重试,在

之后再次检查数据库。

--如果仍有错误未修复,请将此信息通过文本发送给我们

--退出前务必执行以下语句返回多用户模式

EXEC sp_dboption 'hbposv6_branch ', '单用户', 'FALSE'

go

注意:将 dbname 替换为真实的数据库名称。

mysql数据库删除后如何恢复

1 找另一台机器安装同版本的mysql或者安装在另一台同版本的机器上(不是同版本也可以尝试):

复制mysql/data/mysql目录到your mysql/ data/ Let's go

2 尝试启动 mysql 服务。如果可以启动,理论上应该只是丢失一些用户、权限等系统信息,不影响您使用的数据;

如果无法启动,请查看错误日志,尝试启动。

3 快速备份数据,删除所有库(仅限你后面创建的业务相关库,mysql库除外),重新导入。从理论上讲,不这样做也可以,但仅限于非生产关键环境。

4 再次授权用户。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门