Welcome to the "Learn Vitess" series, brought to you by PlanetScale. In this series, you'll learn everything you need to know to get started with Vitess.
Throughout, you'll learn more about what Vitess is, how it works, how to set up your own sharded and unsharded clusters, and how to run with Kubernetes. You'll also learn more about how PlanetScale uses Vitess to provide you with a highly-available, durable, and scalable database for any size organization.
Vitess has a long history of helping organizations improve and scale their MySQL database infrastructure. First created by software engineers at YouTube, Vitess has gone on to become a CNCF graduated projects and is currently in use by hundreds of large organizations, including GitHub, Etsy, Slack, Square, and many more. Vitess is a layer that sits on top of MySQL in your database infrastructure stack, and provides a number of key benefits for those working with MySQL:
- Built-in support for both vertical and horizontal sharding. This means that Vitess scales with you. It can be used for anything form small databases for an early-stage company to organizations with petabytes of data.
- Designed for high-availability applications. Vitess allows you to configure your MySQL instances with replication and manages automatic failover, giving you the ability to have near-zero downtime, making it the perfect database to use for applications requiring maximum uptime.
- Vitess is MySQL compatible out of the box. You can connect to a Vitess cluster using the same code and drivers you would for a regular MySQL instance. It also has nearly full compatibility with standard MySQL constructs.
These are just a few of the reasons your organization would want to choose Vitess as your go-to database platform.
This course covers the following:
- What is Vitess? — Here you'll learn more about what Vitess is, the typical process of scaling a MySQL database, and how Vitess can help.
- Build and run Vitess — This lesson will cover how to get up-and-running with Vitess. You'll see how to set up an EC2 instance to run Vitess on, how to get Vitess built from source, and how to run your first example cluster with 3 instances of MySQL.
- Components of a Vitess cluster — Vitess has many components that all play important roles. In this video, you'll learn more about the key components, including MySQL, VTTablet, VTGate, VTOrg, VTAdmin, VTCtl, and the ETCD topo server.
- Vertical Sharding — Vitess has built-in support for Vertical sharding, making it easy to spread the tables of your database out across multiple MySQL instances. This lesson will walk through an example of how to do this using a simple, three-table database.
- Horizontal Sharding — Horizontal sharding is a great solution when you have huge tables, that cannot easily fit on a single database instance. This video shows how to use a hash-based sharding strategy to spread data out across two shards.
- Vitess on Multiple Machines — All the lessons leading up to this ran Vitess clusters on a single computer. This lessons begins to show how you can spread out a Vitess cluster across multiple cloud instances, which is what you'd want to do in a production environment.
- Sharding on Multiple Machines — In this lesson, you'll see how we can spread out the components across nine EC2 instances for a sharded database environment. We'll see how we can achieve 60k QPS in this setup.
- Vitess on Kubernetes — PlanetScale provides an open-source operator to use Vitess on Kubernetes. This lesson will walk through running a small example cluster using Docker, Kubernetes and Minikube.
- Vitess at PlanetScale — Every PlanetScale database is powered by Vitess. When you use PlanetScale for your database, you get all of the benefits of Vitess plus many additional features we have built on top of it. This video provides on overview of some of these features that increase development velocity and make working with your database a breeze.