更新时间:2024-11-29 GMT+08:00

备份HBase业务数据

操作场景

为了确保HBase日常数据安全,或者系统管理员需要对HBase进行重大操作(如升级或迁移等),需要对HBase业务数据进行备份,从而保证系统在出现异常或未达到预期结果时可以及时进行数据恢复,将对业务的影响降到最低。

系统管理员可以通过FusionInsight Manager创建备份HBase任务并备份数据。支持创建任务自动或手动备份数据。

HBase备份业务数据时,可能存在以下场景:

  • 用户创建HBase表时,“KEEP_DELETED_CELLS”属性默认值为“false”,备份该HBase表时会将已经删除的数据备份,可能导致恢复后出现垃圾数据。请根据业务需要,在创建HBase表时手动修改参数值为“true”。
  • 用户在HBase表写入数据时手动指定了时间戳,且时间早于上一次该HBase表的备份时间,则在增量备份任务中可能无法备份新数据。
  • HBase备份功能不支持对HBase的global或者命名空间的读取、写入、执行、创建和管理权限的访问控制列表(ACL)进行备份,恢复HBase数据后需要管理员在FusionInsight Manager上重新设置角色的权限。
  • 已创建的HBase备份任务,如果本次备份任务在备集群的备份数据丢失,当下次执行增量备份时备份任务将失败,需要重新创建HBase的备份任务。若下次执行全量则备份正常。

前提条件

  • 如果数据要备份至远端HDFS中,需要准备一个用于备份数据的备集群,认证模式需要与主集群相同。其他备份方式不需要准备备集群。
  • 如果主集群部署为安全模式,且主备集群不是由同一个FusionInsight Manager管理,则必须配置系统互信,请参见配置跨Manager集群互信。如果主集群部署为普通模式,则不需要配置互信。
  • 主备集群必须已配置跨集群拷贝,请参见启用集群间拷贝功能
  • 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。
  • 根据业务需要,规划备份任务的类型、周期、备份对象、备份目录和备份任务需要使用的Yarn队列等策略规格。
  • 检查备集群HDFS是否有充足的空间,备份文件保存的目录建议使用用户自定义的目录。
  • 使用HDFS客户端,以hdfs用户执行hdfs lsSnapshottableDir检查当前集群中已创建HDFS快照的目录清单,确保待备份的数据文件所在HDFS路径的父目录或子目录不存在HDFS快照,否则无法创建备份任务。
  • 如果数据要备份至NAS中,需要提前部署好NAS服务端。
  • HBase的“fs.defaultFS”配置参数需要与Yarn,HDFS的配置保持一致。
  • 如果HBase数据存储在本地HDFS,支持将HBase业务数据备份到OBS。如果HBase数据存储在OBS,则不支持数据备份。
  • 如果数据要备份至OBS中,需要当前集群已对接OBS,并具有访问OBS的权限。

