7

PlanetScale 云端 MySQL 数据库使用记录

 2 years ago
source link: https://einverne.github.io/post/2022/08/planetscale-mysql-service.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

PlanetScale 云端 MySQL 数据库使用记录

Posted on 08/16/2022 , Last modified on 08/17/2022 by Ein Verne | View revision history

[[PlanetScale]] 构建在 Vitess 之上。[[Vitess]] 是一个可以扩展的 MySQL 集群,集合了很多MySQL特性和NoSQL 的扩展能力。 Vitess 创建于 2010 年,主用用于解决 YouTube 团队面临的 MySQL 扩容问题。

Vitess 是一个分片的非 ACID SQL 数据库(ACID 是原子性、一致性、隔离性和持久性的缩写)。

在 MySQL 中,FOREIGN KEY 约束的实现方式会 影响在线 DDL

Vitess 通过分片方式扩展 MySQL 数据库,数据在水平方向分区,Vitess 根据分片将查询路由到适当的 MySQL 实例上。Vitess 的连接比 MySQL 轻,可以轻松支持数千个连接。

PlanetScale 就是一个运行在云上的 MySQL,有一个 Web 管理界面,还有一个 CLI 工具。

PlanetScale 对于入门的使用是免费的,它的免费套餐提供

  • 5 GB 存储
  • 1 billion row reads/mo
  • 10 million row writes/mo
  • 1 production branch
  • 1 development branch
  • Community support

超出此套餐的存储每 GB 收费 $2.50/mo ,1 billion row read 收费 $1/mo,而 1 million row written 收费 $1.5/mo。

如果有更多的资源使用,也可以 升级套餐

PlanetScale 令人心动的一个功能就是可以给数据库 拉分支 ,PlanetScale 允许用户像代码一样从主库中拉出一个一模一样结构的 development 或 staging 的数据库环境,可以在这个环境中开发,测试。所有的数据都是隔离的。

当完成开发之后,可以创建 deploy request,PlanetScale 会自动对比创建出差异的 Schema diff,然后开发者可以 review 需要部署生效的内容。同意通过之后 deploy 到线上库中。整个部署变更的过程不会产生停机时间。

不过需要注意的是,PlanetScale 为了实现扩容,舍弃了一些 MySQL 的特性,比如 PlanetScale 不支持 FOREIGN KEY1,并且也要求每一个表都有一个唯一且不为空的主键2

  • 可以使用 [[Checkly]] 监控数据库延迟
  • 可以使用 [[Datadog]] 更详细的记录分析数据库的状态

当然 PlanetScale 后台也提供了简单的监控,包括每秒读写。

related

  • [[Bytebase]] 是一个面向 DBA 和研发工程师的数据库 Schema change/migration 和版本控制工具。
  • [[MySQL InnoDB 存储引擎提供的在线 DDL]]

reference


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK