[
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-trunk-v2.patch
Thanks for the comments from review board. I addressed some of them, and upload
v2 patch here.
I will open another jira for incremental backup, which will help to show whole
picture of this solution. so I will switch my time to work on that for a few
days. Then come back to address other review comments in this jira
> 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,
> HBASE-10900-trunk-v2.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)