- 浏览: 1332831 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
由于临时断电,使用kill -9中止MySQL服务进程,所有的这些都可能会毁坏MySQL的数据文件。如果在被干扰时,服务正在改变文件,文件可能会留下错误的或不一致的状态。因为这样的毁坏有时是不容易被发现的,当你发现这个错误时可能是很久以后的事了。于是,当你发现这个问题时,也许所有的备份都有同样的错误。
MySQL参考手册的第十五章讲述了MySQL自带的myisamchk的功能,以及如何使用它检查和修复你的MySQL数据文件。虽然这一章对于每个想要搭建一个强壮的MySQL服务的人都是推荐阅读的,我们还是有必要在这里对其中的要点进行讨论。
在我们继续之前,你必须意识到myisamchk程序对用来检查和修改的MySQL数据文件的访问应该是唯一的。如果MySQL服务正在使用某一文件,并对myisamchk正在检查的文件进行修改,myisamchk会误以为发生了错误,并会试图进行修复--这将导致MySQL服务的崩溃!这样,要避免这种情况的发生,通常我们需要在工作时关闭MySQL服务。作为选择,你也可以暂时关闭服务以制作一个文件的拷贝,然后在这个拷贝上工作。当你做完了以后,重新关闭服务并使用新的文件取代原来的文件(也许你还需要使用期间的变更日志)。
MySQL数据目录不是太难理解的。每一个数据库对应一个子目录,每个子目录中包含了对应于这个数据库中的数据表的文件。每一个数据表对应三个文件,它们和表名相同,但是具有不同的扩展名。tblName.frm文件是表的定义,它保存了表中包含的数据列的内容和类型。tblName.MYD文件包含了表中的数据。tblName.MYI文件包含了表的索引(例如,它可能包含lookup表以帮助提高对表的主键列的查询)。
要检查一个表的错误,只需要运行myisamchk(在MySQL的bin目录下)并提供文件的位置和表名,或者是表的索引文件名:
以下为引用的内容:
myisamchk /usr/local/mysql/var/dbName/tblName
myisamchk /usr/local/mysql/var/dbName/tblName.MYI
上面的两个命令都可以执行对指定表的检查。要检查数据库中所有的表,可以使用通配符:
以下为引用的内容:
myisamchk /usr/local/mysql/var/dbName/*.MYI
要检查所有数据库中的所有表,可以使用两个通配符: myisamchk /usr/local/mysql/var/*/*.MYI
如果不带任何选项,myisamchk将对表文件执行普通的检查。如果你对一个表有怀疑,但是普通的检查不能发现任何错误,你可以执行更彻底的检查(但是也更慢!),这需要使用--extend-check选项:
以下为引用的内容:
myisamchk --extend-check /path/to/tblName
对错误的检查是没有破坏性的,这意味着你不必担心执行对你的数据文件的检查会使已经存在的问题变得更糟。另一方面,修复选项,虽然通常也是安全的,但是它对你的数据文件的更改是无法撤消的。因为这个原因,我们强烈推荐你试图修复一个被破坏的表文件时首先做个备份,并确保在制作这个备份之前你的MySQL服务是关闭的。
当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次--这通常是上一次修复操作遗留下来的。
这三种修复方法如下所示:
以下为引用的内容:
myisamchk --recover --quick /path/to/tblName
myisamchk --recover /path/to/tblName
myisamchk --safe-recover /path/to/tblName
第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。
检查和修复MySQL数据文件
如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧:
如果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容:
mysql DELETE FROM tblName;
在删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。
如果你的表的格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一个新的)一起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。
启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。
可以使用mysql语句,用 CHECK TABLE $table; //其中$table代表数据表的名字,检测表是否损坏,如果损坏可以REPAIR TABLE $table 来修复,如果一次不行,可以多修复几次!
如果使用WIN服务器,可以先登陆DB服务器,进入此路径,不用进mysql里
以下为引用的内容:
D:\CD MYSQL
D:\mysql>CD BIN
D:\mysql\bin>MYISAMCHK -r d:\mysql\data\guild\msg_table.myi(msg_table)
- check key delete-chain
- check record delete-chain
- recovering (with sort) MyISAM-table 'd:\mysql\data\guild\msg_table.myi'
Data records: 23
- Fixing index 1
D:\mysql\bin>MYISAMCHK --safe-recover d:\mysql\data\guild\msg_table.myi
- recovering (with keycache) MyISAM-table 'd:\mysql\data\guild\msg_table.myi'
Data records: 89
D:\mysql\bin>
当不知道哪个表坏了,可以进入mysql数据库:
以下为引用的内容:
use guild;
desc msg_table; 看msg_table有没有坏
修复好了进入MYSQL数据库中打命令检查:show table;
<!-- End articleData -->发表评论
-
mysql主从热备配置(含innodb)终极版
2012-12-25 13:10 2648转自 http://blogread.cn/it/articl ... -
sqlite3中的数据类型
2012-12-10 21:37 1333(转)http://www.cnblogs.com/kfqco ... -
Mac下MySql卸载方法
2012-09-10 23:57 1054Mac下MySql卸载方法 mac下mysql的D ... -
mac os x mysql数据库utf8配置
2012-09-10 23:29 2282进入mysql console: 输入 mysql& ... -
ON DUPLICATE KEY UPDATE
2012-08-07 01:47 1091(转自)http://blog.csdn.net/kesaih ... -
MySQL单列索引和组合索引的区别介绍
2012-08-07 01:31 1106(转自)http://blog.cs ... -
centos下MySQL主从同步配置
2012-08-03 13:14 1558(转自)http://apps.hi.baidu.com ... -
sql语句中left join、inner join中的on与where的区别
2012-06-13 13:24 1263table a(id, type): id t ... -
分组取前N记录
2012-05-31 16:24 1125(转)http://blog.csdn.net/ac ... -
如何一条sql语句取出分组数据中值最大的
2012-05-30 23:59 2363--按某一字段分组取最大(小)值所在行的数据(2007-10- ... -
存储过程与函数的区别
2011-09-28 19:35 1158... -
RMAN备份方案
2011-07-21 10:29 2060RMAN备份方案 RMAN也可以进行联机备份,而且备份与恢 ... -
oracle
2011-04-06 17:46 1049学习笔记 -
PLSQL Developer + Oracle客户端简易安装方法
2011-03-17 00:10 14381Oracle 10g绿色客户端 pl ... -
SELECT INTO FROM与INSERT INTO SELECT
2011-01-26 15:52 34101.INSERT INTO SELECT语句 ... -
浅谈unique列上插入重复值的MySQL解决方案
2011-01-25 11:33 1781本文的unique列上插入重复值解决方案,主要基于MySQL平 ... -
:Oracle 中对Merge语句的增强 和去重复新增
2011-01-25 11:11 2321在Oracle 10g之前,merge语句支持匹配更新和不匹配 ... -
单行函数(仅对单个表达式或一行进行处理)
2011-01-23 18:49 1272例如:select sum(qty) from sales ... -
oracle中的事务控制命令
2011-01-23 18:45 2104事务提交有显示提交:使用commit命令来提交所有未提交的更新 ... -
oracle全文检索
2011-01-23 18:18 61551.全文检索和普通检索的区别 不使用Oracle text功 ...
相关推荐
MySQL数据恢复是一个重要的数据库管理任务,特别是在数据丢失或系统故障后,恢复数据是确保业务连续性和数据完整性不可或缺的环节。这篇博文将深入探讨MySQL数据恢复的相关知识点,包括常见的数据丢失场景、备份策略...
MySQL 数据恢复是数据库管理中的一项重要任务,尤其是在遭遇意外数据丢失、硬件故障或软件错误时。以下是三种常用的数据恢复方式的详细说明: 1. **通过表备份的方式**: 当数据表因各种原因如误删除、软件故障或...
MySQL数据恢复是一个重要的主题,尤其是在数据库管理中,数据的安全性和可恢复性是至关重要的。当面临数据丢失或数据库损坏的情况时,专业的MySQL数据恢复软件能够帮助我们找回宝贵的信息。本软件"sa_mysql_recovery...
### MySQL 数据恢复方法详解 #### 一、引言 在MySQL数据库管理中,数据安全至关重要。即便是经验丰富的DBA也可能因误操作导致数据丢失。本文将详细介绍如何在MySQL环境下利用binlog进行数据恢复,这对于刚接触...
通过binlog日志进行mysql数据恢复
根据mysql数据日志文件,自动生成对应的建表sql和数据恢复sql,可以对数据名和表明进行过滤。适用于设置为完整日志格式下的mysql数据库还原,包括误操作数据、数据库崩溃等多种情况下的数据库数据恢复。 ※※※※...
RAID6数据恢复软件V2.1是一款RAID6数据恢复软件,完全支持整个RAID6在缺少两块磁盘后进行完整数据恢复。 该软件是一款功能强大的RAID6数据恢复软件,完全支持整个RAID6在缺少两块磁盘后进行完整数据恢复。 完美...
#### 二、MySQL数据恢复基础知识 1. **逻辑备份与物理备份**: - **逻辑备份**通常是使用`mysqldump`工具将整个数据库导出为SQL脚本文件。 - **物理备份**则是直接复制数据库文件到备份介质上,如使用`cp`命令...
总之,MySQL数据恢复主要依赖于二进制日志和定期的全量备份。正确开启binlog并定期备份是防止数据丢失的关键步骤。在出现误操作时,及时停止所有写入操作,然后按照上述步骤进行恢复,可以最大程度地减少数据损失。...
二、MySQL数据恢复 1. **使用SQL脚本恢复**:恢复过程相对简单,只需将备份的SQL文件导入到MySQL服务器: ``` mysql -u [username] -p[password] [database_name] ``` 2. **基于二进制日志的恢复**:如果需要...
### MySQL根据日志恢复数据详细步骤 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,因其高效稳定、易于维护等特性而深受开发者喜爱...希望本文能够帮助读者更好地理解和掌握MySQL的数据恢复技巧。
在本篇文章中,我们将深入探讨MySQL的数据恢复机制,包括其重要性、基本步骤、不同类型的备份策略以及高级恢复策略,以帮助读者更好地理解和实施数据保护措施。 #### MySQL 数据恢复的重要性 数据恢复是任何数据库...
文件级别数据库恢复工具软件,本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表...
1.1.7 MySQL的数据如何恢复到任意时间点?
MySQL 数据恢复通过 .frm 和 .ibd 文件 MySQL 是一种广泛使用的关系型数据库管理系统,它提供了高效、安全和可靠的数据存储和管理机制。但是,在实际应用中,数据库可能会出现各种故障,例如数据丢失、表结构异常等...
2. **数据恢复**:一旦发现可修复的错误,工具会尝试恢复数据,确保尽可能多的数据能够被挽救。 3. **日志分析**:对于InnoDB引擎,工具可能需要分析事务日志(Redo Log)来恢复未提交的事务,以保持数据一致性。 ...
这是我从网上找到的mysql/mariadb对innodb表进行数据恢复的工具,实现从innodb的数据库文件中恢复数据,用于实现下面情况:1、直接下载了innodb数据库的文件,而不是导出其数据,想恢复数据时(需要有完整的文件,...
MySQL 数据备份与恢复是数据库管理中的重要环节,它关乎到数据的安全性和业务的连续性。在本篇中,我们将深入探讨 MySQL 的三种主要备份恢复模式,以及如何利用工具如 `innobackupex` 实现高效的数据保护。 一、...
然而,数据库系统难免会遇到问题,如意外的数据丢失、错误操作或系统崩溃等,这时MySQL的日志和数据恢复机制就显得尤为重要。本文将深入探讨MySQL中的日志类型以及如何利用这些日志进行数据恢复。 1. 错误日志 ...