这包括管理员用于创建,恢复和合并备份的命令行机制。有关检查特定备份会话详细信息的工具将在下一节备份映像管理中介绍。

运行命令hbase backup help <command>可以查看有关命令及其选项的基本信息。下面涉及到的信息都可以在对应命令帮助消息中找到。

83.1. 创建一个备份镜像

| |

对于也使用Apache Phoenix的HBase集群:在备份中包含SQL系统目录表。如果需要恢复HBase备份,则可以通过访问系统目录表来恢复Phoenix与已还原数据的互操作性。

|

运行备份和还原程序的第一步是执行完全备份,并将数据存储在与源不同的映像中。至少,您必须执行此操作才能获得基准,然后才能依赖增量备份。

以HBase超级用户身份运行以下命令:

hbase backup create <type> <backup_path>

命令完成运行后,控制台将显示SUCCESS或FAILURE状态消息。 SUCCESS消息包括 backup_ID 。备份ID是HBase master从客户端收到备份请求的Unix时间(也称为Epoch时间)。

| |

记录成功备份结束时显示的备份ID。一旦源群集出现故障并且您需要使用恢复操作恢复数据集,此时如果有备份ID则可以节省时间。

|

83.1.1. 位置命令行参数

type

要执行的备份类型:_full_或 incremental。提醒一下,incremental 备份需要 full 备份才能存在。

backup_path

backup_path 参数指定存储备份映像的位置的完整文件系统URI。有效前缀为 hdfs:, webhdfs:, _s3a:_或其他兼容的Hadoop文件系统实现。

83.1.2. 命名命令行参数

-t <table_name[,table_name]>

要备份的以逗号分隔的表列表。如果未指定表,则备份所有表。不支持正则表达式或通配符;必须明确列出所有表名。有关对表集合执行操作的更多信息,请参见备份集。与 -s 选项互斥;二者之间必须选一个。

-s <backup_set_name>

根据备份集确定要备份的表。有关备份集的用途和用法,请参阅使用备份集。与 -t 选项互斥。

-w <number_workers>

(可选)指定将数据复制到备份目标的并行工作线程数。备份当前是由MapReduce作业执行的,因此该值也对应于作业将生成的Mapper数。

-b <bandwidth_per_worker>

(可选)指定每个工作线程的带宽,以MB/秒为单位。

-d

可选)启用“DEBUG”模式,该模式打印有关备份创建的其他日志记录。

-q

(可选)指定执行创建备份的MapReduce作业的YARN队列的名称。此选项有助于防止备份任务与其他高优先级MapReduce作业中竞争资源。

83.1.3. 用法示例

$ hbase backup create full hdfs://host5:8020/data/backup -t SALES2,SALES3 -w 3

此命令在路径 /data/backup 中的NameNode为host5:8020的HDFS实例中创建两个表SALES2和SALES3的完整备份映像。 -w 选项指定不超过三个并行工作完成操作。

83.2. 从一个备份镜像中恢复

以HBase超级用户身份运行以下命令。您只能在正在运行的HBase集群上恢复备份,因为必须将数据重新分发到RegionServers才能成功完成操作。

hbase restore <backup_path> <backup_id>

83.2.1. 位置命令参数

backup_path

backup_path 参数指定存储备份映像的位置的完整文件系统URI。有效前缀为 hdfs:, webhdfs:, _s3a:_或其他兼容的Hadoop文件系统实现。

backup_id

唯一标识要还原的备份映像的备份ID。

83.2.2. 命名命令参数

-t <table_name[,table_name]>

要恢复的以逗号分隔的表列表。有关对表集合执行操作的更多信息,请参见备份集。与 -s 选项互斥;二者之间必须选一个。

-s <backup_set_name>

根据备份集确定要备份的表。有关备份集的用途和用法,请参阅使用备份集。与 -t 选项互斥。

-q

(可选)指定执行创建备份的MapReduce作业的YARN队列的名称。此选项有助于防止备份任务与其他高优先级MapReduce作业中竞争资源。

-c

(可选)执行还原的模拟运行。只执行检查操作,但不执行。

-m <target_tables>

(可选)要还原的以逗号分隔的表列表。如果未提供此选项,则使用原始表名。提供此选项时,必须提供与-t选项中相同数量的条目。

-o

(可选)指定对于要还原的目标表,如果存在,则执行覆盖操作。

83.2.3. 用法示例

hbase restore /tmp/backup_incremental backupId_1467823988425 -t mytable1,mytable2

此命令恢复增量备份映像的两个表。在此示例中:• /tmp/backup_incremental是包含备份映像的目录的路径。 • backupId_1467823988425是备份ID。 • mytable1mytable2是要恢复的备份映像中的表的名称。

83.3. 合并增量备份映像

此命令可用于将两个或多个增量备份映像合并为单个增量备份映像。这可用于将多个小型增量备份映像合并为一个较大的增量备份映像。此命令可用于将每小时增量备份合并到每日增量备份映像中,或每日增量备份合并到每周增量备份中。

$ hbase backup merge <backup_ids>

83.3.1. 位置命令参数

backup_ids

以逗号分隔的增量备份镜像ID列表,这些ID将合并到单个镜像中。

83.3.2. 命名命令参数

无。

83.3.3. 用法示例

$ hbase backup merge backupId_1467823988425,backupId_1467827588425

83.4. 使用备份集

备份集可以通过减少表名重复输入的数量来简化HBase数据备份和还原的管理。您可以使用hbase backup set add命令将表分组到命名备份集中。然后,您可以使用-set选项在hbase backup createhbase restore中调用备份集的名称,而不是单独列出组中的每个表。您可以拥有多个备份集。

注意hbase backup set add命令和 -set 选项之间的区别。必须先运行hbase backup set add命令,然后才能在其他命令中使用-set选项,因为在将备份集用作快捷方式之前,必须先命名和定义备份集。

如果运行hbase backup set add命令并指定系统上尚不存在的备份集名称,则会创建一个新集。如果运行具有现有备份集名称的命令的命令,则指定的表将添加到该集合中。

在此命令中,备份集名称区分大小写。

备份集的元数据存储在HBase中。如果您无法访问具有备份集元数据的原始HBase集群,则必须指定单个表名以还原数据。

要创建备份集,请以HBase超级用户身份运行以下命令:

$ hbase backup set <subcommand> <backup_set_name> <tables>

83.4.1. 备份集子命令

以下列表详细介绍了hbase backup set命令的子命令。

在hbase备份集设置完成操作后,您必须输入以下子命令中的一个(且不超过一个)。此外,备份集名称在命令行程序中是区分大小写的。

add

将表[s]添加到备份集。在此参数后面指定 _backup_set_name_值以创建备份集。

remove

从集中删除表。在tables参数中指定要删除的表。

list

列出所有备份集。

describe

显示备份集的描述信息。包括该集合是具有完整备份还是增量备份,备份的开始和结束时间以及集合中的表列表。此子命令必须为 backup_set_name 指定一个有效值。

delete

删除备份集。在hbase backup set delete命令后直接输入 backup_set_name 选项的值。

83.4.2. 位置命令参数

backup_set_name

用于分配或执行操作的备份集名称。备份集名称必须仅包含可打印字符,并且不能包含任何空格。

tables

要包含在备份集中的表(或单个表)的列表。输入表名是以逗号作为分隔符的列表。如果未指定表,则所有表都包含在集中。

保存好备份集名称以及其在远程集群上相应的表列表和备份策略。如果主群集出现故障,这些信息可以帮助您。

83.4.3. 用法示例

$ hbase backup set add Q1Data TEAM3,TEAM_4

根据环境的不同,此命令将导致以下一项操作:

  • 如果Q1Data备份集不存在,则创建包含表TEAM_3TEAM_4的备份集。

  • 如果Q1Data备份集已经存在,表TEAM_3TEAM_4将被添加到Q1Data备份集。