0

我有一个要求,我需要每天将生产 HAWQ 数据库刷新到 QA 环境。

如何将每天的增量从生产转移到 QA 集群。

感谢你的帮助

谢谢维鲁

4

2 回答 2

1

无耻的自插 - 看看下面的开放 PR 使用 Apache Falcon 编排 DR 批处理作业,看看它是否符合您的需求。

https://github.com/apache/incubator-hawq/pull/940

以下是该过程的概要:

  1. 运行hawqsync-extract以捕获已知良好的 HDFS 文件大小(如果同步失败,可防止 HDFS/目录不一致)
  2. 运行 ETL 批处理(如果有)
  3. Run hawqsync-falcon,它执行以下步骤:
    1. 停止两个 HAWQ 主机(源和目标)
    2. MASTER_DATA_DIRECTORY将源(MDD) 压缩包归档到 HDFS
    3. 重启源HAWQ master
    4. 启用 HDFS 安全模式并强制源检查点
    5. 禁用源和远程 HDFS 安全模式
    6. 执行基于 Apache Falcon 的 distcp 同步进程
    7. 启用 HDFS 安全模式并强制远程检查点

还有一个带有设计说明的 JIRA:

https://issues.apache.org/jira/browse/HAWQ-1078

于 2017-05-08T16:20:06.117 回答
0

没有内置工具可以执行此操作,因此您必须编写一些代码。写起来应该不会太难,因为 HAWQ 不支持 UPDATE 或 DELETE。您只需将新数据附加到 QA。

  • 在生产环境中为将数据放入 HDFS 的每个表创建可写外部表。您将使用 PXF 格式来写入数据。
  • 在 QA 中为读取此数据的每个表创建可读的外部表。
  • 第 1 天,您将所有内容写入 HDFS,然后从 HDFS 读取所有内容。
  • 第 2 天+,您从 QA 中找到 max(id)。从表的 HDFS 中删除文件。插入可写的外部表,但过滤查询,以便您仅从 QA 获得大于 max(id) 的记录。最后,通过从外部表中选择所有数据在 QA 中执行插入。
于 2017-05-05T15:09:43.713 回答