如何修复损坏数据库中的数据表-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

如何修复损坏数据库中的数据表

简介: 在使用MySQL过程中,各种意外会导致数据库表的损坏,而且这些数据往往是最新的数据,通常不可能在备份数据中找到。在使用阿里云数据库RDS产品中,RDS是如何修复损坏数据库中的数据表的呢?在传统数据库中,又是如何对其进行修复的呢?接下来,我们将做一个比较:
在使用MySQL过程中,各种意外会导致数据库表的损坏,而且这些数据往往是最新的数据,通常不可能在备份数据中找到。在使用阿里云数据库RDS产品中,RDS是如何修复损坏数据库中的数据表的呢?在传统数据库中,又是如何对其进行修复的呢?接下来,我们将做一个比较:

阿里云数据库RDS
阿里云提供的关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于飞天分布式系统和高性能存储,RDS 支持 MySQL、SQL Server、PostgreSQL 和 PPAS( Postgre Plus Advanced server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。

背景:
RDS(mysql)如果使用了myisam引擎,那就很容易会出现数据表损坏的情况,这时候执行查询可能会提示:
mysql error:1194:Table 'xxx' is marked as crashed and should be repaired
那么,我们可以通过下面2种方法来进行修复,修复的过程中可能会导致数据丢失,操作之前最后能做个临时实例进行备份。
1.通过mysql客户端登入到数据库中进行操作,登入到指定的库中,执行下面命令修复:
repair table wp_users;
其中 wp_users是需要修复的表名称
0df1a38eac5409b802407a2f56c7b235cfc7e9cb
2.使用DMS登入上去,选中表—右键菜单 —表维护 — 修复表 — 常规 这一系列步骤来进行修复。
7dda683e4cc0390d520c935172fbd4970a1d7f75
传统数据库:
背景:
由于断电或非正常关机而导致MySQL数据库出现错误是非常常见的问题。
那么,我们可以通过下面2种方法来进行修复,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk和isamchk数据检测恢复工具。
1.check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
> check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
> repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2.Myisamchk和 isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。

综上,我们可以看出相对于传统数据库在修复数据表时较复杂,而在阿里云数据库RDS中修复数据表易操作易维护,可以有效地减轻用户的运维压力。

参考

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: