雪花故障转移——复制机制
Snowflake failover - replication mechanim
我一直在深入研究有关如何在 Snowflake 中管理 failover/replication 用例的文档。 here 基本上,故障转移策略是基于数据库在位于不同区域的同一组织的两个不同帐户之间的复制特性。
从复制的角度来看,我可以配置这两个数据库并在每 10 分钟刷新一次主数据库的任务中设置我的复制,并以这种方式尽量保持辅助数据库的更新。尽管如此,如果发生意外事件,我的辅助数据库将被提升为主要数据库,将具有基于上次完成更新的数据版本,这意味着我可能已经部分丢失了在更新之前执行的整个新 data/transformations停电。这让我想到:
- 除了将复制任务安排到 1 分钟之外,还有什么方法可以尽可能减少丢失数据到 Snowflake 中的故障转移设计?
- 在中断已解决且我需要恢复主数据库的情况下,如何管理无法复制到辅助数据库但与我本可以生成的新数据合并的数据部分我在辅助数据库中 运行 作为生产?
非常感谢
a) 为了减少数据丢失,一种策略是如您所指出的那样频繁安排复制操作。另一个是能够在故障转移后重播最近的 ETL 作业。为此,您需要确保源数据可用,并且 ETL 过程可以在灾难后恢复。并且该 ETL 可以以幂等方式重放。
b) 不支持合并更改/冲突解决。 Snowflake 的数据库复制遵循单主模型。刷新辅助数据库会用主数据库的当前状态覆盖它。建议按照 (a) 中的建议通过重放 ETL 来恢复主节点上丢失的数据。
我一直在深入研究有关如何在 Snowflake 中管理 failover/replication 用例的文档。 here 基本上,故障转移策略是基于数据库在位于不同区域的同一组织的两个不同帐户之间的复制特性。
从复制的角度来看,我可以配置这两个数据库并在每 10 分钟刷新一次主数据库的任务中设置我的复制,并以这种方式尽量保持辅助数据库的更新。尽管如此,如果发生意外事件,我的辅助数据库将被提升为主要数据库,将具有基于上次完成更新的数据版本,这意味着我可能已经部分丢失了在更新之前执行的整个新 data/transformations停电。这让我想到:
- 除了将复制任务安排到 1 分钟之外,还有什么方法可以尽可能减少丢失数据到 Snowflake 中的故障转移设计?
- 在中断已解决且我需要恢复主数据库的情况下,如何管理无法复制到辅助数据库但与我本可以生成的新数据合并的数据部分我在辅助数据库中 运行 作为生产?
非常感谢
a) 为了减少数据丢失,一种策略是如您所指出的那样频繁安排复制操作。另一个是能够在故障转移后重播最近的 ETL 作业。为此,您需要确保源数据可用,并且 ETL 过程可以在灾难后恢复。并且该 ETL 可以以幂等方式重放。
b) 不支持合并更改/冲突解决。 Snowflake 的数据库复制遵循单主模型。刷新辅助数据库会用主数据库的当前状态覆盖它。建议按照 (a) 中的建议通过重放 ETL 来恢复主节点上丢失的数据。