修复MYSQL数据库因断电造成的数据损坏
在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗?
当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份\恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。
现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check
table和repair
table
的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk,
isamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。
。
数据库被损坏分以下几种情况:
1、严重损坏
2、轻度损坏
3、有些表被损坏或有些表的部分记录被损坏
当数据库挂了后修复不一定需要重启应用程序,这取决于具体的情况和修复方式。以下是一些常见的数据库修复方式:
1 数据库恢复:如果数据库出现故障或损坏,可能需要进行数据库恢复,以确保数据的完整性和正确性。这种情况下,通常需要停止应用程序并重启数据库,之后再重新启动应用程序。
2 数据库备份:如果数据丢失或损坏比较严重,可能需要进行数据库备份,并从备份中重新恢复数据。这种情况下,也需要停止应用程序进行数据库恢复。
3 数据库修复工具:可能需要使用数据库修复工具对数据库进行修复,以解决数据损坏或其他问题。这种情况下,不需要停止和重启应用程序。
4 数据库分区:对于某些大型数据库,数据库管理员可能会对数据库进行分区,这允许修复一个分区而不影响其它分区。在这种情况下,不需停止和重启应用程序。
因此,当数据库出现故障时,需要根据具体情况判断是否需要停止和重启应用程序,以确保数据库的正常运行和完整性。
数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:
1删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。
2删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件。
3如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。
sql2005数据库修复方法如下:
1、停止数据库服务。
2、将需要恢复的数据库文件复制到另外的位置。
3、启动数据库服务。
4、确认要恢复的数据库文件已经成功复制到另外的位置,然后在SQL
Server
Management
Studio中删除要恢复的数据库。
5、新建同名的数据库(数据库文件名也要相同)。
6、停止数据库服务。
7、用第2步中备份的mdf文件覆盖新数据库的同名文件。
8、启动数据库服务。
9、运行alter
database
dbname
set
emergency,将数据库设置为emergency
mode
10、运行下面的命令就可以恢复数据库:Titleuse
masterdeclare
@databasename
varchar(255)
set
@databasename='要恢复的数据库名称'
1停止SQL Server的服务,备份SQL Server安装目录下的\data子目录
下故障数据库的两个文件,一个数据文件hbposv6_branch_datamdf,
一个hbposv6_branch_logldf(也有可能非此命名),同时查看磁盘
空间是否有足够的空间;
2启动SQL Server服务(如已停止),创建一个新的数据库,命名为
原来数据库的名字。
3停止SQL Server
4把老数据库的MDF文件(hbposv6_branch_datamdf)替换
新数据库的相应的MDF文件,
并把LDF文件(hbposv6_branch_logldg)删除。
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_logldf')
--在这里,请输入你的数据库的路径
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数据库因断电造成的数据损坏全部的内容,包括:如何修复MYSQL数据库因断电造成的数据损坏、数据库挂了后修复是否需要重启应用程序、数据库被删除了怎么恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)