SlideShare a Scribd company logo
Introduction to Vitess
on Kubernetes for
MySQL
Alkin Tezuysal - Sr. Technical Manager, Percona
Sugu Sougoumarane - CTO/Co-Founder, PlanetScale
2020 Webinar Series - May 11th 2020
© 2020 Percona
Who are we?
Sr. Technical Manager at Percona
Open Source Database Evangelist
Global Database Operations Expert
Inspiring Technical and Strategic
Leader
Creative Team Builder
Speaker, Mentor, and Coach
Co-creator of Vitess, CTO at
PlanetScale.
Scalability at YouTube, PayPal in
the early days.
Argues about distributed systems
and consensus algorithms.
Occasionally blogs at
ssougou.blogspot.com.
2
Alkin Tezuysal - @ask_dba
Born to Sail, Forced
to Work
Sugu Sougoumarane - @ssougou
Storage Geek
@@ask_dba, @ssougou
© 2020 Percona
A Database
Clustering
System for
Horizontal
Scaling of
MySQL
3
@@ask_dba, @ssougou
© 2020 Percona
Introduction to
Vitess
4
@@ask_dba, @ssougou
© 2020 Percona
Vitess in CNCF
(Cloud Native
Computing
Foundation)
5
@@ask_dba, @ssougou
© 2020 Percona
True
Multi-Cloud
Clusters for
PlanetScaleDB
6
@@ask_dba, @ssougou
© 2020 Percona
Kubernetes on
Google Cloud
(GKE)
● Google Cloud's load-balancing for Compute Engine instances
● Node pools to designate subsets of nodes within a cluster for
additional flexibility
● Automatic scaling of your cluster's node instance count
● Automatic upgrades for your cluster's node software
● Node auto-repair to maintain node health and availability
● Logging and monitoring with Google Cloud's operations suite for
visibility into your cluster
7
@@ask_dba, @ssougou
© 2020 Percona
Installation and
Configuration
● Vitess on Google Cloud Platform Prerequisites
○ Google Kubernetes Engine (GKE)
○ Cluster with 7 nodes
○ K8s Version 1.15.11-gke.1
○ Helm Version 3
● Requirements
○ RBR
○ GTID
○ MySQL 5.6+ MariaDB 10.x+
8
@@ask_dba, @ssougou
© 2020 Percona
Create Vitess
Cluster GKE
9
@@ask_dba, @ssougou
© 2020 Percona
Setup Basics
10
@@ask_dba, @ssougou
© 2020 Percona
Configure
Cluster
11
@@ask_dba, @ssougou
© 2020 Percona
Connect to K8s
Cluster
12
@@ask_dba, @ssougou
© 2020 Percona
Download and
install Helm 3.X
$ wget https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz
$ tar xvfz helm-v3.1.2-linux-amd64.tar.gz
$ sudo cp linux-amd64/helm /usr/local/bin/helm
$ go get vitess.io/vitess/go/cmd/vtctlclient
$ git clone git@github.com:vitessio/vitess.git
$ cd vitess/examples/helm
13
@@ask_dba, @ssougou
© 2020 Percona
Install Vitess
$ helm install vitess ../../helm/vitess -f 101_initial_cluster.yaml
NAME: vitess
LAST DEPLOYED: Thu May 7 13:55:49 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Release name: vitess
To access administrative web pages, start a proxy with:
kubectl proxy --port=8001
Then use the following URLs:
vtctld:
http://localhost:8001/api/v1/namespaces/default/services/vtctld:web/proxy/app/
vtgate:
http://localhost:8001/api/v1/namespaces/default/services/vtgate-zone1:web/proxy/
14
@@ask_dba, @ssougou
© 2020 Percona
Run Proxy and
access to Web
Portal(s)
To access administrative web pages, start a proxy with:
kubectl proxy --port=8001
Then use the following URLs:
vtctld:
http://localhost:8001/api/v1/namespaces/default/services/vtctld:web/proxy/app/
vtgate:
http://localhost:8001/api/v1/namespaces/default/services/vtgate-zone1:web/proxy/
15
@@ask_dba, @ssougou
© 2020 Percona
Vitess Control
Panel
16
@@ask_dba, @ssougou
© 2020 Percona
vtgate status
dashboard
17
@@ask_dba, @ssougou
© 2020 Percona
kubectl status
$ kubectl get pods,jobs
NAME READY STATUS RESTARTS AGE
pod/commerce-apply-schema-initial-z27sm 0/1 Completed 0 14m
pod/commerce-apply-vschema-initial-292nc 0/1 Completed 0 14m
pod/vtctld-c56d6c788-t9xlc 1/1 Running 0 14m
pod/vtgate-zone1-7d4957f6-49xsr 1/1 Running 0 14m
pod/zone1-commerce-0-init-shard-master-69fbc 0/1 Completed 0 14m
pod/zone1-commerce-0-replica-0 6/6 Running 0 14m
pod/zone1-commerce-0-replica-1 6/6 Running 0 14m
pod/zone1-commerce-0-replica-2 6/6 Running 0 14m
NAME COMPLETIONS DURATION AGE
job.batch/commerce-apply-schema-initial 1/1 59s 14m
job.batch/commerce-apply-vschema-initial 1/1 62s 14m
job.batch/zone1-commerce-0-init-shard-master 1/1 57s 14m
18
@@ask_dba, @ssougou
© 2020 Percona
Port-forwarding
kubectl port-forward service/vtctld 15000 15999 &
process_id1=$!
kubectl port-forward service/vtgate-zone1 15306:3306 15001 &
process_id2=$!
sleep 2
echo "You may point your browser to http://localhost:15000 for vtctld."
echo "You may point your browser to http://localhost:15001 for vtgate, use the
following aliases as shortcuts:"
echo 'alias vtctlclient="vtctlclient -server=localhost:15999"'
echo 'alias mysql="mysql -h 127.0.0.1 -P 15306"'
echo "Hit Ctrl-C to stop the port forwards"
wait $process_id1
wait $process_id2
19
@@ask_dba, @ssougou
© 2020 Percona
Connect to
MySQL
$ mysql
Handling connection for 15306
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7
Server version: 5.7.9-Vitess Percona Server (GPL), Release 29, Revision 11ad961
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> show databases;
+-----------+
| Databases |
+-----------+
| commerce |
+-----------+
1 row in set (0.11 sec)
20
@@ask_dba, @ssougou
© 2020 Percona
Creating a
Keyspace
mysql> show tables;
+--------------------+
| Tables_in_commerce |
+--------------------+
| corder |
| customer |
| product |
+--------------------+
3 rows in set (0.11 sec)
$ mysql < ./vitess/examples/common/insert_commerce_data.sql
21
@@ask_dba, @ssougou
© 2020 Percona
Verify data
mysql> select * from corder; select * from customer; select * from product;
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 1 | 1 | SKU-1001 | 100 |
| 2 | 2 | SKU-1002 | 30 |
| 3 | 3 | SKU-1002 | 30 |
| 4 | 4 | SKU-1002 | 30 |
| 5 | 5 | SKU-1002 | 30 |
+----------+-------------+----------+-------+
5 rows in set (0.11 sec)
22
@@ask_dba, @ssougou
© 2020 Percona
Verify data
+-------------+--------------------+
| customer_id | email |
+-------------+--------------------+
| 1 | alice@domain.com |
| 2 | bob@domain.com |
| 3 | charlie@domain.com |
| 4 | dan@domain.com |
| 5 | eve@domain.com |
+-------------+--------------------+
5 rows in set (0.11 sec)
+----------+-------------+-------+
| sku | description | price |
+----------+-------------+-------+
| SKU-1001 | Monitor | 100 |
| SKU-1002 | Keyboard | 30 |
+----------+-------------+-------+
2 rows in set (0.11 sec)
23
@@ask_dba, @ssougou
© 2020 Percona
Similarities and
Differences
Similarities
● If Vitess was treated as MySQL Server, a Keyspace would be a
database.
● A Keyspace can have one or many shards
● Each Shard is one MySQL cluster: master+replicas
Differences
● If a table name is unique across all keyspaces, it can be accessed
without the qualifying it with db name
● You can “use `keyspace@master`” or “use `keyspace@replica`”
● Bypass shard routing with “use `keyspace:-80@master`”
24
@@ask_dba, @ssougou
© 2020 Percona
Moving Tables
Use case
Customer load is increasing, MySQL is reaching its limits. We want
to move the customer and corder tables to a separate MySQL
cluster, aka “unsharded keyspace”.
25
@@ask_dba, @ssougou
© 2020 Percona
Create customer
keyspace
keyspaces:
- name: "commerce"
shards:
- name: "0"
tablets:
- type: "replica"
vttablet:
replicas: 3
- name: "customer"
shards:
- name: "0"
tablets:
- type: "replica"
vttablet:
replicas: 3
26
@@ask_dba, @ssougou
© 2020 Percona
Bring up
customer
keyspace
$ helm upgrade vitess ../../helm/vitess/ -f 201_customer_tablets.yaml
Release "vitess" has been upgraded. Happy Helming!
NAME: vitess
LAST DEPLOYED: Sun May 10 14:21:14 2020
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
Release name: vitess
To access administrative web pages, start a proxy with:
kubectl proxy --port=8001
Then use the following URLs:
vtctld:
http://localhost:8001/api/v1/namespaces/default/services/vtctld:web/proxy/app/
vtgate:
http://localhost:8001/api/v1/namespaces/default/services/vtgate-zone1:web/proxy/
a
27
@@ask_dba, @ssougou
© 2020 Percona
Verify upgrade
zone1-customer-0-replica-0 2/2 Running 0 108s
zone1-customer-0-replica-1 2/2 Running 0 108s
zone1-customer-0-replica-2 2/2 Running 0 108s
mysql> show databases;
+-----------+
| Databases |
+-----------+
| commerce |
| customer |
+-----------+
2 rows in set (0.04 sec)
28
@@ask_dba, @ssougou
© 2020 Percona
Initiate move
tables
$ vtctlclient MoveTables -workflow=commerce2customer commerce customer
'{"customer":{}, "corder":{}}'
29
@@ask_dba, @ssougou
© 2020 Percona
Sanity check
mysql> use commerce:0
mysql> select count(*) from corder;
+----------+
| count(*) |
+----------+
| 5 |
+----------+
mysql> use customer:0
mysql> select count(*) from corder;
+----------+
| count(*) |
+----------+
| 5 |
+----------+
30
@@ask_dba, @ssougou
© 2020 Percona
VDiff
~/...vitess/examples/helm> vtctlclient VDiff customer.commerce2customer
Summary for corder: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0
ExtraRowsSource:0 ExtraRowsTarget:0}
Summary for customer: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0
ExtraRowsSource:0 ExtraRowsTarget:0}
31
@@ask_dba, @ssougou
© 2020 Percona
Switch Traffic
$ vtctlclient SwitchReads -tablet_type=rdonly customer.commerce2customer
$ vtctlclient SwitchReads -tablet_type=replica customer.commerce2customer
$ vtctlclient SwitchWrites customer.commerce2customer
32
@@ask_dba, @ssougou
© 2020 Percona
Clean-up $ vtctlclient DropSources customer.commerce2customer
33
@@ask_dba, @ssougou
© 2020 Percona
Reshard
Use case
Traffic has continued to grow, but the corder table is getting too big
to fit in a single database.
There is a relationship between corder and customer. It will be
beneficial to co-locate every orders with their customer rows.
Auto-inc won’t work. Solution: Vitess Sequences.
34
@@ask_dba, @ssougou
© 2020 Percona
Creating
sequences
301_customer_sharded.yaml (commerce schema)
create table customer_seq(id int, next_id bigint, cache bigint, primary key(id))
comment 'vitess_sequence';
insert into customer_seq(id, next_id, cache) values(0, 1000, 100);
create table order_seq(id int, next_id bigint, cache bigint, primary key(id)) comment
'vitess_sequence';
insert into order_seq(id, next_id, cache) values(0, 1000, 100);
35
@@ask_dba, @ssougou
© 2020 Percona
Creating
sequences
301_customer_sharded.yaml (customer VSchema)
{
"tables": {
"customer_seq": {
"type": "sequence"
},
"order_seq": {
"type": "sequence"
},
"product": {}
}
}
36
@@ask_dba, @ssougou
© 2020 Percona
301_customer_sharded.yaml (commerce
VSchema)
{
"sharded": true,
"vindexes": {
"hash": {
"type": "hash"
}
},
"tables": {
"customer": {
"column_vindexes": [
{
"column": "customer_id",
...
"corder": {
"column_vindexes": [
{
"column": "customer_id",
"name": "hash"
}
],
"auto_increment": {
"column": "order_id",
"sequence": "order_seq"
}
}
}
}
Primary
Vindexes, aka
Sharding Keys
37
@@ask_dba, @ssougou
© 2020 Percona
Apply Changes $ helm upgrade vitess ../../helm/vitess/ -f 301_customer_sharded.yaml
38
@@ask_dba, @ssougou
© 2020 Percona
- name: "customer"
shards:
- name: "0"
tablets:
- type: "replica"
vttablet:
replicas: 3
- name: "-80"
tablets:
- type: "replica"
vttablet:
replicas: 3
copySchema:
source: "customer/0"
- name: "80-"
tablets:
- type: "replica"
vttablet:
replicas: 3
copySchema:
source: "customer/0"
Create Target
Shards
39
@@ask_dba, @ssougou
© 2020 Percona
Apply Changes $ helm upgrade vitess ../../helm/vitess/ -f 302_new_shards.yaml
40
@@ask_dba, @ssougou
© 2020 Percona
Verify cluster
zone1-customer-80-x-replica-0 2/2 Running 0 115s
zone1-customer-80-x-replica-1 2/2 Running 0 115s
zone1-customer-80-x-replica-2 2/2 Running 0 115s
zone1-customer-x-80-init-shard-master-6zhhn 0/1 Completed 0 114s
zone1-customer-x-80-replica-0 2/2 Running 0 114s
zone1-customer-x-80-replica-1 2/2 Running 0 114s
zone1-customer-x-80-replica-2 2/2 Running 0 114s
41
@@ask_dba, @ssougou
© 2020 Percona
Initiate
Resharding
$ vtctlclient Reshard customer.cust2cust '0' '-80,80-'
42
@@ask_dba, @ssougou
© 2020 Percona
mysql> use customer:0
mysql> select count(*) from corder;
+----------+
| count(*) |
+----------+
| 5 |
+----------+
mysql> use customer:-80
mysql> select count(*) from corder;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
mysql> use customer:80-
mysql> select count(*) from corder;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
Sanity Check
43
@@ask_dba, @ssougou
© 2020 Percona
VDiff
~/...vitess/examples/helm> vtctlclient VDiff customer.cust2cust
Summary for corder: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0
ExtraRowsSource:0 ExtraRowsTarget:0}
Summary for customer: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0
ExtraRowsSource:0 ExtraRowsTarget:0}
44
@@ask_dba, @ssougou
© 2020 Percona
Switch over
$ vtctlclient SwitchReads -tablet_type=rdonly customer.cust2cust
$ vtctlclient SwitchReads -tablet_type=replica customer.cust2cust
$ vtctlclient SwitchWrites customer.cust2cust
45
@@ask_dba, @ssougou
© 2020 Percona
Down Shard 0
$ helm upgrade vitess ../../helm/vitess/ -f 306_down_shard_0.yaml
$ vtctlclient DeleteShard -recursive customer/0
46
@@ask_dba, @ssougou
© 2020 Percona
Tear-down
Cluster
$ helm delete vitess
$ kubectl delete pvc -l "app=vitess"
$ kubectl delete vitesstoponodes --all
47
@@ask_dba, @ssougou
© 2020 Percona
Q&A
48
@@ask_dba, @ssougou
@ 2020 Percona
Introduction to Vitess on Kubernetes for MySQL - Part I of III
Vitess.io
PlanetScale
Operating Vitess – Square
Cloud Native Computing Foundation: Home Page
CNCF Cloud Native Interactive Landscape
PlanetScaleDB delivers true multi-cloud, multi-region clusters on AWS, GCP, and Azure - Blog
Vitess Demo
References
49

More Related Content

What's hot

How to shard MariaDB like a pro - FOSDEM 2021
How to shard MariaDB like a pro  - FOSDEM 2021How to shard MariaDB like a pro  - FOSDEM 2021
How to shard MariaDB like a pro - FOSDEM 2021
Alkin Tezuysal
 
KubeCon_NA_2021
KubeCon_NA_2021KubeCon_NA_2021
KubeCon_NA_2021
Alkin Tezuysal
 
Myrocks in the wild wild west! FOSDEM 2020
Myrocks in the wild wild west! FOSDEM 2020Myrocks in the wild wild west! FOSDEM 2020
Myrocks in the wild wild west! FOSDEM 2020
Alkin Tezuysal
 
Vitess - Data on Kubernetes
Vitess -  Data on Kubernetes  Vitess -  Data on Kubernetes
Vitess - Data on Kubernetes
Alkin Tezuysal
 
Securing your database servers from external attacks
Securing your database servers from external attacksSecuring your database servers from external attacks
Securing your database servers from external attacks
Alkin Tezuysal
 
Mysql ecosystem in 2019
Mysql ecosystem in 2019Mysql ecosystem in 2019
Mysql ecosystem in 2019
Alkin Tezuysal
 
Serverless
ServerlessServerless
Serverless
Alkin Tezuysal
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1
Ivan Ma
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failures
Colin Charles
 
MySQL features missing in MariaDB Server
MySQL features missing in MariaDB ServerMySQL features missing in MariaDB Server
MySQL features missing in MariaDB Server
Colin Charles
 
Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015
Colin Charles
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server data
Colin Charles
 
High Performance Drupal with MariaDB
High Performance Drupal with MariaDBHigh Performance Drupal with MariaDB
High Performance Drupal with MariaDB
MariaDB Corporation
 
Webseminar: MariaDB Enterprise und MariaDB Enterprise Cluster
Webseminar: MariaDB Enterprise und MariaDB Enterprise ClusterWebseminar: MariaDB Enterprise und MariaDB Enterprise Cluster
Webseminar: MariaDB Enterprise und MariaDB Enterprise ClusterMariaDB Corporation
 
Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.
Mydbops
 
Mysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql FabricMysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp
 
Cool MariaDB Plugins
Cool MariaDB Plugins Cool MariaDB Plugins
Cool MariaDB Plugins
Colin Charles
 
The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016
Colin Charles
 
MariaDB 10.1 what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
MariaDB 10.1   what's new and what's coming in 10.2 - Tokyo MariaDB MeetupMariaDB 10.1   what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
MariaDB 10.1 what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
Colin Charles
 
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
Colin Charles
 

What's hot (20)

How to shard MariaDB like a pro - FOSDEM 2021
How to shard MariaDB like a pro  - FOSDEM 2021How to shard MariaDB like a pro  - FOSDEM 2021
How to shard MariaDB like a pro - FOSDEM 2021
 
KubeCon_NA_2021
KubeCon_NA_2021KubeCon_NA_2021
KubeCon_NA_2021
 
Myrocks in the wild wild west! FOSDEM 2020
Myrocks in the wild wild west! FOSDEM 2020Myrocks in the wild wild west! FOSDEM 2020
Myrocks in the wild wild west! FOSDEM 2020
 
Vitess - Data on Kubernetes
Vitess -  Data on Kubernetes  Vitess -  Data on Kubernetes
Vitess - Data on Kubernetes
 
Securing your database servers from external attacks
Securing your database servers from external attacksSecuring your database servers from external attacks
Securing your database servers from external attacks
 
Mysql ecosystem in 2019
Mysql ecosystem in 2019Mysql ecosystem in 2019
Mysql ecosystem in 2019
 
Serverless
ServerlessServerless
Serverless
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failures
 
MySQL features missing in MariaDB Server
MySQL features missing in MariaDB ServerMySQL features missing in MariaDB Server
MySQL features missing in MariaDB Server
 
Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server data
 
High Performance Drupal with MariaDB
High Performance Drupal with MariaDBHigh Performance Drupal with MariaDB
High Performance Drupal with MariaDB
 
Webseminar: MariaDB Enterprise und MariaDB Enterprise Cluster
Webseminar: MariaDB Enterprise und MariaDB Enterprise ClusterWebseminar: MariaDB Enterprise und MariaDB Enterprise Cluster
Webseminar: MariaDB Enterprise und MariaDB Enterprise Cluster
 
Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.
 
Mysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql FabricMysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql Fabric
 
Cool MariaDB Plugins
Cool MariaDB Plugins Cool MariaDB Plugins
Cool MariaDB Plugins
 
The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016
 
MariaDB 10.1 what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
MariaDB 10.1   what's new and what's coming in 10.2 - Tokyo MariaDB MeetupMariaDB 10.1   what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
MariaDB 10.1 what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
 
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
 

Similar to Introduction to Vitess on Kubernetes for MySQL - Webinar

Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
Olivier DASINI
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New Features
Dave Stokes
 
MySQL 8.0.18 - New Features Summary
MySQL 8.0.18 - New Features SummaryMySQL 8.0.18 - New Features Summary
MySQL 8.0.18 - New Features Summary
Olivier DASINI
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
LibbySchulze
 
SharePoint 2010 Virtualisation - SharePoint Saturday UK
SharePoint 2010 Virtualisation - SharePoint Saturday UKSharePoint 2010 Virtualisation - SharePoint Saturday UK
SharePoint 2010 Virtualisation - SharePoint Saturday UKMichael Noel
 
Fast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
Fast Insight from Fast Data: Integrating ClickHouse and Apache KafkaFast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
Fast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
Altinity Ltd
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
Miguel Araújo
 
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean WinnCouch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Trevor Roberts Jr.
 
PartnerSkillUp_Enable a Streaming CDC Solution
PartnerSkillUp_Enable a Streaming CDC SolutionPartnerSkillUp_Enable a Streaming CDC Solution
PartnerSkillUp_Enable a Streaming CDC Solution
Timothy Spann
 
Percona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLPercona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQL
Marcelo Altmann
 
SharePoint 2010 Virtualization - SharePoint Saturday L.A.
SharePoint 2010 Virtualization - SharePoint Saturday L.A.SharePoint 2010 Virtualization - SharePoint Saturday L.A.
SharePoint 2010 Virtualization - SharePoint Saturday L.A.Michael Noel
 
SharePoint 2010 Virtualization - Norway SharePoint User Group
SharePoint 2010 Virtualization - Norway SharePoint User GroupSharePoint 2010 Virtualization - Norway SharePoint User Group
SharePoint 2010 Virtualization - Norway SharePoint User GroupMichael Noel
 
Minikube – get Connections in the smalles possible setup
Minikube – get Connections in the smalles possible setupMinikube – get Connections in the smalles possible setup
Minikube – get Connections in the smalles possible setup
Martin Schmidt
 
CloudStack Collab Conference 2015 Run CloudStack in Docker
CloudStack Collab Conference 2015 Run CloudStack in DockerCloudStack Collab Conference 2015 Run CloudStack in Docker
CloudStack Collab Conference 2015 Run CloudStack in Docker
CloudOps2005
 
CCCEU15 run cloudstack in docker
CCCEU15 run cloudstack in dockerCCCEU15 run cloudstack in docker
CCCEU15 run cloudstack in docker
Pierre-Luc Dion
 
Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01
Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01
Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01Accenture
 
High available BizTalk infrastructure on Azure IaaS
High available BizTalk infrastructure on Azure IaaSHigh available BizTalk infrastructure on Azure IaaS
High available BizTalk infrastructure on Azure IaaS
BizTalk360
 
vBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
vBACD July 2012 - Deploying Private PaaS with ActiveState StackatovBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
vBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
CloudStack - Open Source Cloud Computing Project
 
Curso de MySQL 5.7
Curso de MySQL 5.7Curso de MySQL 5.7
Curso de MySQL 5.7
Eduardo Legatti
 
Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...
Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...
Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...
Amazon Web Services
 

Similar to Introduction to Vitess on Kubernetes for MySQL - Webinar (20)

Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New Features
 
MySQL 8.0.18 - New Features Summary
MySQL 8.0.18 - New Features SummaryMySQL 8.0.18 - New Features Summary
MySQL 8.0.18 - New Features Summary
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
 
SharePoint 2010 Virtualisation - SharePoint Saturday UK
SharePoint 2010 Virtualisation - SharePoint Saturday UKSharePoint 2010 Virtualisation - SharePoint Saturday UK
SharePoint 2010 Virtualisation - SharePoint Saturday UK
 
Fast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
Fast Insight from Fast Data: Integrating ClickHouse and Apache KafkaFast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
Fast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
 
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean WinnCouch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
 
PartnerSkillUp_Enable a Streaming CDC Solution
PartnerSkillUp_Enable a Streaming CDC SolutionPartnerSkillUp_Enable a Streaming CDC Solution
PartnerSkillUp_Enable a Streaming CDC Solution
 
Percona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLPercona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQL
 
SharePoint 2010 Virtualization - SharePoint Saturday L.A.
SharePoint 2010 Virtualization - SharePoint Saturday L.A.SharePoint 2010 Virtualization - SharePoint Saturday L.A.
SharePoint 2010 Virtualization - SharePoint Saturday L.A.
 
SharePoint 2010 Virtualization - Norway SharePoint User Group
SharePoint 2010 Virtualization - Norway SharePoint User GroupSharePoint 2010 Virtualization - Norway SharePoint User Group
SharePoint 2010 Virtualization - Norway SharePoint User Group
 
Minikube – get Connections in the smalles possible setup
Minikube – get Connections in the smalles possible setupMinikube – get Connections in the smalles possible setup
Minikube – get Connections in the smalles possible setup
 
CloudStack Collab Conference 2015 Run CloudStack in Docker
CloudStack Collab Conference 2015 Run CloudStack in DockerCloudStack Collab Conference 2015 Run CloudStack in Docker
CloudStack Collab Conference 2015 Run CloudStack in Docker
 
CCCEU15 run cloudstack in docker
CCCEU15 run cloudstack in dockerCCCEU15 run cloudstack in docker
CCCEU15 run cloudstack in docker
 
Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01
Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01
Mueller bacdjuly2012privatepaaswithstackato-120712154134-phpapp01
 
High available BizTalk infrastructure on Azure IaaS
High available BizTalk infrastructure on Azure IaaSHigh available BizTalk infrastructure on Azure IaaS
High available BizTalk infrastructure on Azure IaaS
 
vBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
vBACD July 2012 - Deploying Private PaaS with ActiveState StackatovBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
vBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
 
Curso de MySQL 5.7
Curso de MySQL 5.7Curso de MySQL 5.7
Curso de MySQL 5.7
 
Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...
Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...
Automatically scaling your Kubernetes workloads - SVC210-S - Santa Clara AWS ...
 

More from Alkin Tezuysal

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Alkin Tezuysal
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Alkin Tezuysal
 
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdfFOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
Alkin Tezuysal
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
Alkin Tezuysal
 
How OLTP to OLAP Archival Demystified
How OLTP to OLAP Archival DemystifiedHow OLTP to OLAP Archival Demystified
How OLTP to OLAP Archival Demystified
Alkin Tezuysal
 
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
Alkin Tezuysal
 
My first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdfMy first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdf
Alkin Tezuysal
 
When is MyRocks good?
When is MyRocks good? When is MyRocks good?
When is MyRocks good?
Alkin Tezuysal
 
PXC (Xtradb) Failure and Recovery
PXC (Xtradb) Failure and RecoveryPXC (Xtradb) Failure and Recovery
PXC (Xtradb) Failure and Recovery
Alkin Tezuysal
 
Mysql query optimization best practices and indexing
Mysql query optimization  best practices and indexingMysql query optimization  best practices and indexing
Mysql query optimization best practices and indexing
Alkin Tezuysal
 
Proxysql use case scenarios hl++ 2017
Proxysql use case scenarios    hl++ 2017 Proxysql use case scenarios    hl++ 2017
Proxysql use case scenarios hl++ 2017
Alkin Tezuysal
 
Mysql ecosystem in 2018
Mysql ecosystem in 2018Mysql ecosystem in 2018
Mysql ecosystem in 2018
Alkin Tezuysal
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17
Alkin Tezuysal
 
Proxysql use case scenarios plam 2016
Proxysql use case scenarios    plam 2016Proxysql use case scenarios    plam 2016
Proxysql use case scenarios plam 2016
Alkin Tezuysal
 
Building DBA as a Service (Global) Team - DBAaaST
Building DBA as a Service (Global) Team - DBAaaSTBuilding DBA as a Service (Global) Team - DBAaaST
Building DBA as a Service (Global) Team - DBAaaST
Alkin Tezuysal
 

More from Alkin Tezuysal (15)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
 
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdfFOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
 
How OLTP to OLAP Archival Demystified
How OLTP to OLAP Archival DemystifiedHow OLTP to OLAP Archival Demystified
How OLTP to OLAP Archival Demystified
 
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
 
My first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdfMy first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdf
 
When is MyRocks good?
When is MyRocks good? When is MyRocks good?
When is MyRocks good?
 
PXC (Xtradb) Failure and Recovery
PXC (Xtradb) Failure and RecoveryPXC (Xtradb) Failure and Recovery
PXC (Xtradb) Failure and Recovery
 
Mysql query optimization best practices and indexing
Mysql query optimization  best practices and indexingMysql query optimization  best practices and indexing
Mysql query optimization best practices and indexing
 
Proxysql use case scenarios hl++ 2017
Proxysql use case scenarios    hl++ 2017 Proxysql use case scenarios    hl++ 2017
Proxysql use case scenarios hl++ 2017
 
Mysql ecosystem in 2018
Mysql ecosystem in 2018Mysql ecosystem in 2018
Mysql ecosystem in 2018
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17
 
Proxysql use case scenarios plam 2016
Proxysql use case scenarios    plam 2016Proxysql use case scenarios    plam 2016
Proxysql use case scenarios plam 2016
 
Building DBA as a Service (Global) Team - DBAaaST
Building DBA as a Service (Global) Team - DBAaaSTBuilding DBA as a Service (Global) Team - DBAaaST
Building DBA as a Service (Global) Team - DBAaaST
 

Recently uploaded

Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 

Recently uploaded (20)

Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 

Introduction to Vitess on Kubernetes for MySQL - Webinar

  • 1. Introduction to Vitess on Kubernetes for MySQL Alkin Tezuysal - Sr. Technical Manager, Percona Sugu Sougoumarane - CTO/Co-Founder, PlanetScale 2020 Webinar Series - May 11th 2020
  • 2. © 2020 Percona Who are we? Sr. Technical Manager at Percona Open Source Database Evangelist Global Database Operations Expert Inspiring Technical and Strategic Leader Creative Team Builder Speaker, Mentor, and Coach Co-creator of Vitess, CTO at PlanetScale. Scalability at YouTube, PayPal in the early days. Argues about distributed systems and consensus algorithms. Occasionally blogs at ssougou.blogspot.com. 2 Alkin Tezuysal - @ask_dba Born to Sail, Forced to Work Sugu Sougoumarane - @ssougou Storage Geek @@ask_dba, @ssougou
  • 3. © 2020 Percona A Database Clustering System for Horizontal Scaling of MySQL 3 @@ask_dba, @ssougou
  • 4. © 2020 Percona Introduction to Vitess 4 @@ask_dba, @ssougou
  • 5. © 2020 Percona Vitess in CNCF (Cloud Native Computing Foundation) 5 @@ask_dba, @ssougou
  • 6. © 2020 Percona True Multi-Cloud Clusters for PlanetScaleDB 6 @@ask_dba, @ssougou
  • 7. © 2020 Percona Kubernetes on Google Cloud (GKE) ● Google Cloud's load-balancing for Compute Engine instances ● Node pools to designate subsets of nodes within a cluster for additional flexibility ● Automatic scaling of your cluster's node instance count ● Automatic upgrades for your cluster's node software ● Node auto-repair to maintain node health and availability ● Logging and monitoring with Google Cloud's operations suite for visibility into your cluster 7 @@ask_dba, @ssougou
  • 8. © 2020 Percona Installation and Configuration ● Vitess on Google Cloud Platform Prerequisites ○ Google Kubernetes Engine (GKE) ○ Cluster with 7 nodes ○ K8s Version 1.15.11-gke.1 ○ Helm Version 3 ● Requirements ○ RBR ○ GTID ○ MySQL 5.6+ MariaDB 10.x+ 8 @@ask_dba, @ssougou
  • 9. © 2020 Percona Create Vitess Cluster GKE 9 @@ask_dba, @ssougou
  • 10. © 2020 Percona Setup Basics 10 @@ask_dba, @ssougou
  • 12. © 2020 Percona Connect to K8s Cluster 12 @@ask_dba, @ssougou
  • 13. © 2020 Percona Download and install Helm 3.X $ wget https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz $ tar xvfz helm-v3.1.2-linux-amd64.tar.gz $ sudo cp linux-amd64/helm /usr/local/bin/helm $ go get vitess.io/vitess/go/cmd/vtctlclient $ git clone git@github.com:vitessio/vitess.git $ cd vitess/examples/helm 13 @@ask_dba, @ssougou
  • 14. © 2020 Percona Install Vitess $ helm install vitess ../../helm/vitess -f 101_initial_cluster.yaml NAME: vitess LAST DEPLOYED: Thu May 7 13:55:49 2020 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Release name: vitess To access administrative web pages, start a proxy with: kubectl proxy --port=8001 Then use the following URLs: vtctld: http://localhost:8001/api/v1/namespaces/default/services/vtctld:web/proxy/app/ vtgate: http://localhost:8001/api/v1/namespaces/default/services/vtgate-zone1:web/proxy/ 14 @@ask_dba, @ssougou
  • 15. © 2020 Percona Run Proxy and access to Web Portal(s) To access administrative web pages, start a proxy with: kubectl proxy --port=8001 Then use the following URLs: vtctld: http://localhost:8001/api/v1/namespaces/default/services/vtctld:web/proxy/app/ vtgate: http://localhost:8001/api/v1/namespaces/default/services/vtgate-zone1:web/proxy/ 15 @@ask_dba, @ssougou
  • 16. © 2020 Percona Vitess Control Panel 16 @@ask_dba, @ssougou
  • 17. © 2020 Percona vtgate status dashboard 17 @@ask_dba, @ssougou
  • 18. © 2020 Percona kubectl status $ kubectl get pods,jobs NAME READY STATUS RESTARTS AGE pod/commerce-apply-schema-initial-z27sm 0/1 Completed 0 14m pod/commerce-apply-vschema-initial-292nc 0/1 Completed 0 14m pod/vtctld-c56d6c788-t9xlc 1/1 Running 0 14m pod/vtgate-zone1-7d4957f6-49xsr 1/1 Running 0 14m pod/zone1-commerce-0-init-shard-master-69fbc 0/1 Completed 0 14m pod/zone1-commerce-0-replica-0 6/6 Running 0 14m pod/zone1-commerce-0-replica-1 6/6 Running 0 14m pod/zone1-commerce-0-replica-2 6/6 Running 0 14m NAME COMPLETIONS DURATION AGE job.batch/commerce-apply-schema-initial 1/1 59s 14m job.batch/commerce-apply-vschema-initial 1/1 62s 14m job.batch/zone1-commerce-0-init-shard-master 1/1 57s 14m 18 @@ask_dba, @ssougou
  • 19. © 2020 Percona Port-forwarding kubectl port-forward service/vtctld 15000 15999 & process_id1=$! kubectl port-forward service/vtgate-zone1 15306:3306 15001 & process_id2=$! sleep 2 echo "You may point your browser to http://localhost:15000 for vtctld." echo "You may point your browser to http://localhost:15001 for vtgate, use the following aliases as shortcuts:" echo 'alias vtctlclient="vtctlclient -server=localhost:15999"' echo 'alias mysql="mysql -h 127.0.0.1 -P 15306"' echo "Hit Ctrl-C to stop the port forwards" wait $process_id1 wait $process_id2 19 @@ask_dba, @ssougou
  • 20. © 2020 Percona Connect to MySQL $ mysql Handling connection for 15306 Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 7 Server version: 5.7.9-Vitess Percona Server (GPL), Release 29, Revision 11ad961 Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +-----------+ | Databases | +-----------+ | commerce | +-----------+ 1 row in set (0.11 sec) 20 @@ask_dba, @ssougou
  • 21. © 2020 Percona Creating a Keyspace mysql> show tables; +--------------------+ | Tables_in_commerce | +--------------------+ | corder | | customer | | product | +--------------------+ 3 rows in set (0.11 sec) $ mysql < ./vitess/examples/common/insert_commerce_data.sql 21 @@ask_dba, @ssougou
  • 22. © 2020 Percona Verify data mysql> select * from corder; select * from customer; select * from product; +----------+-------------+----------+-------+ | order_id | customer_id | sku | price | +----------+-------------+----------+-------+ | 1 | 1 | SKU-1001 | 100 | | 2 | 2 | SKU-1002 | 30 | | 3 | 3 | SKU-1002 | 30 | | 4 | 4 | SKU-1002 | 30 | | 5 | 5 | SKU-1002 | 30 | +----------+-------------+----------+-------+ 5 rows in set (0.11 sec) 22 @@ask_dba, @ssougou
  • 23. © 2020 Percona Verify data +-------------+--------------------+ | customer_id | email | +-------------+--------------------+ | 1 | alice@domain.com | | 2 | bob@domain.com | | 3 | charlie@domain.com | | 4 | dan@domain.com | | 5 | eve@domain.com | +-------------+--------------------+ 5 rows in set (0.11 sec) +----------+-------------+-------+ | sku | description | price | +----------+-------------+-------+ | SKU-1001 | Monitor | 100 | | SKU-1002 | Keyboard | 30 | +----------+-------------+-------+ 2 rows in set (0.11 sec) 23 @@ask_dba, @ssougou
  • 24. © 2020 Percona Similarities and Differences Similarities ● If Vitess was treated as MySQL Server, a Keyspace would be a database. ● A Keyspace can have one or many shards ● Each Shard is one MySQL cluster: master+replicas Differences ● If a table name is unique across all keyspaces, it can be accessed without the qualifying it with db name ● You can “use `keyspace@master`” or “use `keyspace@replica`” ● Bypass shard routing with “use `keyspace:-80@master`” 24 @@ask_dba, @ssougou
  • 25. © 2020 Percona Moving Tables Use case Customer load is increasing, MySQL is reaching its limits. We want to move the customer and corder tables to a separate MySQL cluster, aka “unsharded keyspace”. 25 @@ask_dba, @ssougou
  • 26. © 2020 Percona Create customer keyspace keyspaces: - name: "commerce" shards: - name: "0" tablets: - type: "replica" vttablet: replicas: 3 - name: "customer" shards: - name: "0" tablets: - type: "replica" vttablet: replicas: 3 26 @@ask_dba, @ssougou
  • 27. © 2020 Percona Bring up customer keyspace $ helm upgrade vitess ../../helm/vitess/ -f 201_customer_tablets.yaml Release "vitess" has been upgraded. Happy Helming! NAME: vitess LAST DEPLOYED: Sun May 10 14:21:14 2020 NAMESPACE: default STATUS: deployed REVISION: 2 TEST SUITE: None NOTES: Release name: vitess To access administrative web pages, start a proxy with: kubectl proxy --port=8001 Then use the following URLs: vtctld: http://localhost:8001/api/v1/namespaces/default/services/vtctld:web/proxy/app/ vtgate: http://localhost:8001/api/v1/namespaces/default/services/vtgate-zone1:web/proxy/ a 27 @@ask_dba, @ssougou
  • 28. © 2020 Percona Verify upgrade zone1-customer-0-replica-0 2/2 Running 0 108s zone1-customer-0-replica-1 2/2 Running 0 108s zone1-customer-0-replica-2 2/2 Running 0 108s mysql> show databases; +-----------+ | Databases | +-----------+ | commerce | | customer | +-----------+ 2 rows in set (0.04 sec) 28 @@ask_dba, @ssougou
  • 29. © 2020 Percona Initiate move tables $ vtctlclient MoveTables -workflow=commerce2customer commerce customer '{"customer":{}, "corder":{}}' 29 @@ask_dba, @ssougou
  • 30. © 2020 Percona Sanity check mysql> use commerce:0 mysql> select count(*) from corder; +----------+ | count(*) | +----------+ | 5 | +----------+ mysql> use customer:0 mysql> select count(*) from corder; +----------+ | count(*) | +----------+ | 5 | +----------+ 30 @@ask_dba, @ssougou
  • 31. © 2020 Percona VDiff ~/...vitess/examples/helm> vtctlclient VDiff customer.commerce2customer Summary for corder: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0} Summary for customer: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0} 31 @@ask_dba, @ssougou
  • 32. © 2020 Percona Switch Traffic $ vtctlclient SwitchReads -tablet_type=rdonly customer.commerce2customer $ vtctlclient SwitchReads -tablet_type=replica customer.commerce2customer $ vtctlclient SwitchWrites customer.commerce2customer 32 @@ask_dba, @ssougou
  • 33. © 2020 Percona Clean-up $ vtctlclient DropSources customer.commerce2customer 33 @@ask_dba, @ssougou
  • 34. © 2020 Percona Reshard Use case Traffic has continued to grow, but the corder table is getting too big to fit in a single database. There is a relationship between corder and customer. It will be beneficial to co-locate every orders with their customer rows. Auto-inc won’t work. Solution: Vitess Sequences. 34 @@ask_dba, @ssougou
  • 35. © 2020 Percona Creating sequences 301_customer_sharded.yaml (commerce schema) create table customer_seq(id int, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence'; insert into customer_seq(id, next_id, cache) values(0, 1000, 100); create table order_seq(id int, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence'; insert into order_seq(id, next_id, cache) values(0, 1000, 100); 35 @@ask_dba, @ssougou
  • 36. © 2020 Percona Creating sequences 301_customer_sharded.yaml (customer VSchema) { "tables": { "customer_seq": { "type": "sequence" }, "order_seq": { "type": "sequence" }, "product": {} } } 36 @@ask_dba, @ssougou
  • 37. © 2020 Percona 301_customer_sharded.yaml (commerce VSchema) { "sharded": true, "vindexes": { "hash": { "type": "hash" } }, "tables": { "customer": { "column_vindexes": [ { "column": "customer_id", ... "corder": { "column_vindexes": [ { "column": "customer_id", "name": "hash" } ], "auto_increment": { "column": "order_id", "sequence": "order_seq" } } } } Primary Vindexes, aka Sharding Keys 37 @@ask_dba, @ssougou
  • 38. © 2020 Percona Apply Changes $ helm upgrade vitess ../../helm/vitess/ -f 301_customer_sharded.yaml 38 @@ask_dba, @ssougou
  • 39. © 2020 Percona - name: "customer" shards: - name: "0" tablets: - type: "replica" vttablet: replicas: 3 - name: "-80" tablets: - type: "replica" vttablet: replicas: 3 copySchema: source: "customer/0" - name: "80-" tablets: - type: "replica" vttablet: replicas: 3 copySchema: source: "customer/0" Create Target Shards 39 @@ask_dba, @ssougou
  • 40. © 2020 Percona Apply Changes $ helm upgrade vitess ../../helm/vitess/ -f 302_new_shards.yaml 40 @@ask_dba, @ssougou
  • 41. © 2020 Percona Verify cluster zone1-customer-80-x-replica-0 2/2 Running 0 115s zone1-customer-80-x-replica-1 2/2 Running 0 115s zone1-customer-80-x-replica-2 2/2 Running 0 115s zone1-customer-x-80-init-shard-master-6zhhn 0/1 Completed 0 114s zone1-customer-x-80-replica-0 2/2 Running 0 114s zone1-customer-x-80-replica-1 2/2 Running 0 114s zone1-customer-x-80-replica-2 2/2 Running 0 114s 41 @@ask_dba, @ssougou
  • 42. © 2020 Percona Initiate Resharding $ vtctlclient Reshard customer.cust2cust '0' '-80,80-' 42 @@ask_dba, @ssougou
  • 43. © 2020 Percona mysql> use customer:0 mysql> select count(*) from corder; +----------+ | count(*) | +----------+ | 5 | +----------+ mysql> use customer:-80 mysql> select count(*) from corder; +----------+ | count(*) | +----------+ | 4 | +----------+ mysql> use customer:80- mysql> select count(*) from corder; +----------+ | count(*) | +----------+ | 1 | +----------+ Sanity Check 43 @@ask_dba, @ssougou
  • 44. © 2020 Percona VDiff ~/...vitess/examples/helm> vtctlclient VDiff customer.cust2cust Summary for corder: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0} Summary for customer: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0} 44 @@ask_dba, @ssougou
  • 45. © 2020 Percona Switch over $ vtctlclient SwitchReads -tablet_type=rdonly customer.cust2cust $ vtctlclient SwitchReads -tablet_type=replica customer.cust2cust $ vtctlclient SwitchWrites customer.cust2cust 45 @@ask_dba, @ssougou
  • 46. © 2020 Percona Down Shard 0 $ helm upgrade vitess ../../helm/vitess/ -f 306_down_shard_0.yaml $ vtctlclient DeleteShard -recursive customer/0 46 @@ask_dba, @ssougou
  • 47. © 2020 Percona Tear-down Cluster $ helm delete vitess $ kubectl delete pvc -l "app=vitess" $ kubectl delete vitesstoponodes --all 47 @@ask_dba, @ssougou
  • 49. @ 2020 Percona Introduction to Vitess on Kubernetes for MySQL - Part I of III Vitess.io PlanetScale Operating Vitess – Square Cloud Native Computing Foundation: Home Page CNCF Cloud Native Interactive Landscape PlanetScaleDB delivers true multi-cloud, multi-region clusters on AWS, GCP, and Azure - Blog Vitess Demo References 49