GBase 8a数据库集群,其元数据大部分是保存在GsSYS引擎上的,如果表数据出现损坏,就会报Table 'XXXX' is marked as crashed and should be repaired。本文介绍其修复方法。
目录导航
1、原因
该表损坏,需要修复。 目前版本都是数据库元数据表导致,比如audit_log. table_distribution等。 可以从show create table XXXX 里看到engine的类型。
常见原因除了磁盘故障,就是gssys引擎自身在处理大数据时(比如百万,千万行)自身没有内部多版本机制导致。
2、常规解决方案
通过如下命令修复表
repair table XXXX;
如执行结果包含 repair status OK 字样就是修复成功了。
3、修复表结构
如果修复失败,比如Incorrect file format 'audit_log'
gbase> repair table audit_log;
+-----------------+--------+----------+-----------------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------+--------+----------+-----------------------------------+
| gbase.audit_log | repair | Error | Incorrect file format 'audit_log' |
| gbase.audit_log | repair | error | Corrupt |
+-----------------+--------+----------+-----------------------------------+
2 rows in set (Elapsed: 00:00:00.00)
可以用repair table audit_log use_frm 强行修复表结构,当然数据就都丢失了。
gbase> repair table audit_log use_frm;
+-----------------+--------+----------+-----------------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------+--------+----------+-----------------------------------+
| gbase.audit_log | repair | Error | Incorrect file format 'audit_log' |
| gbase.audit_log | repair | status | OK |
+-----------------+--------+----------+-----------------------------------+
2 rows in set (Elapsed: 00:00:00.00)