Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

快照可用于Trafodion的所有表,包括Trafodion的元数据表,然后通过HBase ExportSnapshot Mapreduce job导出到HDFS。当我们需要从HDFS还原备份的文件时,快照同样通过ExportSnapshot MapReduce作业被导入到目标系统被还原。关于Trafodion完整的备份还原过程,如下所示:

完全脱机备份

 

  • 使用HBase shell snapshot命令来完成用于所有Trafodion表的备份快照。

...

  • 如需可存档或可移动到不同集群的备份文件,可使用hadoop distcp或其它可行方法。

...

  • Trafodion完全停止运行前需进行完整的脱机备份。

完全脱机还原

...

  • 若要还原保存于HDFS中的快照,可通过ExportSnapshot MapReduce作业将快照逐一导入到HBase。MapReduce任务可以并行运行。
  • 快照一经导入,可使用‘restore_snapshot’HBase shell命令进行还原。

...

  • Trafodion完全停止运行前需进行完整的脱机还原。

...

备份还原操作需使用具有sudo访问权限的用户来执行,此用户可以sudo访问HBase用户。备份和还原都通过具有读和写权限的ExportSnapshot MapReduce作业来访问到这些位置: 

  • HBase根目录由hbase.rootdir属性定义。此文件夹为HBase用户拥有。

...

  • 备份文件夹的所有者或者具有相应的读写权限的HBase用户可以访问此备份文件夹。如果HDFS目标文件夹不存在,备份脚本将试图创建目标HDFS文件夹。

...

/run_full_trafodion_backup.sh脚本执行所有trafodion表的完全脱机备份,并将备份文件复制到HDFS。

使用该脚本的命令如下所示:

./run_full_trafodion_backup.sh -b backup_folder -u trafodion_user -h HBase_user -d hdfs_user -m mappers -n

其中:

-b backup_folder

(可选)所有的Trafodion对象导出并保存于HDFS路径

...

hdfs://<host>:<port>/trafodion-backlups/backup_<timestamp> and unless -n

指示用户会被询问是否确认生成的

路径的使用。

-u trafodion 用户

(可选)在Trafodion服务器运行的用户。如果没有提供,而且

...

trafodion用户‘trafodion'。若回答为yes,则

使用默认的trafodion用户,否则脚本退出。

-h hbase 用户

(可选)在HBase服务器运行的用户。如果没有提供,脚本

...

的HBase用户 'hbase'。除非指定-n 选项,则会要求用户

确认之后的选择。

-d hdfs 用户

(可选)在HDFS服务器运行的用户。如果没有提供,脚本

...

的HDFS用户 'hdfs'。除非指定-n 选项,则会要求用户

确认之后的选择。

-m mappers

(可选)mappers的数目,默认为2.

-n

(可选)非交互模式。使用此选项,脚本不会提示

用户确认使用的计算或默认值参数,

...

在Trafodion表备份之前执行检查

备份脚本在开始实际备份之前执行以下检查: 

  • 确保Trafodion完全停止。
  • 确保备份文件夹存在,为空,且HBase用户具有对其进行写入的权限。如果它不存在,将试图创建。

...

  • 确保运行脚本的用户拥有sudo访问权限。
  • 创建HBase主目录,如果它不存在。

...

  • 试图找出HBase和HDFS的用户,如果这些用户没有提供。

还原:run_full_trafodion_

...

restore.sh。

./run_full_trafodion_restore.sh脚本从HDFS执行所有的trafodion表的完全脱机还原。

使用该脚本的命令如下所示:

./run_full_trafodion_restore.sh -b backup_folder -b backup_dir -u trafodion_user -h hbase_user -m mappers -n

其中:

-b backup_folder

(非可选)HDFS路径,所有的Trafodion对象导出并保存于此,

而HDFS路径需有特定的格式,如:hdfs://<host>:<port>/<folder>/...

-u trafodion 用户

(可选)在Trafodion服务器运行的用户。如果没有提供,而且

...

trafodion用户‘trafodion'。若回答为yes,则

使用默认的trafodion用户,否则脚本退出。

-h hbase 用户

(可选)在HBase服务器运行的用户。如果没有提供,脚本

...

的HBase用户 'hbase'。除非指定-n 选项,则会要求用户

确认之后的选择。

-d hdfs 用户

(可选)在HDFS服务器运行的用户。如果没有提供,脚本

...

的HDFS用户 'hdfs'。除非指定-n 选项,则会要求用户

确认之后的选择。

-m mappers

(可选)mappers的数目,默认为2.

-n

(可选)非交互模式。使用此选项,脚本不会提示

用户确认使用的计算或默认值参数,

...

在开始还原之前执行检查

