人们经常问我们:既然 Vitess 是开源的,为什么我还要使用 PlanetScale?当然,我可以自己运行它,对吧?使用 PlanetScale 能获得哪些额外的好处?在这篇文章中,我们会回答这些问题,并向你揭示更多信息。


PlanetScale 与 Vitess 的关系

首先,让我们定义一下 PlanetScale 与 Vitess 之间的关系。

Vitess 的历史

Vitess 于 2010 年由 YouTube 创建,用于扩展他们的 MySQL 实例,主要是为了解决他们在面对高写入负载和连接限制时所遭遇的问题。2015 年,Vitess 捐赠给 CNCF,并于 2018 年获得毕业项目的资格。从那时起,Vitess 被互联网上数百家最大的公司采用,用来扩展其 MySQL 集群。这些公司包括 Slack、Etsy、GitHub、HubSpot、Shopify、Square、Pinterest 等。

PlanetScale 对 Vitess 的支持

PlanetScale 成立于 2018 年,由来自 YouTube 的 Vitess 原创创始人创建。PlanetScale 是 Vitess 代码库的最大贡献者,其员工中约 75% 是 Vitess 的维护者。
我们创建 PlanetScale 的愿景一直是为了设计一个数据库平台——一个我们的团队在多年管理大规模网站时曾希望拥有的平台。其核心目标就是使创建和维护跨任何规模的数据库变得尽可能简单。当然,这需要确保底层技术能够处理扩展性,而 Vitess 是完美的选择。但使命并不仅仅止步于此。
PlanetScale 致力于让 Vitess 和 MySQL 更易于使用、操作和维护。为此,我们仅需点几下按钮,就能够轻松创建一个新的 Vitess 集群。此外,我们非常注重开发者体验,为用户引入了一些功能,比如数据库分支(database branching)、部署请求(deploy requests)以及执行在线模式变更功能等。


自行运行和维护 Vitess 所需的资源

一些刚开始实施 Vitess 的公司常常询问运行和维护 Vitess 集群需要哪些资源。PlanetScale 团队拥有管理在 Vitess 集群中运行的数千个 MySQL 实例的丰富经验——不仅限于 PlanetScale 内部,还包括员工在其他公司的经历。
在本节中,我将介绍运行和管理 Vitess 所需的成本、时间以及其他要求。此外,我还将分享一些来自其他公开 Vitess 用户的经验,以帮助你更好地了解 Vitess 实践中的应用情况。

实施所需时间

可以想象,实施 Vitess 所需的时间差异很大。在开始使用 Vitess 前,你通常需要进行大量的准备工作。你可以查看 Vitess 的MySQL 兼容性文档, 了解需要完成的这些准备工作。例如,我们常见存储过程和 CTE(通用表表达式)成为 Vitess 采用路上的障碍。尽管 Vitess 团队在逐步缩小与完全兼容之间的差距方面最近取得了显著进展,但仍建议你通过文档确保未在项目中广泛使用任何不受支持的 MySQL 特性。
完成了基础准备工作后,就可以进入实施阶段了。这通常包括识别需要分片的表(如果有), 规划分片方案、服务器的资源准备、映射初始资源分配、使用复制表等。接着,进行实际迁移,这同样可能需要较多时间,尤其当遇到问题时。


公司经验案例

Slack

Slack 团队撰写了一篇博客文章,分享了他们在实施和使用 Vitess 的经验。这是一篇非常精彩的文章,我高度推荐阅读。
简而言之,他们开始实施并完全迁移到 Vitess 的旅程始于 2017 年 7 月。直到 2020 年底,他们才完成了完整迁移。这三年的迁移过程中,他们集中大量资源和团队精力专注于这个项目,从原型开发到规划并完成迁移,还在此过程中为 Vitess 代码库贡献了一些改动。
比如,一开始他们决定构建一个原型,在生产环境中使用 Vitess 来运行一个小规模的功能模块。
我们选择构建一个原型,来演示数据可以从传统架构迁移到 Vitess,并验证 Vitess 能兑现它的承诺。当然,对于 Slack 这种规模的公司,采用一个新数据存储系统并非易事。这需要投入大量精力来设置种种新的基础架构。
作者详细描述了其中所经历的一些工作。在 PoC (概念验证) 阶段,Slack 重新设计了多项运营流程,此过程展示了 Vitess 的潜力,使其性能更加优秀,操作起来也更加简化。尽管这仅仅是一个起点,但这种信心促使他们做出继续投资 Vitess 的决策。
完整案例详情可阅读 Slack 技术博客

Square

Square 的团队撰写了一系列博客文章,描述了他们实现 Vitess 的过程。第一篇文章副标题定义了他们的总体旅程:
“拆解 Vitess 并重新组装它。”
正如文章开头提到的:
将 Vitess 引入现有的 MySQL 数据库并进行分片及后续扩展是一个巨大的挑战。
早在 2016 年,Square 的 Cash 产品快速增长,他们意识到需要快速找到解决方案,而分片 Vitess 成为了正确选择。
从底层到迁移到生产,Square 花费了无数时间处理生产中遇到的各种技术挑战,如分片事务、死锁问题、ACID 特性、分片管理等。


自托管 Vitess 的挑战

如你所见,即便你未达到 Slack 或 Square 的规模,实施 Vitess 依然是一项复杂且非轻松的任务。自托管意味着投入大量的时间、人力和资源,而如果你拥有一支有 Vitess 专业知识的团队来协助,将显得尤为重要。


PlanetScale 的服务不仅解决了上述问题,通过提供全面技术支持、优化查询、性能监控(如 PlanetScale Insights)、安全认证等功能以及 Vitess 版本和 MySQL 升级无中断支持,显著减轻了客户压力,为企业提供便捷的数据库管理基础设施和解决方案。



自托管的 Vitess 与由 PlanetScale 托管的 Vitess插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2025/09/14/vitess-planetscale-vitess/