You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@phoenix.apache.org by "Xinyi Yan (Jira)" <ji...@apache.org> on 2019/09/25 23:22:00 UTC

[jira] [Commented] (PHOENIX-3165) System table integrity check and repair tool

    [ https://issues.apache.org/jira/browse/PHOENIX-3165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16938130#comment-16938130 ] 

Xinyi Yan commented on PHOENIX-3165:
------------------------------------

From my perspective, its very hard to implement all functions at once, maybe we can divide multi features in diff sub JIRAs? 

In the future, we can use `phck` tool to run individual tool or all of them at once.

I do have interest to implement tool to find orphan rows,  the logic should be fetch all rows from SYSTEM.CATALOG(maybe MR job ?). Two cases here that we need to consider
 # orphan head row. (head row contains table_type, column_count, etc)
 # orphan non-head row. 

Remove all head row and non-head row if they have the same TABLE_NAME,; as a result, all remaining rows are orphan rows.

 

> System table integrity check and repair tool
> --------------------------------------------
>
>                 Key: PHOENIX-3165
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3165
>             Project: Phoenix
>          Issue Type: New Feature
>            Reporter: Andrew Kyle Purtell
>            Priority: Critical
>              Labels: phoenix-hardening
>
> When the Phoenix system tables become corrupt recovery is a painstaking process of low level examination of table contents and manipulation of same with the HBase shell. This is very difficult work providing no margin of safety, and is a critical gap in terms of usability.
> At the OS level, we have fsck.
> At the HDFS level, we have fsck (integrity checking only, though)
> At the HBase level, we have hbck. 
> At the Phoenix level, we lack a system table repair tool. 
> Implement a tool that:
> - Does not depend on the Phoenix client.
> - Supports integrity checking of SYSTEM tables. Check for the existence of all required columns in entries. Check that entries exist for all Phoenix managed tables (implies Phoenix should add supporting advisory-only metadata to the HBase table schemas). Check that serializations are valid. 
> - Supports complete repair of SYSTEM.CATALOG and recreation, if necessary, of other tables like SYSTEM.STATS which can be dropped to recover from an emergency. We should be able to drop SYSTEM.CATALOG (or any other SYSTEM table), run the tool, and have a completely correct recreation of SYSTEM.CATALOG available at the end of its execution.
> - To the extent we have or introduce cross-system-table invariants, check them and offer a repair or reconstruction option.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)