操作步骤

  1. 在FusionInsight Manager,选择“运维 > 备份恢复 > 备份管理”。
  2. 单击“创建”。
  3. 在“任务名称”填写备份任务的名称。
  4. 在“备份对象”选择待操作的集群。
  5. 在“备份类型”选择备份任务的运行类型。

    “周期备份”表示按周期自动执行备份,“手动备份”表示由手工执行备份。

    表1 周期备份参数

    参数名称

    描述

    开始时间

    任务第一次启动的时间。

    周期

    任务下次启动,与上一次运行的时间间隔,支持按“小时”或按“天”。

    备份策略

    • 首次全量备份,后续增量备份
    • 每次都全量备份
    • 每n次进行一次全量备份
    说明:
    • 备份Manager数据和组件元数据时不支持增量备份,仅支持“每次都全量备份”。
    • 如果“路径类型”要使用NFS或CIFS,不能使用增量备份功能。因为在NFS或CIFS备份时使用增量备份时,每次增量备份都会刷新最近一次全量备份的备份数据,所以不会产生新的恢复点。

  6. 在“备份配置”,勾选“业务数据”下的“HBase > HBase”。
  7. 在“HBase”的“路径类型”,选择一个备份目录的类型。

    备份目录支持以下类型:

    • “RemoteHDFS”:表示将备份文件保存在备集群的HDFS目录。
      选择此参数值,还需要配置以下参数:
      • “目的端NameService名称”:填写备集群的NameService名称。可以输入集群内置的远端集群的NameService名称(haclusterX,haclusterX1,haclusterX2,haclusterX3,haclusterX4),也可输入其他已配置的远端集群NameService名称。
      • “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。
      • “目的端NameNode IP地址”:填写备集群NameNode业务平面IP地址,支持主节点或备节点。
      • “目的端路径”:填写备集群保存备份数据的HDFS目录。不支持填写HDFS中的隐藏目录,例如快照或回收站目录;也不支持默认的系统目录,例如“/hbase”或“/user/hbase/backup”。
      • “最大备份数”:填写备份目录中可保留的备份文件集数量。
      • “队列名称”:填写备份任务执行时使用的Yarn队列的名称。需和集群中已存在且状态正常的队列名称相同。
      • “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。
      • “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。
    • “NFS”:表示将备份文件通过NFS协议保存在NAS中。
      选择此参数值,还需要配置以下参数:
      • “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。
      • “服务器IP地址”:填写NAS服务器IP地址。
      • “服务器共享路径”:填写用户配置的NAS服务器共享目录。(服务器共享路径不能设置为根目录,且共享路径的用户组和属组必须为nobody:nobody)
      • “最大备份数”:填写备份目录中可保留的备份文件集数量。
      • “队列名称”:填写备份任务执行时使用的Yarn队列的名称。需和集群中已存在且状态正常的队列名称相同。
      • “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。
      • “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。
    • “CIFS”:表示将备份文件通过CIFS协议保存在NAS中。
      选择此参数值,还需要配置以下参数:
      • “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。
      • “服务器IP地址”:填写NAS服务器IP地址。
      • “端口号”:填写CIFS协议连接NAS服务器使用的端口号,默认值为“445”。
      • “用户名”:填写配置CIFS协议时设置的用户名。
      • “密码”:填写配置CIFS协议时设置的密码。
      • “服务器共享路径”:填写用户配置的NAS服务器共享目录。(服务器共享路径不能设置为根目录,且共享路径的用户组和属组必须为nobody:nobody)
      • “最大备份数”:填写备份目录中可保留的备份文件集数量。
      • “队列名称”:填写备份任务执行时使用的Yarn队列的名称。需和集群中已存在且状态正常的队列名称相同。
      • “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。
      • “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。
    • “SFTP”:表示将备份文件通过SFTP协议保存到服务器中。

      选择此参数值,还需要配置以下参数:

      • “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。
      • “服务器IP地址”:填写备份数据的服务器IP地址。
      • “端口号”:填写SFTP协议连接备份服务器使用的端口号,默认值为“22”。
      • “用户名”:填写使用SFTP协议连接服务器时的用户名。
      • “密码”:填写使用SFTP协议连接服务器时的密码。
      • “服务器共享路径”:SFTP服务器上的备份路径。
      • “最大备份数”:填写备份目录中可保留的备份文件集数量。
      • “队列名称”:填写备份任务执行时使用的Yarn队列的名称。需和集群中已存在且状态正常的队列名称相同。
      • “最大map数”:填写执行MapReduce任务的最大map数,默认值为20。
      • “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为100。
    • “OBS”:表示将备份文件保存在OBS中。

      选择此参数值,还需要配置以下参数:

      • “目的端路径”:填写保存备份数据的OBS目录。
      • “最大备份数”:填写备份目录中可保留的备份文件集数量。
      • “队列名称”:填写备份任务执行时使用的Yarn队列的名称。需和集群中已存在且状态正常的队列名称相同。
      • “最大map数”:填写执行MapReduce任务的最大map数,默认值为20。
      • “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为100。

  8. 在“最大恢复点个数”填写备份任务在本集群中备份可保留的快照数量。
  9. 在“备份内容”中,选择一个或多个需要备份的HBase表。

    支持两种方式选择备份数据:

    • 添加备份数据文件
      1. 单击“添加”。
      2. 在“文件目录”框内选择要备份的表,单击“添加”添加到“备份文件”框内。
      3. 单击“确定”添加备份数据文件。
    • 正则表达式筛选
      1. 单击“正则表达式输入”。
      2. 根据界面提示,在第一个输入框填写HBase表所在的命名空间,需要与当前存在的命名空间完全匹配。例如“default”。
      3. 在第二个输入框输入正则表达式,支持标准正则表达式。例如要筛选命名空间中所有的表,输入“([\s\S]*?)”。例如要筛选命名规则为字母数字组合的表,如tb1可输入“tb\d*”。
      4. 单击“刷新”,在“目录名称”查看筛选的表。
      5. 单击“同步”保存筛选结果。
      • 输入正则表达式时,可以使用增加或删除一条表达式。
      • 如果已选择的表或目录不正确,可以单击“清除选中节点”清除勾选。

  10. 单击“校验”查看备份任务的配置是否正确。

    校验失败可能存在以下原因:

    • 目的端NameNode IP地址不正确。
    • 队列名称不正确。
    • 待备份的HBase表数据文件所在HDFS路径的父目录或子目录存在HDFS快照。
    • 待备份的目录或表不存在。

  11. 单击“确定”保存。
  12. 在备份任务列表中已创建任务的“操作”列,选择“更多 > 即时备份”,开始执行备份任务。

    备份任务执行完成后,系统自动在备集群的备份路径中为每个备份任务创建子目录,目录名为“xxx/备份任务名_数据源_任务创建时间”,数据源每次备份的最新备份文件保存在此目录中。所有备份文件集保存在对应的快照目录中。