1 /** 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package org.apache.hadoop.hbase.client; 20 21 import java.io.Closeable; 22 import java.io.IOException; 23 import java.util.List; 24 import java.util.concurrent.Future; 25 26 import org.apache.hadoop.hbase.TableName; 27 import org.apache.hadoop.hbase.backup.BackupInfo; 28 import org.apache.hadoop.hbase.backup.BackupRequest; 29 import org.apache.hadoop.hbase.backup.RestoreRequest; 30 import org.apache.hadoop.hbase.backup.util.BackupSet; 31 import org.apache.hadoop.hbase.classification.InterfaceAudience; 32 import org.apache.hadoop.hbase.classification.InterfaceStability; 33 /** 34 * The administrative API for HBase Backup. Obtain an instance from 35 * an {@link Admin#getBackupAdmin()} and call {@link #close()} afterwards. 36 * <p>BackupAdmin can be used to create backups, restore data from backups and for 37 * other backup-related operations. 38 * 39 * @see Admin 40 * @since 2.0 41 */ 42 @InterfaceAudience.Public 43 @InterfaceStability.Evolving 44 45 public interface BackupAdmin extends Closeable{ 46 47 /** 48 * Backs up given list of tables fully. Synchronous operation. 49 * 50 * @param request BackupRequest instance which contains the following members: 51 * type whether the backup is full or incremental 52 * tableList list of tables to backup 53 * targetRootDir root directory for saving the backup 54 * workers number of parallel workers. -1 - system defined 55 * bandwidth bandwidth per worker in MB per second. -1 - unlimited 56 * @return the backup Id 57 */ 58 59 public String backupTables(final BackupRequest userRequest) throws IOException; 60 61 /** 62 * Backs up given list of tables fully. Asynchronous operation. 63 * 64 * @param request BackupRequest instance which contains the following members: 65 * type whether the backup is full or incremental 66 * tableList list of tables to backup 67 * targetRootDir root dir for saving the backup 68 * workers number of paralle workers. -1 - system defined 69 * bandwidth bandwidth per worker in MB per sec. -1 - unlimited 70 * @return the backup Id future 71 */ 72 public Future<String> backupTablesAsync(final BackupRequest userRequest) throws IOException; 73 74 /** 75 * Describe backup image command 76 * @param backupId - backup id 77 * @return backup info 78 * @throws IOException exception 79 */ 80 public BackupInfo getBackupInfo(String backupId) throws IOException; 81 82 /** 83 * Show backup progress command 84 * @param backupId - backup id (may be null) 85 * @return backup progress (0-100%), -1 if no active sessions 86 * or session not found 87 * @throws IOException exception 88 */ 89 public int getProgress(String backupId) throws IOException; 90 91 /** 92 * Delete backup image command 93 * @param backupIds - backup id 94 * @return total number of deleted sessions 95 * @throws IOException exception 96 */ 97 public int deleteBackups(String[] backupIds) throws IOException; 98 99 /** 100 * Show backup history command 101 * @param n - last n backup sessions 102 * @return list of backup infos 103 * @throws IOException exception 104 */ 105 public List<BackupInfo> getHistory(int n) throws IOException; 106 107 /** 108 * Backup sets list command - list all backup sets. Backup set is 109 * a named group of tables. 110 * @return all registered backup sets 111 * @throws IOException exception 112 */ 113 public List<BackupSet> listBackupSets() throws IOException; 114 115 /** 116 * Backup set describe command. Shows list of tables in 117 * this particular backup set. 118 * @param name set name 119 * @return backup set description or null 120 * @throws IOException exception 121 */ 122 public BackupSet getBackupSet(String name) throws IOException; 123 124 /** 125 * Delete backup set command 126 * @param name - backup set name 127 * @return true, if success, false - otherwise 128 * @throws IOException exception 129 */ 130 public boolean deleteBackupSet(String name) throws IOException; 131 132 /** 133 * Add tables to backup set command 134 * @param name - name of backup set. 135 * @param tables - list of tables to be added to this set. 136 * @throws IOException exception 137 */ 138 public void addToBackupSet(String name, TableName[] tables) throws IOException; 139 140 /** 141 * Remove tables from backup set 142 * @param name - name of backup set. 143 * @param tables - list of tables to be removed from this set. 144 * @throws IOException exception 145 */ 146 public void removeFromBackupSet(String name, String[] tables) throws IOException; 147 148 /** 149 * Restore backup 150 * @param request - restore request 151 * @throws IOException exception 152 */ 153 public void restore(RestoreRequest request) throws IOException; 154 155 }