在生产环境中使用哪个 ClickHouse 版本?
首先,我们来讨论一下人们首先提出这个问题的原因。主要有两个原因
- ClickHouse 的开发速度非常快,通常每年有 10 多个稳定版本发布。这使得有大量的版本可供选择,选择起来并非易事。
- 有些用户希望避免花费时间弄清楚哪个版本最适合他们的用例,而只是遵循别人的建议。
第二个原因更为根本,所以我们将从这个原因开始,然后再回到浏览各种 ClickHouse 版本。
您推荐哪个 ClickHouse 版本?
雇佣顾问或信任一些知名专家来摆脱对生产环境的责任是很诱人的。您安装了别人推荐的某个特定 ClickHouse 版本;如果出现问题 - 这不是您的错,是别人的错。这种推理方式是一个很大的陷阱。没有人比您更了解您公司生产环境的状况。
那么,您如何正确选择要升级到的 ClickHouse 版本?或者您如何选择您的第一个 ClickHouse 版本?首先,您需要投入资金来建立一个真实的预生产环境。在理想情况下,它可以是一个完全相同的影子副本,但这通常很昂贵。
以下是一些关键点,可以在成本不高的情况下在预生产环境中获得合理的保真度
- 预生产环境需要运行尽可能接近您计划在生产环境中运行的查询集
- 不要将其设置为只读并包含一些冻结数据。
- 不要将其设置为仅写入,仅仅复制数据而不构建一些典型的报告。
- 不要擦除它,而是应用模式迁移。
- 使用真实生产数据和查询的样本。尝试选择一个仍然具有代表性的样本,并使
SELECT
查询返回合理的结果。如果您的数据敏感且内部策略不允许其离开生产环境,请使用混淆处理。 - 确保预生产环境像您的生产环境一样受到您的监控和警报软件的覆盖。
- 如果您的生产环境跨越多个数据中心或区域,请使您的预生产环境也这样做。
- 如果您的生产环境使用诸如复制、分布式表和级联物化视图等复杂功能,请确保它们在预生产环境中配置相似。
- 在预生产环境中使用与生产环境大致相同数量但规模较小的服务器或虚拟机,或者使用少得多但规模相同的服务器或虚拟机之间存在权衡。第一种选择可能会捕获额外的网络相关问题,而后者更易于管理。
第二个需要投入的领域是自动化测试基础设施。不要假设某种查询成功执行一次后,它将永远继续这样做。可以有一些模拟 ClickHouse 的单元测试,但请确保您的产品有一套合理的自动化测试,这些测试针对真实的 ClickHouse 运行,并检查所有重要的用例是否仍然按预期工作。
更进一步的做法可能是将这些自动化测试贡献给 ClickHouse 的开源测试基础设施,这些基础设施在其日常开发中持续使用。学习如何运行它以及如何将您的测试适应这个框架肯定会花费一些额外的时间和精力,但通过确保 ClickHouse 版本在宣布稳定时已经针对它们进行了测试,而不是在事后反复浪费时间报告问题,然后等待错误修复被实现、反向移植和发布,这将得到回报。一些公司甚至通过将其用作内部政策(在 Google 称为 Beyonce's Rule)来对基础设施进行此类测试贡献。
当您拥有预生产环境和测试基础设施时,选择最佳版本就很简单了
- 例行针对新的 ClickHouse 版本运行您的自动化测试。即使对于标记为 testing 的 ClickHouse 版本,您也可以这样做,但不建议使用它们进行后续步骤。
- 将通过测试的 ClickHouse 版本部署到预生产环境,并检查所有进程是否按预期运行。
- 将您发现的任何问题报告给 ClickHouse GitHub Issues。
- 如果没有重大问题,那么开始将 ClickHouse 版本部署到您的生产环境应该是安全的。投资于逐步发布自动化,实施类似于金丝雀发布或蓝绿部署的方法可能会进一步降低生产环境中出现问题的风险。
正如您可能已经注意到的,上述方法中没有任何特定于 ClickHouse 的内容 - 如果人们认真对待他们的生产环境,他们会对他们依赖的任何基础设施都这样做。
如何在 ClickHouse 版本之间选择?
如果您查看 ClickHouse 软件包存储库的内容,您将看到两种软件包
stable
lts
(长期支持)
以下是如何在它们之间进行选择的一些指导
- stable 是我们默认推荐的软件包类型。它们大约每月发布一次(因此以合理的延迟提供新功能),并且最新的三个稳定版本在诊断和错误修复的反向移植方面得到支持。
- lts 每年发布两次,并在首次发布后一年内获得支持。在以下情况下,您可能更喜欢它们而不是 stable
- 您的公司有一些内部政策,不允许频繁升级或使用非 LTS 软件。
- 您在某些辅助产品中使用 ClickHouse,这些产品要么不需要任何复杂的 ClickHouse 功能,要么没有足够的资源来保持更新。
许多最初认为 lts 是正确选择的团队,由于某些对其产品重要的新功能,最终还是切换到了 stable。
升级 ClickHouse 时还需要记住一件事:我们始终关注跨版本的兼容性,但有时保持兼容性并不合理,并且一些细微的细节可能会发生变化。因此,请务必在升级前查看更新日志,以查看是否有关于向后不兼容更改的说明。