如何修复MySQL数据库
简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。
复杂情况下:
从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。经过如下几种情况的操作。
1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\。结果,失败:数据库连接错误。
2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。
3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问操作。
至此,操作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。
数据库如何修复
可能有文件缺失或损坏,可以停掉SQL Server服务,先将数据库文件夹复制一份并安全存储,对数据库所在磁盘执行CHKDSK,排除磁盘错误,然后启动SQL Server服务,尝试修复数据库:
1.在SQL Server Management Studio中随便创建一个数据库,例如:PVLink。
2.停止SQL Server服务。
如果不停止此服务,刚才创建的PVLink数据库将即不能被拷贝,也不能被覆盖。
3.把已经损坏的数据库的mdf文件拷贝并覆盖刚才新建的数据库产生的mdf文件。
4.启动SQL Server服务。
此时可以看见刚才创建的PVLink数据库名字后面没有加号,无法察看其任何信息,其实目前它已经处于无法使用的状态。
5.把数据库设置为紧急状态。
通过在“查询分析器”中执行:alter database PVLink set EMERGENCY 可以将数据库设置为紧急状态,此时数据库PVLink的图标改变成粉红色并出现“紧急”字样。
6.将数据库设置为单用户模式。
如果不设置为单用户模式,我们将无法使用带有效repair选项的DBCC CHECKDB来检查/修复数据库,SQL Server 2005设置单用户模式比SQL Server 2000容易,只要在“查询分析器”中执行:
use master
go
sp_dboption 'PVLink',single,true
7.修复数据库
修复数据库主要使用DBCC来操作,一般来讲,我们可以使用以下三个选项来修复:
●REPAIR_ALLOW_ DATA_LOSS
尝试修复报告的所有错误。这些修复可能会导致一些数据丢失。
●REPAIR_FAST
仅为保持向后兼容性而保留。
●REPAIR_REBUILD
执行由 REPAIR_FAST 执行的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
一般我们通过执行:DBCC CHECKDB('PVLink',REPAIR_REBUILD) 即可完成修复工作,此时 SQL Server 2005会给出很多提示,因为这个过程可能会导致一些数据库设计或者数据的丢失,并且在这个过程中,会产生新的以ldf为扩展名的数据库日志文件。
8.完成以上的步骤后,一般情况下数据库应该可用了,如果数据库此时仍然是紧急状态,可以通过:alter database PVLink set ONLINE ,把数据库变成在线状态。
检查PVLink数据库内数据是否正常,是的话换回原数据库即可。
数据库损坏了怎么办
有的时候因为掉电或者其他原因导致数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如检查优化并修复所有的数据库用:#mysqlcheck-A-o-r-pEnterpassword:database1OKdatabase2OK----------修复指定的数据库用#mysqlcheck-A-o-rDatabase_NAME-p即可另外如果只是对某个表进行修复可以用:myisamchk或isamchk其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:myisamchktablename.MYI进行检测,如果需要修复的话,可以使用:myisamchk-oftablename.MYI关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:[-x/tmp/mysql.sock]&&/pathtochk/myisamchk-of/DATA_DIR/*/*.MYI其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。1,简单的修复模式myisamchk-r-qpath/数据库/坏表.MYI注:-r----恢复模式-q----快速修复2,使用安全修复模式myisamchk--safe-recoverpath/数据库/坏表.MYI3,困难的修复模式如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段。在这种情况下,创建一个新的索引文件是必要的。按如下这样做:把数据文件移更安全的地方。使用表描述文件创建新的(空)数据和索引文件:shell>mysqldb_namemysql>DeleteFROMtbl_name;mysql>quit将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)回到阶段2。现在myisamchk-r-q应该工作了。(这不应该是一个无限循环)。4,非常困难的修复模式只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该用myisamchk-r启动。如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。5,优化表结构myisamchk-r表也可以使用sql语句来优化OPTIMIZETABLE本方法参考自mouse博客
数据库损坏
有两种方法,一种方法使用mysql的checktable和repairtable的sql语句,另一种方法是使用MySQL提供的多个myisamchk,isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。1、checktable和repairtable登陆mysql终端:mysql-uxxxxx-pdbnamechecktabletabTest;如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:repairtabletabTest;进行修复,修复之后可以在用checktable命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。2.myisamchk,isamchk其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:myisamchktablename.MYI进行检测,如果需要修复的话,可以使用:myisamchk-oftablename.MYI关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。2、另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:[-x/tmp/mysql.sock]&&/pathtochk/myisamchk-of/DATA_DIR/*/*.MYI。其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。需要注意的是,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!最后检测修复所有数据库(表)。
sql如何恢复数据(sql怎么恢复数据)
方法:第一步:选择需要还原的数据库,鼠标右键,选择任务下的还原;第二步:选择“源设备”,点击后面的文件选择“...”;第三步:添加需要还原的数据库,还原的数据库文件后缀为备份文件(bak);第四步:选中添加进来的还原文件,找到左上角上的“选择项”,勾选第一项(覆盖现有数据库),点击确定就可以了。注意事项1、一定要记得覆盖现有数据库;2、执行数据库操作的时候,请断开当前数据库的任何使用(例如查询,数据库的连接使用)。
如何还原sql数据库
1、要进行还原数据库操作我们先需要有一个数据库,这里直接打开SQL Server Management Studio,然后打开实例,在左侧按照下图中红色箭头指示右键点击数据库,然后点击 新建数据库,如下图:2、在新建数据库的对话框中 修改数据库名称,然后其他都保持默认即可,然后点击确定即可,如下图:3、然后就可以在SQL Server Management Studio的左侧看到新建的数据库了,如下图:4、然后开始还原操作,右键点击新建的数据库,然后依次点击 任务->还原->数据库如下图:5、在弹出的还原数据库对话框中,选择 源设备,然后选择右面的两个点,如下图:6、然后就会弹出 指定备份 的对话框,然后点击添加,如下图:7、然后这里添加备份的数据库备份文件,数据库备份文件后缀名为bak,如下图:8、然后按照下图中红色箭头指示位置 勾选数据库备份,然后点击 选项,如下图:9、然后进入还原数据库 的 选项 页,这里首先勾选一下 覆盖现有数据库,然后开始选择下面的 将数据库文件还原为,如下图:10、然后选择和数据库备份文件在一个文件夹下的mdf 文件,如下图:11、然后选择和数据库备份文件在一个文件夹下的dlf 文件,如下图:12、只有bak文件,这两个文件不是备份出来的,这两个文件是小编直接创建的文本文档然后直接改后缀名得到的,选择好这两个文件之后直接点击确定,如下图13、稍等片刻之后就会看到数据库还原操作成功完成,如下图:14、然后就可以回到之前创建的数据库中看到,所有的表格已经还原了,如下图:
数据库恢复的重要依据是什么
看看这个对你有帮助没有
北亚oracle数据恢复软件FROMBYTE Reconstructor for Oracle是一款用于恢复ORACLE数据库文件的软件产品,主要功能为重组ORACLE数据库碎片并导出完整的文件。
一、适用的灾难情况:
(1)ORACLE数据库文件被误删除 .
(2)存储重新分区、格式化导致ORACLE数据库文件丢失。
(3)存储突然断电、文件系统故障、fsck导致ORACLE数据库文件丢失。
(4)ASM存储故障导致ORACLE数据库文件丢失。
二、支持的文件系统特性:
(1)支持的文件系统类型:NTFS/EXT3/EXT4/REISERFS/REISER4/XFS/HTFS/UFS1/UFS2/JFS1/JFS2/VXFS/ASM.
(2)支持的文件系统平台:Little Endian/Big Endian.
(3)支持的文件系统块大小:512 Bytes/1 KB/2 KB/4 KB/8 KB/16 KB/32 KB.
三、支持的数据库特性:
(1)支持的数据库版本:ORACLE 8i/ORACLE 9 i/ORACLE 10g/ORACLE 11g.
(2)支持的数据库表空间模式:Smallfile Tablespace/Bigfile Tablespace.
(3)支持的数据库文件块大小:512 Bytes/1 KB/2 KB/4 KB/8 KB/16 KB/32 KB 及 自定义块大小。
四、其他特性:
(1)支持虚拟磁盘文件扫描及恢复。
(2)支持保存当前的扫描信息或加载已保存的扫描信息。
(3)支持创建自定义磁盘扫描区域或ASM磁盘组。
(4)支持千万级文件碎片扫描及多种不同的缓冲区大小。
(5)支持从数据库文件 ID/Size/Integrity/Version/Block Size多方面进行过滤搜索(针对数据库文件)。
(6)支持从数据库文件碎片 File ID/Block ID/Block Count/Block Size多方面进行过滤搜索(针对数据库文件碎片)。
(7)支持生成数据库文件可恢复性的技术报告。
数据库运行过程中常见的故障有哪几类?试述对各类故障的恢复策略。
数据库运行过程中常见的故障有3类:事物故障、系统故障、介质故障。恢复策略:1、事物故障:发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚该事务,将数据库恢复到修改前的初始状态。为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变,这类恢复操作称为事务撤销。2、系统故障:系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。3、介质故障:介质故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。扩展资料:“数据故障恢复”和“完整性约束”、“并发控制”一样,都是数据库数据保护机制中的一种完整性控制。所有的系统都免不了会发生故障,有可能是硬件失灵,有可能是软件系统崩溃,也有可能是其他外界的原因,比如断电等等。数据库运行的突然中断会使数据库处在一个错误的状态,而且故障排除后没有办法让系统精确地从断点继续执行下去。这就要求DBMS要有一套故障后的数据恢复机构,保证数据库能够回复到一致的、正确地状态去。参考资料来源:百度百科-事务故障参考资料来源:百度百科-系统故障参考资料来源:百度百科-介质故障
数据库常见故障有哪些?
数据库系统中故障可以分为:事务故障、系统故障、介质故障。一、事务故障某个事务在运行过程中由于种种原因未运行至正常终止点,事务故障的常见原因,输入数据有误运算溢出,违反了某些完整性限制发生锁死。二、系统故障由于某种原因造成整个系统的正常运行突然停止,致使所有正在运行的事务都以非正常方式终止。发生系统故障时,内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受影响 。三、介质故障硬件故障使存储在外存中的数据部分丢失或全部丢失 ,介质故障比前两类故障的可能性小得多,但破坏性最大。
如何恢复和修复MS SQL数据库的MDF文件[2]
怎么办呢?别着急 下面我们举例说明恢复办法 A 我们使用默认方式建立一个供恢复使用的数据库(如test) 可以在SQL Server Enterprise Manager里面建立 B 停掉数据库服务器 C 将刚才生成的数据库的日志文件test_log ldf删除 用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data mdf D 启动数据库服务器 此时会看到数据库test的状态为 置疑 这时候不能对此数据库进行任何操作 E 设置数据库允许直接 操作系统表 此操作可以在SQL Server Enterprise Manager里面选择数据库服务器 按右键 选择 属性 在 服务器设置 页面中将 允许对系统目录直接修改 一项选中 也可以使用如下语句来实现 以下是引用片段 use master go sp_configure allow updates go reconfigure with override go F 设置test为紧急修复模式 update sysdatabases set status= where dbid=DB_ID( test ) 此时可以在SQL Server Enterprise Manager里面看到该数据库处于 只读\置疑\脱机\紧急模式 可以看到数据库里面的表 但是仅仅有系统表 G 下面执行真正的恢复操作 重建数据库日志文件 dbcc rebuild_log( test C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log ldf ) 执行过程中 如果遇到下列提示信息 服务器: 消息 级别 状态 行 未能排它地锁定数据库以执行该操作 DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系 说明您的其他程序正在使用该数据库 如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表 那么退出SQL Server Enterprise Manager就可以了 正确执行完成的提示应该类似于 警告: 数据库 test 的日志已重建 已失去事务的一致性 应运行 DBCC CHECKDB 以验证物理一致性 将必须重置数据库选项 并且可能需要删除多余的日志文件 DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系 此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为 只供DBO使用 此时可以访问数据库里面的用户表了 H 验证数据库一致性(可省略) dbcc checkdb( test ) 一般执行结果如下 CHECKDB 发现了 个分配错误和 个一致性错误(在数据库 test 中) DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系 I 设置数据库为正常状态 sp_dboption test dbo use only false 如果没有出错 那么恭喜 现在就可以正常的使用恢复后的数据库啦 J 最后一步 我们要将步骤E中设置的 允许对系统目录直接修改 一项恢复 因为平时直接操作系统表是一件比较危险的事情 当然 我们可以在SQL Server Enterprise Manager里面恢复 也可以使用如下语句完成 以下是引用片段 sp_configure allow updates go reconfigure with override go lishixinzhi/Article/program/SQL/201311/16354
sql server 2008 怎么恢复mdf文件
1、新建一个同名数据库。
2、停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间。)
3、启动数据库服务,数据库变为置疑或可疑状态。然后在查询分析器中运行:
alter database 无日志文件的数据库名称 set emergency
设置为紧急状态。
4、再运行:
alter database 无日志文件的数据库名称 set single_user
或者:
Sp_dboption '无日志文件的数据库名称', 'single user', 'true'
设置为单用户模式。
、检查并重建日志文件,运行:
dbcc checkdb('无日志文件的数据库名称',REPAIR_ALLOW_DATA_LOSS)
这个时间比较长。耐心等待!如果有错误提示,再运行:
dbcc checkdb('无日志文件的数据库名称',REPAIR_REBUILD)
进行修复。如果没有错误,可以跳过。
6、恢复成多用户模式
alter database 无日志文件的数据库名称 set multi_user
或者:
Sp_dboption '无日志文件的数据库名称', 'single user', 'false'
数据库mdf文件可以恢复吗
很多的用户在生活中都不怎么会遇到数据库mdf文件,但是有时候还是会不小心吧文件给弄丢了,也不知道能不能恢复,下面就给大家带来数据库mdf文件能否恢复的详情。数据库mdf文件可以恢复吗:答:是可以恢复的。方法一、1、把mdf文件和ldf文件拷贝到数据库的默知认路径道C:\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA里。2、在sqlserver里新建个查询,执行下面代码。USEmaster;GOCREATEDATABASENewFileON(FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\File.mdf'),(FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\File_log.ldf')FORATTACH;GO3、刷专新数据库,就出现了新的数据库NewFile,根据属mdf文件和ldf文件还原成功。方法二、1、打开SQLServer软件,点击下拉菜单中的还原数据按钮。2、进入还原窗口。3、设置数据库的源对象,完成后还需设置目标原文件。4、点击“确定”即可开始还原数据库。还有其他问题的小伙伴可以看看【mdf文件常见问题大全】了解更多有关mdf文件的问题~以上就是给各位小伙伴带来的数据库mdf文件还原方法,希望你们会喜欢。