[ https://issues.apache.org/jira/browse/HBASE-10900?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Demai Ni updated HBASE-10900: ----------------------------- Attachment: HBASE-10900-fullbackup-trunk-v1.patch attached the patch to solicit inputs. I am in process to add the testcases. And look forward suggestion to improve the patch > FULL table backup and restore > ----------------------------- > > Key: HBASE-10900 > URL: https://issues.apache.org/jira/browse/HBASE-10900 > Project: HBase > Issue Type: Task > Reporter: Demai Ni > Assignee: Demai Ni > Fix For: 1.0.0 > > Attachments: HBASE-10900-fullbackup-trunk-v1.patch > > > h2. Feature Description > This is a subtask of > [HBase-7912|https://issues.apache.org/jira/browse/HBASE-7912] to support FULL > backup/restore, and will complete the following function: > {code:title=Backup Restore example|borderStyle=solid} > /* backup from sourcecluster to targetcluster > */ > /* if no table name specified, all tables from source cluster will be > backuped */ > [sourcecluster]$ hbase backup create full > hdfs://hostname.targetcluster.org:9000/userid/backupdir t1_dn,t2_dn,t3_dn > /* restore on targetcluser, this is a local restore > */ > /* backup_1396650096738 - backup image name > */ > /* t1_dn,etc are the original table names. All tables will be restored if not > specified */ > /* t1_dn_restore, etc. are the restored table. if not specified, orginal > table name will be used*/ > [targetcluster]$ hbase restore /userid/backupdir backup_1396650096738 > t1_dn,t2_dn,t3_dn t1_dn_restore,t2_dn_restore,t3_dn_restore > /* restore from targetcluster back to source cluster, this is a remote restore > [sourcecluster]$ hbase restore > hdfs://hostname.targetcluster.org:9000/userid/backupdir backup_1396650096738 > t1_dn,t2_dn,t3_dn t1_dn_restore,t2_dn_restore,t3_dn_restore > {code} > h2. Detail layout and frame work for the next jiras > The patch is a wrapper of the existing snapshot and exportSnapshot, and will > use as the base framework for the over-all solution of > [HBase-7912|https://issues.apache.org/jira/browse/HBASE-7912] as described > below: > * *bin/hbase* : end-user command line interface to invoke > BackupClient and RestoreClient > * *BackupClient.java* : 'main' entry for backup operations. This patch will > only support 'full' backup. In future jiras, will support: > ** *create* incremental backup > ** *cancel* an ongoing backup > ** *delete* an exisitng backup image > ** *describe* the detailed informaiton of backup image > ** show *history* of all successful backups > ** show the *status* of the latest backup request > ** *convert* incremental backup WAL files into HFiles. either on-the-fly > during create or after create > ** *merge* backup image > ** *stop* backup a table of existing backup image > ** *show* tables of a backup image > * *BackupCommands.java* : a place to keep all the command usages and options > * *BackupManager.java* : handle backup requests on server-side, create > BACKUP ZOOKEEPER nodes to keep track backup. The timestamps kept in zookeeper > will be used for future incremental backup (not included in this jira). > Create BackupContext and DispatchRequest. > * *BackupHandler.java* : in this patch, it is a wrapper of snapshot and > exportsnapshot. In future jiras, > ** *timestamps* info will be recorded in ZK > ** carry on *incremental* backup. > ** update backup *progress* > ** set flags of *status* > ** build up *backupManifest* file(in this jira only limited info for > fullback. later on, timestamps and dependency of multipl backup images are > also recorded here) > ** clean up after *failed* backup > ** clean up after *cancelled* backup > ** allow on-the-fly *convert* during incremental backup > * *BackupContext.java* : encapsulate backup information like backup ID, table > names, directory info, phase, TimeStamps of backup progress, size of data, > ancestor info, etc. > * *BackupCopier.java* : the copying operation. Later on, to support > progress report and mapper estimation; and extends DisCp for progress > updating to ZK during backup. > * *BackupExcpetion.java*: to handle exception from backup/restore > * *BackupManifest.java* : encapsulate all the backup image information. The > manifest info will be bundled as manifest file together with data. So that > each backup image will contain all the info needed for restore. > * *BackupStatus.java* : encapsulate backup status at table level during > backup progress > * *BackupUtil.java* : utility methods during backup process > * *RestoreClient.java* : 'main' entry for restore operations. This patch > will only support 'full' backup. > * *RestoreUtil.java* : utility methods during restore process > * *ExportSnapshot.java* : remove 'final' so that another class > SnapshotCopy.java can extends from it > * *SnapshotCopy.java* : only a wrapper at this moment. But will be extended > to keep track progress(maybe should implemented in ExportSnapshot directly?) > * *HConstants.java* : add the constants used by backup/restore code. > h2. Questions for your inputs > * currently, the code is under *hbase-sever* because it already contain a > package name called 'backup'. Another place is *hbase-client*. Any > prefereence? > * Is bin/hbase the right place as CLI interface? another place would be hbase > shell. -- This message was sent by Atlassian JIRA (v6.2#6252)