一,架构及简介
Vitess 是一种 MySQL 水平扩展中间件,可用于部署、扩展和管理大型 MySQL 实例集群,用 Go 语言实现。
Vitess 源于 YouTube, 从 2011 年起已为 YouTube 管理了几千个 MySQL 结点。
Vitess 是云原生基金会 CNCF 毕业项目。
VTTablet :是一个位于 MySQL 数据库前面的代理服务器, Vitess 实现中每个 MySQL 实例前面都有一个 VTTablet 进程。VTTablet 可以分为 master, replica, rdonly 等类型。
VTGate :是一个轻型代理服务器,它接收客户端请求,将流量路由到正确的vttablet,并将合并的结果返回给客户端。
Vtctld:是一个 HTTP 服务器,允许您浏览存储在 Topology 中的信息。
Vtctl:是一个用于管理 Vitess 集群的命令行工具。
Topology:是一个存储元数据的拓扑服务,用于存储 Vitess 集群的分片副本等配置信息。
二,概念
Cell: 通常对应物理部署中的数据中心或者叫做 区域 Zone,每个 Cell 都有个本地的拓扑服务,其中包括这个Cell下所有的路由及vttablet信息;
Vitess可以优雅的处置Cell级别的网络故障,如果有其他的Cell故障并不会影响到当前Cell。
Keyspace: 键空间(数据库):键空间(Keyspace) 是一种逻辑数据库,相当于 MySQL 中的 Database 概念。
对于分片键空间(sharded), 一个键空间映射到多个 MySQL 数据库上;
对于未分片键空间(unsharded), 键空间直接映射到单个 MySQL 数据库。
Keyspace 可能包含一个或多个 Shards 分片,每个 Shard 包含一个或多个 Replica 副本,其中一个 Replica 会被选举为 master。
从应用的角度看,键空间就是一个单独的数据库,从键空间读数据就像从 MySQL 数据库读数据一样。
根据读操作的不同一致性要求,Vitess 可能从 master 节点读数据,也可能从 replica 副本上读取数据。
三,故障转移
1 查看当前主数据库
2 列出可用的mysql实例
3 将master实例排空
4 查看故障转移状态
四,版本对应关系及页面差异
V12.0版本界面
V15.0版本界面
V15版本架构
五,注意事项
- 中文文档不在维护