0

我一直在深入研究有关如何在 Snowflake 中管理故障转移/复制用例的文档。这里基本上,故障转移策略是基于数据库在同一组织的两个不同帐户位于不同区域之间的复制特性。

从复制的角度来看,我可以配置这两个数据库并在每 10 分钟刷新一次主数据库的任务中设置我的复制,并以这种方式尽可能多地保持辅助数据库的更新。然而,如果发生意外事件,我的辅助数据库将被提升为主数据库,这将具有基于上次完成更新的数据版本,这意味着我可能已经部分丢失了在中断之前执行的全部新数据/转换。这让我想到:

  • 除了将复制任务安排到 1 分钟之外,还有什么方法可以尽可能地减少 Snowflake 中故障转移设计中的丢失数据?
  • 在中断已解决且我需要恢复主数据库的情况下,如何管理我无法复制到辅助数据库但与我在运行时可能生成的新数据合并的部分数据二级数据库作为生产?

非常感谢

4

1 回答 1

1

a)为了减少数据丢失,一种策略是如您所指出的那样频繁地安排复制操作。另一个是能够在故障转移后重播最近的 ETL 作业。为此,您需要确保源数据可用,并且 ETL 流程可以在灾难后恢复。并且可以以幂等方式重放该 ETL。

b) 不支持合并更改/冲突解决。Snowflake 的数据库复制遵循单主模型。刷新辅助数据库会用主数据库的当前状态覆盖它。建议是按照 (a) 中的建议通过重放 ETL 来恢复故障转移后主服务器上丢失的数据。

于 2019-11-19T00:03:00.800 回答