备份脚本在开始实际备份之前执行以下检查: 

  • 确保Trafodion完全停止。
  • 确保备份文件夹存在,为空,且HBase用户具有对其进行写入的权限。如果它不存在,将试图创建。

...

在Cloudera或者Hortonworks的集群上执行备份。我们可以:

./run_full_trafodion_backup.sh -b hdfs://<host>:8020/bulkload/backup -m 16

其中,hdfs://<host>:8020/bulkload/backup是此示例中我们希望备份快照存在的hdfs地址。

...

在Cloudera和Horton Works distributions上执行还原。 可以这样:

./run_full_trafodion_restore.sh -b /bulkload/backup -m 4

在开发工作站上备份还原

关于ExportSnapshot在开发环境中的工作,我们需要从$MY_SQROOT/sql/local_hadoop/hbase/lib 目录下复制几个jar文件。否则当运行ExportSnapshot MapReduce作业时,会得到异常错误。这些措施表明,在工作站上测试时,可能有其他的方式来避免异常。

在shell窗口中,当sqenv.sh初始化后,我们需要在执行备份或还原之前执行下面的命令。

cd $MY_SQROOT/sql/local_hadoop
cp ./hadoop-2.4.0/share/hadoop/yarn/*.jar ./hbase/lib
cp ./hadoop-2.4.0/share/hadoop/mapreduce/hadoop-mapreduce-client*.

...

jar ./hbase/lib/

在开发环境中实行备份,我们首先需要确定hdfs的端口(工作站不总是使用标准端口)。我们可以从位于$MY_SQROOT/sql/local_hadoop/hadoop/etc/hadoop/的core-site.xm的配置文件中找到端口号。在此示例中,端口号是28400:

bash-4.1$ cat $MY_SQROOT/sql/local_hadoop/hadoop/etc/hadoop/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>

...

        <name>fs.default.

...

name</name>

...

     <value>hdfs://localhost:28400</

...

value>
    </property>

备份

使用上面的端口号来备份,命令是:

./run_full_trafodion_backup.sh -b hdfs://localhost:<port-number>/bulkload/backup -m 4

还原

执行还原:

run_full_trafodion_restore.sh -b hdfs://localhost:<port-number>/bulkload/backup -m 4

测试

目前为止进行的测试用例包括:

拥有HBase 0.98的系统上的备份/恢复

在HBase0.98中创建的所有的Trafodion表备份并导出到hdfs。然后所有的Trafodion表被删除。接下来,备份文件从备份地址到原来被创建的HBase.98中得到还原。对这种类型的测试:

  • 装有Trafodion 0.9的工作站,与装有Cloudera distribution的HBase 0.98(开发环境),测试通过。
  • 装有Trafodion 0.9与HBase 0.98(HortonWorks distribution)的4个节点的集群。测试通过。
  • 装有Trafodion 0.9与HBase 0.98(Cloudera distribution)的2个节点的集群。测试通过。

使用两个不同的拥有Trafodion 0.9和HBase 0.98的系统的备份/还原

在这些测试中所涉及的步骤如下:

  • Trafodion源到HDFS地址的备份
  • 从hdfs文件移动到有HBase.98的系统。此步骤涉及到从HDFS的备份文件复制到本地磁盘,然后使用scp linux命令将文件移动到目标系统中,然后将备份文件复制到目标系统上的HDFS地址。另一种移动备份文件的方式是使用hadoop distcp,但目前它无法工作,因为与distcp相关的IP端口没有开放。
  • 从备份文件还原目标系统上的备份

这种类型的测试:

  • 从装有Horton works的4节点的集群到装有Cloudera的2节点集群。测试通过
  • 从一个工作站到另一个都装有Cloudera的HBase的工作站(开发环境)。测试通过

使用两个不同的都有Trafodion0.9的系统备份/还原,其中源系统是HBase0.94.6,目标系统为 HBase0.98。

在此测试中我们所面临的主要问题如下:

...

  • 8199中有描述。这个问题在HBase 0.94.7中得到了修复,在HBse0.94.6没有。
  • 在HBase中间,一般来说(包括快照)是在HBase.94.6和更高版本包括0.98之间,存在兼容性的问题。由于此问题的存在,从HBase.94.6快照到HBase .98的导入无法正常工作。
  • 一种解决此兼容性问题的方法,如果要还原到0.98 HBase,是在备份之前,将系统从HBase 0.94.6升级到0.98.x。从HBase 0.94.6到HBase 0.98的升级本身需要2个步骤:从HBase 0.94.6升级到HBase 0.96,然后从 HBase 0.96 升级到HBase 0.98。升级步骤可以在此找到http://HBase.apache.org/book/ch03s04.html
  • 由于上面列出的受限制的问题,此测试用例未成功。