sharding - 如何在不停机的情况下为 tarantool 数据库添加另一个分片到生产环境?
问题描述
我们在生产中使用 tarantool 数据库(使用 vshard 分片)。我们直接从 4 个分片开始。现在我们想在不停机的情况下将其增加到 6。但是,在再添加两个分片后,重新平衡器就会启动,它不允许读取/写入发生。有什么办法可以支持各种操作的再平衡?我们有能力增加手术时间。但这应该是成功的。将分片添加到 tarantool 的最佳实践是什么?
目前,我们能想到的唯一解决方案是进入维护模式并让重新平衡以尽可能短的时间完成!!!
解决方案
您不能写入当前正在传输的存储桶,但您不能写入其他存储桶(所以它不像整个分片被锁定)。
此外,您可以通过 - 使存储桶更小(增加 bucket_count) - 使重新平衡变慢以减少同时传输的存储桶(重新平衡器配置)来减轻影响。
假设你有 16384 个桶,你的数据集是 75GB。这意味着平均桶大小约为 5 Mb。如果您将 rebalancer_max_receiving 参数减少到 10,您将只有 10 个桶 (50Mb) 被同时传输(这使得他锁定写入)。
这样,重新平衡将非常慢,但是,鉴于您的客户端可以执行重试并且您的分片之间的网络足够快,“写锁定”效应应该完全被忽视。
推荐阅读
- python - 为什么 SymPy 不真正计算这样的积分?
- python - 在 Python 中格式化 JSON GET 结果
- php - php购物车会话不更新属性,只更新数量
- c++ - MFC - 带有可选复选框的 CListCtrl 行
- mongodb - 总是产生相同哈希的无序 2 字符串哈希函数
- html - 表单提交响应上的 CSS 显示/隐藏 div
- python - 无法使用 Python Selenium Chrome Ubuntu 20.04 下载任何内容
- c# - 将密码从前端应用程序传递到后端应用程序
- xcode - 如何将 swift 包添加到 TemplateInfo.plist?
- flutter - 定义通过单击外部关闭 AlertDialog 时的操作