- ClickHouse 的开发迭代速度很快,通常每年会发布 10 个以上的稳定版本。可选的发行版很多,因此这并不是一个容易做出的选择。
- 有些用户不想花时间判断哪个版本最适合自己的使用场景,而是希望直接参考别人的建议。
你推荐使用哪个 ClickHouse 版本?
- 预生产环境需要运行尽可能接近你计划在生产环境中运行的那组查询:
- 不要把它做成只读环境,只配一份静态数据。
- 不要把它做成只写环境,只复制数据却不生成一些典型报表。
- 不要用直接清空环境来代替应用 schema 迁移。
- 使用真实生产数据和查询的样本。尽量选择仍然具有代表性、并且能让
SELECT查询返回合理结果的样本。如果你的数据比较敏感,且内部政策不允许其离开生产环境,请使用脱敏处理。 - 确保预生产环境和生产环境一样,纳入你的监控和告警系统覆盖范围。
- 如果你的生产环境横跨多个 datacenter 或区域,也要让你的预生产环境保持一致。
- 如果你的生产环境使用了复制、分布式表和级联 materialized view 等复杂特性,请确保它们在预生产环境中的配置也尽量相似。
- 预生产环境究竟是使用与生产环境大致相同数量但规格更小的服务器或 VM,还是使用少得多但规格相同的服务器或 VM,这之间需要权衡。前一种方案可能捕获更多与网络相关的问题,而后一种则更容易管理。
- 定期针对新的 ClickHouse 发行版运行你的自动化测试。即使是那些被标记为
testing的 ClickHouse 发行版,你也可以这样做,但不建议继续推进后续步骤。 - 将通过测试的 ClickHouse 发行版部署到预生产环境,并检查所有流程是否都按预期运行。
- 将你发现的任何问题报告到 ClickHouse GitHub Issues。
- 如果没有发现重大问题,那么就可以安全地开始将该 ClickHouse 发行版部署到你的生产环境中。进一步投入渐进式发布自动化,并采用类似 canary releases 或 green-blue deployments 的方法,可能会进一步降低生产环境中出现问题的风险。
如何在 ClickHouse 发行版之间进行选择?
stablelts(长期支持)
stable是我们默认推荐的包类型。它们大致按月发布 (因此能以相对合理的延迟提供新功能) ,并且我们为最新的三个稳定版本提供诊断支持和 bug 修复回移。lts每年发布两次,自首次发布起支持一年。在以下情况下,你可能会更倾向于选择它,而不是stable:- 你们公司有内部政策,不允许频繁升级或使用非 LTS 软件。
- 你在某些次要产品中使用 ClickHouse,而这些产品要么不需要复杂的 ClickHouse 功能,要么没有足够的资源持续更新。
lts 是更合适的选择,但最终往往还是会转向 stable,因为某个对其产品很重要的新功能已经在近期发布。