gpt4 book ai didi

c# - Azure 弹性秤 : Split-Merge Tutorial - Can't Split a Shard

转载 作者:行者123 更新时间:2023-11-30 21:56:44 25 4
gpt4 key购买 nike

我按照教程here进行操作我创建了提到的所有内容并部署了该服务。我也可以正常运行它。

我的 Elastic DB 当前包含一个范围分片,其中 MinValue 设置为 0MaxValue 设置为 Infinity (NULL).

然后将这个分片实际分成两个。我做了以下事情:

  1. 创建了一个与分片 1 具有相同架构的新数据库
  2. 运行该服务,它表示目标数据库必须是分片映射的一部分。失败了!!!
  3. 现在,为了将新数据库作为分片添加到Shard Map Manager Database中,我下载了 Nuget package 上提供的 .Net API。 ,修改设置等,但它不会添加新分片,因为第一个分片范围(0 - INFINITY)不允许这样做。再次失败:(
  4. 现在我亲自动手修改了实际的[__ShardManagement].[ShardMappingsGlobal]表本身,其中包含Shard Map Manager数据库中的这些范围映射。我去了那里,将唯一分片的 MaxValue 列设置为 20。而该分片包含的分片键最多为 30。
  5. 现在再次运行下载的 .Net API,将新分片起始值指定为 20 - INFINITY。它成功了,新的分片已在 SMM DB 中注册。

(我认为该服务现在将拆分分片 1,获取分片键为 21 的所有数据,并将插入分片 2,因为其 MinValue 为 21。)

  • 再次运行该服务,并抛出以下错误:

    源映射和目标映射都指向同一个分片“new_shard”。

  • 嗯...可能是因为第一个分片的 MaxValue 和新分片的 MinValue 相同。

  • 现在我去更新了我想要拆分的第一个分片的 MaxValue = NULL (INFINITY)。再次运行该服务,并收到以下错误:

    源映射和目标映射都指向同一个分片“new_shard”。

  • 这到底是怎么回事?为什么这么难?哪里有合适的文档?

    这对我来说非常重要,如果有人能帮助我分割这个该死的碎片,我将不胜感激。

    谢谢。

    最佳答案

    感谢您提出有关拆分/合并的问题。让我们看看这是否有帮助:

    根据您上面记录的步骤,您似乎最终在步骤 3) 中做了两件事:

    • 您将一个新数据库作为空分片添加到分片映射中,并且
    • 您尝试分配一个指向新添加的分片的映射。

    第一部分(添加空分片)应该已经成功,而第二部分(添加映射)在您的情况下会失败,因为到第一个分片的现有映射已经覆盖了整个域。

    如果到目前为止这听起来不错,您可以尝试以下步骤:

    1. 将分片映射重置为原始状态,以便 (0 - 无穷大)range 再次指向第一个分片。最好从头开始重新创建分片映射。
    2. 重新运行上面的步骤 1)拥有一个包含您的架构的干净数据库。
    3. 使用如下调用将上一步中的干净数据库作为分片添加到现有分片映射中:shardmap.CreateShard(new ShardLocation(shardServer, "your_clean_database"));。确保您没有调用 shardmap.CreateRangeMapping(.)。它是不需要的,并且会再次失败,因为(0 - 无穷大)范围已分配给您的第一个分片。作为其操作的一部分,拆分操作将更改您的映射。
    4. 提交拆分操作。

    无论如何,请不要直接修改[__ShardManagement]表。它们是通过您从 Nuget 或拆分/合并工具提取的库的 API 进行维护的。

    以下是一些附加文档的提示:

    希望这有帮助。如果您仍然遇到问题,请通过 torsteng(at)microsoft(dot)com 离线联系我。

    谢谢,托斯顿

    关于c# - Azure 弹性秤 : Split-Merge Tutorial - Can't Split a Shard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278767/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com