SlideShare a Scribd company logo
1 of 47
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Containerized MySQL
Running MySQL in containers and on Kubernetes
Patrick Galbraith
Principal Platform Engineer
Platform Engineering, Dyn + Oracle
October 22, 2018
Confidential – Oracle Internal/Restricted/Highly
Restricted
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
About
2
Oracle + Dyn Platform Services
● Oracle Dyn, HP, Blue Gecko, MySQL AB, Classmates, Slashdot, Cobalt
Group, US Navy
● MySQL projects: memcached UDFs, DBD::mysql, federated storage engine,
Galera on Kubernetes example, Percona helm chart, etc
● Learning, Languages, Family, Outdoors
● Chile
● Not a designer, as you can see :)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
About my team
• DNS -- https://dyn.com
– Dyn provides managed DNS for the world’s largest and most admired web properties
– One of the largest, fastest, and most resilient DNS networks in the world
– Over 3,500 enterprises, including preeminent digital brands like Netflix, Twitter, Linkedin and
CNBC
• Email
– Dyn Email Delivery has helped organizations with large sending needs for over a decade
• Oracle Cloud (OCI) https://cloud.oracle.com/home
– Dyn providing Edge Services for Oracle Cloud Infrastructure
– We’re hiring! https://dyn.com/careers/
3
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
What is this presentation about?
• De-mystifying containers
• MySQL running in containers
• MySQL on Kubernetes
• Stateful applications – StatefulSets
• Operators - MySQL Operator
• Sharding - Vitess
• Time permitting…
• Save questions until the end 
4
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
What are containers and Docker?
• Set of tools for managing containers
• Command line tool client and daemon
• Kernel namespaces – the core ingredient to containers working
• PID
• IPC
• uts (what will be seen by a group of processes)
• Mount
• Network
• User
• Cgroups (control groups) -- limit, account and isolate resource usage
• Cgroups (CPU, memory, disk I/O, etc.) of process groups
5
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
VMs and Containers
comparison
6
VM Container
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Patterns and AntiPatterns
• Patterns
• Keep it simple – simple containers
• Containers are cattle
• Vanilla Hosts
• Keep your images small
• Use the source, Luke!
• Anti-patterns
• Containers are not VMs!
• Containers are NOT pets
• Don’t run containers with a provisioner built-in
• Do. Not. Build. Your. Own. Scheduler. (!)
• Using containers to container persistent data
7
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Orchestrating Containers
• Mesos
• OpenStack
• CoreOS
• Kubernetes
• Hashicorp Nomad
8
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
A tale of two open source projects
• MySQL (MySQL, MariaDB, Percona, etc)
– World’s most popular open source database
– Ubiquitous
– 20+ years
• Kubernetes
– Fastest growing open source project
– Application deployment done right
– Community-driven
– Moving target, rapidly developing
– Borg Paper https://research.google.com/pubs/pub43438.html?hl=es
9
MySQL and Kubernetes
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Databases: Pets vs. Cattle
10
● Database containers tend to be more pets than cattle
● A pod of multiple database instances or one?
● “Kubernetes Pods are mortal.”
● A database is a complex stateful application
● Consistent access: applications get the same database
● Safety: don’t scale if unhealthy (obvious)
● Persistent storage
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Kubernetes ingredients for stateful applications
11
● Labels
● Services
● KubeDNS
● Helm Charts
● PV/PVC, StorageClass
● StatefulSets
○ Init containers
○ VolumeClaimTemplates
● Operators
○ CustomResourceDefinition
● Side-car containers
● nodeSelector
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
NodeSelector
12
● Can be used to achieve affinity to a specific node
● Label assigned to node
kubectl label nodes ip-172.xxx.ec2.internal boxtype=c3.medium
spec:
containers:
- image: mysql:5.6
name: mysql
...<snip>...
nodeSelector:
boxtype: c3.medium
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Node and Pod Affinity/AntiAffinity
● Based on labels
● nodeAffinity/nodeAntiAffinity uses labels on node
● podAffinity/podAntiAffinity labels of pods already running on node
metadata:
name: with-node-affinity (or with-pod-affinity)
spec:
affinity:
nodeAffinity:
● Hard - “must” requiredDuringSchedulingIgnoredDuringExecution
● Soft - “preferred” preferredDuringSchedulingIgnoredDuringExecution
13
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
StatefulSets
14
● Provide guarantees about ordering and uniqueness of pods and pod resources
○ Maintains persistent, sticky identity for each of their pods, across rescheduling
○ Ensures ordinality - Deterministic initialization order.
○ At most one pod per index
○ Pods are not interchangeable and won’t attempt to run a pod with the same name
● Stable network identity
○ Consistent pod name set as subdomain within domain of headless service, eg “mysql”,
nodes name “node-N.mysql”
○ DNS name is stable across restarts
● Stable Storage/Stateful resources.
○ Pods re-mount same persistent storage across restarts
● Safety
○ Scaling is blocked if system is unhealthy
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Deployment/ReplicaSet
● Started in no specific order
● name-<depid>-<rand alpha>
● Will scale if crash and
replace with another non-
unique name
Deployment
/ReplicaSet
Crash!
mysql-1389738847-bmsg7
mysql-1389738847-nz828
mysql-1389738847-x99km
mysql-1389738847-t542x
15
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
StatefulSet
● Started in order
● Names unique and
distinct per node-ordinal
● Must replace failed node
by name
● Won’t scale when cluster
is unhealthy
StatefulSet
Crash!
mysql-0
mysql-1
mysql-2
Don’t scale and
must replace
mysql-2
16
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Headless Service
17
● Service with clusterIP of None
○ Makes it so all nodes have an A-
record of service-
<ord>.<service name>
○ This service is not used for
application or clients
● For read-only, create another service
- mysql-read which can be of any
type (nodePort, clusterIP,
loadBalancer)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
VolumeClaimTemplate
18
● Define a ServiceType
● Specify type in VolumeClaimTemplate
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 19
mysql-0
mysql-2
mysql-1
MySQL simple replication StatefulSet
https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/
Mysql-read
service
read/write
-h mysql-0.mysql
App /
client
replication
Read only
-h mysql-read
replication
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
mysql-N pod
App containers
Init containers
20
data
Mysql
clone-mysql
init-mysql
conf
backup/etc/mysql/conf.d
Config-map
Contains
master.cnf
slave.cnf
/var/lib/mysql
/var/lib/mysqlCopy master.cnf or
slave.cnf depending
on ordinal
mysql-(N+1) pod
clone-mysql
init-mysql
● Init Containers
● App Containers
● Sidecar Containers
clone-mysql only
restores if ordinal > 0
(slave)
An operator would have this
functionality built-in
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Operators
● Application-specific domain controller
● Encodes application-specific domain knowledge through extending
Kubernetes API using custom resource definitions (CRD)
● Enables users to create, configure, and manage stateful applications
● Built upon resources and controllers concepts
● Leverage Kubernetes primitives like ReplicaSets, StatefulSets, and
Services
● Operator executes common application tasks
● Installed as a deployment
● Application run using custom resource definition types for operator
eg. EtcdCluster, Prometheus, MySQL Cluster, Backup,
Restore, Oracle WebLogic etc
21
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Operators
22
observe
Analyze
Act
“etcdX” cluster has 2 running pods
● etcd-0, version 3.1.1
● etcd-1, version 3.2.10
How get desired config
● Recover 1 member
● Upgrade etcd-0 to 3.2.10
Differences from desired config
● Should be version 3.2.10
● Should have 3 members
https://coreos.com/blog/introducing-the-etcd-operator.html
● Create/Destroy: No need for
specifications of each member.
Just size of cluster.
● Resize: Only specify size.
Operator will deploy, destroy,
or reconfigure as needed
● Backup: built-in, only need to
specify backup policy
● Upgrade: operator will ensure
members are correct version
avoiding headaches
● Etcd operator
https://youtu.be/tPSys734iNk
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
MySQL Operator
● New Open source project from Oracle -- released in early in 2018
● https://github.com/oracle/mysql-operator
● Deploy a highly-available clustered MySQL instance into Kubernetes
with a single command
● Watches the API server for Custom Resource Definitions related to
MySQL (Cluster) and acts on those resources
● Backup/Restore made simple with Backup, BackupSchedule,
and Restore custom resources
● PV/PVC Block Storage
● Utilizes Group replication
● Automated backup/restore to/from object storage
23
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
MySQL Operator
Features:
Create/Scale/Destroy: Easily create, scale and
delete self healing MySQL clusters inside a
Kubernetes namespace
● Simple Configuration: Provide configuration
for your MySQL cluster with simple
Kubernetes objects (Secrets and
ConfigMaps)
● Backups: Defined scheduled backup policies
as part of your cluster to make sure your
data is always protected or, alternatively,
create on-demand snapshot backups with a
single command.
24
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Examples : StorageClass
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
kubectl.kubernetes.io/last-applied-
configuration: |
{"apiVersion":"storage.k8s.io/v1beta1","kind":
"StorageClass","metadata":{"annotations":{"storagecl
ass.beta.kubernetes.io/is-default-
class":"true"},"name":"oci","namespace":""},"provisi
oner":"oracle.com/oci"}
storageclass.beta.kubernetes.io/is-default-
class: "true"
creationTimestamp: 2018-09-03T02:38:04Z
name: oci
resourceVersion: "313"
selfLink:
/apis/storage.k8s.io/v1/storageclasses/oci
uid: 61e52032-af22-11e8-aa27-0a580aed2e0f
25
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Examples : Dynamic volume
apiVersion: "mysql.oracle.com/v1"
kind: Cluster
metadata:
name: mysql
spec:
replicas: 3
volumeClaimTemplate:
metadata:
name: data
annotations:
volume.alpha.kubernetes.io/storage-class: oci
spec:
storageClassName: oci
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
26
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Examples: simple cluster
apiVersion: "mysql.oracle.com/v1"
kind: Cluster
metadata:
name: mysql
Create a cluster:
kubectl apply -f mysql-test-cluster.yaml
List clusters:
kubectl get mysql-operator.mysql.oracle.com
27
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Examples: simple cluster and backup
apiVersion: "mysql.oracle.com/v1"
kind: Backup
metadata:
name: mysql-backup
spec:
executor:
mysqldump:
databases:
- wordpress
storageProvider:
s3:
endpoint: s3.us-east-1.amazonaws.com
region: us-east-1
bucket: mysql-demo-backup
forcePathStyle: true
credentialsSecret:
name: s3-credentials
cluster:
name: mysql
Create a backup:
kubectl apply -f backup.yaml
List backups:
kubectl get mysqlbackups
Fetch an individual backup:
kubectl get mysqlbackup primary/123
28
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Examples: simple restore
apiVersion: "mysql.oracle.com/v1"
kind: Restore
metadata:
name: mysql-restore
spec:
clusterRef:
name: mysql
backupRef:
name: mysql-backup
Restore a cluster:
kubectl apply -f mysql-restore.yaml
29
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Examples: scheduled backup
apiVersion: mysql.oracle.com/v1
kind: BackupSchedule
metadata:
name: mysql-morning-backup
spec: schedule: '* 01 * * *'
backupTemplate:
executor:
provider: mysqldump
databases:
- wordpress
storageProvider:
s3:
endpoint: s3.us-east-1.amazonaws.com
region: us-east-1
bucket: mysql-demo-backup
credentialsSecret:
name: s3-credentials
cluster:
name: mysql
30
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Connecting
● Read-only service
● Write to single pod
● Read/Write service
● MySQL Router
31
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Scaling
● Pods
● Write to single pod
● Disk
● ExpandPersistentVolumes, PersistentVolumeClaimResize
● Requires StorageClass to specify allowVolumeExpansion: true
32
https://youtu.be/RGvcANwi6PU
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Other MySQL Operators
● https://www.percona.com/community-blog/2018/10/11/deploying-
mysql-on-kubernetes-with-a-percona-based-operator/
(https://github.com/presslabs/mysql-operator)
● https://github.com/grtl/mysql-operator
● Good Comparison https://banzaicloud.com/blog/mysql-on-
kubernetes/
33
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
MySQL Operator Demos
● Create a 3-node MySQL backed by OCI block storage, utilizing
external DNS, and running Wordpress, using MySQLBackup/Restore
https://youtu.be/RGvcANwi6PU
● Create a 3-node MySQL cluster!
https://youtu.be/SeD5eSh3lL8
● Backups made easy! On-demand backup of an existing cluster
https://youtu.be/h_W5xtdce0k
34
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
: sharding on a silver platter (http://vitess.io)
35
● Database solution for deploying, scaling and managing large
clusters of MySQL instances
● YouTube database store since 2011
● Looks like MySQL database in usage, but is sharded underneath
● Cloud ready (The cloud is coming!)
● Helps you scale with transparent dynamic sharding and ability to
continue sharding out (or in)
● Cluster management – tools for backups, shards, and schema
● MySQL client protocol, gRPC
● Connection pooling
● Protects MySQL with query - de-duping, re-writing, sanitization,
black-listing, adding LIMIT on unbound queries, etc
● Monitoring tools - built into all Vitess binaries.
● If you want to migrate your MySQL application to the cloud, Vitess
is an excellent vehicle to use!
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 36
orchestrator
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Sharding
● A shard consists of a single master that handles writes, one or more slaves that
handle reads
● Horizontal - split or merge shards in a sharded keyspace
● Vertical - moving tables from an unsharded keyspace to a different keyspace
● Re-sharding
○ split, merge, add new cells and replicas
○ Filtered replication using GTID key ingredient ensures source tablet data is
transferred to proper destination VTtablet
● Vschema - Vitess Schema - ties together all databases managed by Vitess and
helps to decide where queries should go
● Vindex - cross-shard index provides a way to map a column value to a keyspace ID
37
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Schema and Vschema
# schema - user keyspace
create table user(
user_id bigint,
name varchar(128),
primary key(user_id)
);
// vschema - user keyspace
{
"sharded": true,
"vindexes": {
"hash": {
"type": "hash"
},
"tables": {
"user": {
"column_vindexes": [
{
"column": "user_id",
"name": "hash" # NOTE: vindex name
}
]
}
}
}
38
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Reparenting
● Reparenting
○ Changing shard’s master tablet to another host
○ Changing slave tablet to have a different master
● GTID
○ GTID is used to initialize replication
○ GTID replication stream is used in parenting
● Types of reparenting
○ PlannedReparentShard - healthy master tablet to new master
○ EmergencyReparentShard - forces reparent to a new master when master unavailable. Data connect be
retrieved from current master
● Re-sharding
○ split, merge, add new cells and replicas
○ Filtered replication key ingredient ensures source tablet data is transferred to proper destination VTtablet
39
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
backups
● Backup
○ Plugins for NFS, GCS, S3, Ceph
○ VTtablet must have access to where storage, flags to provided to vtctl
○ Replica MySQL instance stopped, data copied, instanced started
○ vtctl backup <tablet-alias>
● Restore
○ For restore, VTtablet started with arguments specifying whether to restore from a backup, the storage
implementation and backup storage root (path)
● Commands
○ vtctl backup <tablet-alias>
○ vtctl ListBackups <keyspace/shard>
○ vtctl RemoveBackup <keyspace/shard>
vttablet
mysql
Storage (NFS, S3, GCS,
Ceph)
Object
storage
Mysqlctl
backup
40
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Vitess Operator
● VitessCluster – top level specification
● VitessCell – Failure domain/AZ
● EtcdCluster
● Deployment(s) orchestrator, vtctld, vtgate
● VitessKeyspace – comprised of multiple shards
● VitessShard – multiple vttablets, creates multiple StatefulSets of pods and
PersistentVolumeClaims
● kubectl get vitessclusters
41
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Vitess StatefulSet Demo
https://youtu.be/9in5HenJ9xY
● Create two shards
● Load database schema and vschema
● Scale one shard from 2 replicas to 3
● Delete StatefulSet, delete master pod, reparent
● Anthony Yeh, https://github.com/enisoc/vitess.git,
statefulset-demo branch
42
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Questions Preguntas Fragen सवाल...
Patg at Patg dot net
http://patg.net
43
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Thank you!
Special thanks to:
Platform Team Oracle Dyn
Ali Mukadam
Anthony Yeh
Sugu Sougoumarane
Owain Lewis
44
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Extra slides - resources
45
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Collectbeats
● Open Source effort within Ebay
● Inspired by Metricbeat module “drop in”
concept.
● Find all pods exposing metrics and start polling
● Ability to
○ Collect metrics from any pod that exposes
them
○ Collect logs from STDOUT or logs on
container
○ Append pod metadata to logs and metrics
○ Allow pods to push metrics through
Graphite protocol and parse them
uniquely
○ Stitch stack-traces for application logs
● http://bit.ly/2zT4VNZ
46
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Other MySQL installation examples
● helm install --name kubeconf stable/percona
○ https://www.youtube.com/watch?v=kZOk0w6YKMA
● Simple replication with a stateful set https://kubernetes.io/docs/tasks/run-
application/run-replicated-stateful-application/
○ https://www.youtube.com/watch?v=M7EWFL83Vdc
● Galera StatefulSet by SeveralNines https://severalnines.com/blog/mysql-
docker-running-galera-cluster-kubernetes
○ https://youtu.be/3vn7Jd9z4kc
47

More Related Content

What's hot

FOSDEM MySQL & Friends Devroom, February 2018 MySQL Point-in-Time Recovery l...
FOSDEM MySQL & Friends Devroom, February 2018  MySQL Point-in-Time Recovery l...FOSDEM MySQL & Friends Devroom, February 2018  MySQL Point-in-Time Recovery l...
FOSDEM MySQL & Friends Devroom, February 2018 MySQL Point-in-Time Recovery l...Frederic Descamps
 
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09OSSCube
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorialFrederic Descamps
 
High Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterHigh Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterSven Sandberg
 
MySQL 5.6 Updates
MySQL 5.6 UpdatesMySQL 5.6 Updates
MySQL 5.6 UpdatesDave Stokes
 
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinMySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinOlivier DASINI
 
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionMySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionOlivier DASINI
 
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...Olivier DASINI
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document StoreFrederic Descamps
 
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreMySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreOlivier DASINI
 
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Dave Stokes
 
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document StoreMySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document StoreOlivier DASINI
 
Deep Dive into Automating Oracle GoldenGate Using the New Microservices
Deep Dive into Automating Oracle GoldenGate Using the New MicroservicesDeep Dive into Automating Oracle GoldenGate Using the New Microservices
Deep Dive into Automating Oracle GoldenGate Using the New MicroservicesKal BO
 
MySQL InnoDB Cluster in a Nutshell - Hands-on Lab
MySQL InnoDB Cluster in a Nutshell - Hands-on LabMySQL InnoDB Cluster in a Nutshell - Hands-on Lab
MySQL InnoDB Cluster in a Nutshell - Hands-on LabFrederic Descamps
 
MariaDB: Connect Storage Engine
MariaDB: Connect Storage EngineMariaDB: Connect Storage Engine
MariaDB: Connect Storage EngineKangaroot
 
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...Ludovico Caldara
 
MySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP Paris
MySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP ParisMySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP Paris
MySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP ParisOlivier DASINI
 
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceMySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceOlivier DASINI
 

What's hot (20)

FOSDEM MySQL & Friends Devroom, February 2018 MySQL Point-in-Time Recovery l...
FOSDEM MySQL & Friends Devroom, February 2018  MySQL Point-in-Time Recovery l...FOSDEM MySQL & Friends Devroom, February 2018  MySQL Point-in-Time Recovery l...
FOSDEM MySQL & Friends Devroom, February 2018 MySQL Point-in-Time Recovery l...
 
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
 
My sql 5.6&MySQL Cluster 7.3
My sql 5.6&MySQL Cluster 7.3My sql 5.6&MySQL Cluster 7.3
My sql 5.6&MySQL Cluster 7.3
 
High Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterHigh Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB Cluster
 
MySQL 5.6 Updates
MySQL 5.6 UpdatesMySQL 5.6 Updates
MySQL 5.6 Updates
 
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinMySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The Dolphin
 
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionMySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise Edition
 
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document Store
 
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreMySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document Store
 
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
 
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document StoreMySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document Store
 
Deep Dive into Automating Oracle GoldenGate Using the New Microservices
Deep Dive into Automating Oracle GoldenGate Using the New MicroservicesDeep Dive into Automating Oracle GoldenGate Using the New Microservices
Deep Dive into Automating Oracle GoldenGate Using the New Microservices
 
MySQL InnoDB Cluster in a Nutshell - Hands-on Lab
MySQL InnoDB Cluster in a Nutshell - Hands-on LabMySQL InnoDB Cluster in a Nutshell - Hands-on Lab
MySQL InnoDB Cluster in a Nutshell - Hands-on Lab
 
MariaDB: Connect Storage Engine
MariaDB: Connect Storage EngineMariaDB: Connect Storage Engine
MariaDB: Connect Storage Engine
 
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
 
MySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP Paris
MySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP ParisMySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP Paris
MySQL InnoDB Cluster - Meetup Oracle MySQL / AFUP Paris
 
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceMySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
 

Similar to Containerized MySQL OpenWorld talk

MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...Olivier DASINI
 
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataMarketingArrowECS_CZ
 
Using MySQL Containers
Using MySQL ContainersUsing MySQL Containers
Using MySQL ContainersMatt Lord
 
MySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMiguel Araújo
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksDave Stokes
 
Node.js and the MySQL Document Store
Node.js and the MySQL Document StoreNode.js and the MySQL Document Store
Node.js and the MySQL Document StoreRui Quelhas
 
Leveraging open source for large scale analytics
Leveraging open source for large scale analyticsLeveraging open source for large scale analytics
Leveraging open source for large scale analyticsSouth West Data Meetup
 
MySQL Document Store and Node.JS
MySQL Document Store and Node.JSMySQL Document Store and Node.JS
MySQL Document Store and Node.JSReggie Burnett
 
MySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIMySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIRui Quelhas
 
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA -   UKOUGEmbracing Database Diversity: The New Oracle / MySQL DBA -   UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUGKeith Hollman
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerSimon Haslam
 
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28Amazon Web Services
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance TuningMark Swarbrick
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1Ruslan Meshenberg
 
My sql fabric webinar v1.1
My sql fabric webinar v1.1My sql fabric webinar v1.1
My sql fabric webinar v1.1Ricky Setyawan
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014Dave Stokes
 
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!Frederic Descamps
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerSimon Haslam
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on ExadataAnil Nair
 

Similar to Containerized MySQL OpenWorld talk (20)

MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
 
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on Exadata
 
Using MySQL Containers
Using MySQL ContainersUsing MySQL Containers
Using MySQL Containers
 
MySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB Clusters
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disks
 
Node.js and the MySQL Document Store
Node.js and the MySQL Document StoreNode.js and the MySQL Document Store
Node.js and the MySQL Document Store
 
Leveraging open source for large scale analytics
Leveraging open source for large scale analyticsLeveraging open source for large scale analytics
Leveraging open source for large scale analytics
 
MySQL Document Store and Node.JS
MySQL Document Store and Node.JSMySQL Document Store and Node.JS
MySQL Document Store and Node.JS
 
MySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIMySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPI
 
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA -   UKOUGEmbracing Database Diversity: The New Oracle / MySQL DBA -   UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack Manager
 
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
 
NoSQL and MySQL
NoSQL and MySQLNoSQL and MySQL
NoSQL and MySQL
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance Tuning
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
 
My sql fabric webinar v1.1
My sql fabric webinar v1.1My sql fabric webinar v1.1
My sql fabric webinar v1.1
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
 
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack Manager
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on Exadata
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 

Containerized MySQL OpenWorld talk

  • 1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Containerized MySQL Running MySQL in containers and on Kubernetes Patrick Galbraith Principal Platform Engineer Platform Engineering, Dyn + Oracle October 22, 2018 Confidential – Oracle Internal/Restricted/Highly Restricted
  • 2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | About 2 Oracle + Dyn Platform Services ● Oracle Dyn, HP, Blue Gecko, MySQL AB, Classmates, Slashdot, Cobalt Group, US Navy ● MySQL projects: memcached UDFs, DBD::mysql, federated storage engine, Galera on Kubernetes example, Percona helm chart, etc ● Learning, Languages, Family, Outdoors ● Chile ● Not a designer, as you can see :)
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | About my team • DNS -- https://dyn.com – Dyn provides managed DNS for the world’s largest and most admired web properties – One of the largest, fastest, and most resilient DNS networks in the world – Over 3,500 enterprises, including preeminent digital brands like Netflix, Twitter, Linkedin and CNBC • Email – Dyn Email Delivery has helped organizations with large sending needs for over a decade • Oracle Cloud (OCI) https://cloud.oracle.com/home – Dyn providing Edge Services for Oracle Cloud Infrastructure – We’re hiring! https://dyn.com/careers/ 3
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | What is this presentation about? • De-mystifying containers • MySQL running in containers • MySQL on Kubernetes • Stateful applications – StatefulSets • Operators - MySQL Operator • Sharding - Vitess • Time permitting… • Save questions until the end  4
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | What are containers and Docker? • Set of tools for managing containers • Command line tool client and daemon • Kernel namespaces – the core ingredient to containers working • PID • IPC • uts (what will be seen by a group of processes) • Mount • Network • User • Cgroups (control groups) -- limit, account and isolate resource usage • Cgroups (CPU, memory, disk I/O, etc.) of process groups 5
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | VMs and Containers comparison 6 VM Container
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Patterns and AntiPatterns • Patterns • Keep it simple – simple containers • Containers are cattle • Vanilla Hosts • Keep your images small • Use the source, Luke! • Anti-patterns • Containers are not VMs! • Containers are NOT pets • Don’t run containers with a provisioner built-in • Do. Not. Build. Your. Own. Scheduler. (!) • Using containers to container persistent data 7
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Orchestrating Containers • Mesos • OpenStack • CoreOS • Kubernetes • Hashicorp Nomad 8
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | A tale of two open source projects • MySQL (MySQL, MariaDB, Percona, etc) – World’s most popular open source database – Ubiquitous – 20+ years • Kubernetes – Fastest growing open source project – Application deployment done right – Community-driven – Moving target, rapidly developing – Borg Paper https://research.google.com/pubs/pub43438.html?hl=es 9 MySQL and Kubernetes
  • 10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Databases: Pets vs. Cattle 10 ● Database containers tend to be more pets than cattle ● A pod of multiple database instances or one? ● “Kubernetes Pods are mortal.” ● A database is a complex stateful application ● Consistent access: applications get the same database ● Safety: don’t scale if unhealthy (obvious) ● Persistent storage
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Kubernetes ingredients for stateful applications 11 ● Labels ● Services ● KubeDNS ● Helm Charts ● PV/PVC, StorageClass ● StatefulSets ○ Init containers ○ VolumeClaimTemplates ● Operators ○ CustomResourceDefinition ● Side-car containers ● nodeSelector
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | NodeSelector 12 ● Can be used to achieve affinity to a specific node ● Label assigned to node kubectl label nodes ip-172.xxx.ec2.internal boxtype=c3.medium spec: containers: - image: mysql:5.6 name: mysql ...<snip>... nodeSelector: boxtype: c3.medium
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Node and Pod Affinity/AntiAffinity ● Based on labels ● nodeAffinity/nodeAntiAffinity uses labels on node ● podAffinity/podAntiAffinity labels of pods already running on node metadata: name: with-node-affinity (or with-pod-affinity) spec: affinity: nodeAffinity: ● Hard - “must” requiredDuringSchedulingIgnoredDuringExecution ● Soft - “preferred” preferredDuringSchedulingIgnoredDuringExecution 13
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | StatefulSets 14 ● Provide guarantees about ordering and uniqueness of pods and pod resources ○ Maintains persistent, sticky identity for each of their pods, across rescheduling ○ Ensures ordinality - Deterministic initialization order. ○ At most one pod per index ○ Pods are not interchangeable and won’t attempt to run a pod with the same name ● Stable network identity ○ Consistent pod name set as subdomain within domain of headless service, eg “mysql”, nodes name “node-N.mysql” ○ DNS name is stable across restarts ● Stable Storage/Stateful resources. ○ Pods re-mount same persistent storage across restarts ● Safety ○ Scaling is blocked if system is unhealthy
  • 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Deployment/ReplicaSet ● Started in no specific order ● name-<depid>-<rand alpha> ● Will scale if crash and replace with another non- unique name Deployment /ReplicaSet Crash! mysql-1389738847-bmsg7 mysql-1389738847-nz828 mysql-1389738847-x99km mysql-1389738847-t542x 15
  • 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | StatefulSet ● Started in order ● Names unique and distinct per node-ordinal ● Must replace failed node by name ● Won’t scale when cluster is unhealthy StatefulSet Crash! mysql-0 mysql-1 mysql-2 Don’t scale and must replace mysql-2 16
  • 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Headless Service 17 ● Service with clusterIP of None ○ Makes it so all nodes have an A- record of service- <ord>.<service name> ○ This service is not used for application or clients ● For read-only, create another service - mysql-read which can be of any type (nodePort, clusterIP, loadBalancer)
  • 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | VolumeClaimTemplate 18 ● Define a ServiceType ● Specify type in VolumeClaimTemplate
  • 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 19 mysql-0 mysql-2 mysql-1 MySQL simple replication StatefulSet https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/ Mysql-read service read/write -h mysql-0.mysql App / client replication Read only -h mysql-read replication
  • 20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | mysql-N pod App containers Init containers 20 data Mysql clone-mysql init-mysql conf backup/etc/mysql/conf.d Config-map Contains master.cnf slave.cnf /var/lib/mysql /var/lib/mysqlCopy master.cnf or slave.cnf depending on ordinal mysql-(N+1) pod clone-mysql init-mysql ● Init Containers ● App Containers ● Sidecar Containers clone-mysql only restores if ordinal > 0 (slave) An operator would have this functionality built-in
  • 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Operators ● Application-specific domain controller ● Encodes application-specific domain knowledge through extending Kubernetes API using custom resource definitions (CRD) ● Enables users to create, configure, and manage stateful applications ● Built upon resources and controllers concepts ● Leverage Kubernetes primitives like ReplicaSets, StatefulSets, and Services ● Operator executes common application tasks ● Installed as a deployment ● Application run using custom resource definition types for operator eg. EtcdCluster, Prometheus, MySQL Cluster, Backup, Restore, Oracle WebLogic etc 21
  • 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Operators 22 observe Analyze Act “etcdX” cluster has 2 running pods ● etcd-0, version 3.1.1 ● etcd-1, version 3.2.10 How get desired config ● Recover 1 member ● Upgrade etcd-0 to 3.2.10 Differences from desired config ● Should be version 3.2.10 ● Should have 3 members https://coreos.com/blog/introducing-the-etcd-operator.html ● Create/Destroy: No need for specifications of each member. Just size of cluster. ● Resize: Only specify size. Operator will deploy, destroy, or reconfigure as needed ● Backup: built-in, only need to specify backup policy ● Upgrade: operator will ensure members are correct version avoiding headaches ● Etcd operator https://youtu.be/tPSys734iNk
  • 23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | MySQL Operator ● New Open source project from Oracle -- released in early in 2018 ● https://github.com/oracle/mysql-operator ● Deploy a highly-available clustered MySQL instance into Kubernetes with a single command ● Watches the API server for Custom Resource Definitions related to MySQL (Cluster) and acts on those resources ● Backup/Restore made simple with Backup, BackupSchedule, and Restore custom resources ● PV/PVC Block Storage ● Utilizes Group replication ● Automated backup/restore to/from object storage 23
  • 24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | MySQL Operator Features: Create/Scale/Destroy: Easily create, scale and delete self healing MySQL clusters inside a Kubernetes namespace ● Simple Configuration: Provide configuration for your MySQL cluster with simple Kubernetes objects (Secrets and ConfigMaps) ● Backups: Defined scheduled backup policies as part of your cluster to make sure your data is always protected or, alternatively, create on-demand snapshot backups with a single command. 24
  • 25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Examples : StorageClass --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: kubectl.kubernetes.io/last-applied- configuration: | {"apiVersion":"storage.k8s.io/v1beta1","kind": "StorageClass","metadata":{"annotations":{"storagecl ass.beta.kubernetes.io/is-default- class":"true"},"name":"oci","namespace":""},"provisi oner":"oracle.com/oci"} storageclass.beta.kubernetes.io/is-default- class: "true" creationTimestamp: 2018-09-03T02:38:04Z name: oci resourceVersion: "313" selfLink: /apis/storage.k8s.io/v1/storageclasses/oci uid: 61e52032-af22-11e8-aa27-0a580aed2e0f 25
  • 26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Examples : Dynamic volume apiVersion: "mysql.oracle.com/v1" kind: Cluster metadata: name: mysql spec: replicas: 3 volumeClaimTemplate: metadata: name: data annotations: volume.alpha.kubernetes.io/storage-class: oci spec: storageClassName: oci accessModes: - ReadWriteOnce resources: requests: storage: 50Gi 26
  • 27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Examples: simple cluster apiVersion: "mysql.oracle.com/v1" kind: Cluster metadata: name: mysql Create a cluster: kubectl apply -f mysql-test-cluster.yaml List clusters: kubectl get mysql-operator.mysql.oracle.com 27
  • 28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Examples: simple cluster and backup apiVersion: "mysql.oracle.com/v1" kind: Backup metadata: name: mysql-backup spec: executor: mysqldump: databases: - wordpress storageProvider: s3: endpoint: s3.us-east-1.amazonaws.com region: us-east-1 bucket: mysql-demo-backup forcePathStyle: true credentialsSecret: name: s3-credentials cluster: name: mysql Create a backup: kubectl apply -f backup.yaml List backups: kubectl get mysqlbackups Fetch an individual backup: kubectl get mysqlbackup primary/123 28
  • 29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Examples: simple restore apiVersion: "mysql.oracle.com/v1" kind: Restore metadata: name: mysql-restore spec: clusterRef: name: mysql backupRef: name: mysql-backup Restore a cluster: kubectl apply -f mysql-restore.yaml 29
  • 30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Examples: scheduled backup apiVersion: mysql.oracle.com/v1 kind: BackupSchedule metadata: name: mysql-morning-backup spec: schedule: '* 01 * * *' backupTemplate: executor: provider: mysqldump databases: - wordpress storageProvider: s3: endpoint: s3.us-east-1.amazonaws.com region: us-east-1 bucket: mysql-demo-backup credentialsSecret: name: s3-credentials cluster: name: mysql 30
  • 31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Connecting ● Read-only service ● Write to single pod ● Read/Write service ● MySQL Router 31
  • 32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Scaling ● Pods ● Write to single pod ● Disk ● ExpandPersistentVolumes, PersistentVolumeClaimResize ● Requires StorageClass to specify allowVolumeExpansion: true 32 https://youtu.be/RGvcANwi6PU
  • 33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Other MySQL Operators ● https://www.percona.com/community-blog/2018/10/11/deploying- mysql-on-kubernetes-with-a-percona-based-operator/ (https://github.com/presslabs/mysql-operator) ● https://github.com/grtl/mysql-operator ● Good Comparison https://banzaicloud.com/blog/mysql-on- kubernetes/ 33
  • 34. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | MySQL Operator Demos ● Create a 3-node MySQL backed by OCI block storage, utilizing external DNS, and running Wordpress, using MySQLBackup/Restore https://youtu.be/RGvcANwi6PU ● Create a 3-node MySQL cluster! https://youtu.be/SeD5eSh3lL8 ● Backups made easy! On-demand backup of an existing cluster https://youtu.be/h_W5xtdce0k 34
  • 35. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | : sharding on a silver platter (http://vitess.io) 35 ● Database solution for deploying, scaling and managing large clusters of MySQL instances ● YouTube database store since 2011 ● Looks like MySQL database in usage, but is sharded underneath ● Cloud ready (The cloud is coming!) ● Helps you scale with transparent dynamic sharding and ability to continue sharding out (or in) ● Cluster management – tools for backups, shards, and schema ● MySQL client protocol, gRPC ● Connection pooling ● Protects MySQL with query - de-duping, re-writing, sanitization, black-listing, adding LIMIT on unbound queries, etc ● Monitoring tools - built into all Vitess binaries. ● If you want to migrate your MySQL application to the cloud, Vitess is an excellent vehicle to use!
  • 36. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 36 orchestrator
  • 37. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Sharding ● A shard consists of a single master that handles writes, one or more slaves that handle reads ● Horizontal - split or merge shards in a sharded keyspace ● Vertical - moving tables from an unsharded keyspace to a different keyspace ● Re-sharding ○ split, merge, add new cells and replicas ○ Filtered replication using GTID key ingredient ensures source tablet data is transferred to proper destination VTtablet ● Vschema - Vitess Schema - ties together all databases managed by Vitess and helps to decide where queries should go ● Vindex - cross-shard index provides a way to map a column value to a keyspace ID 37
  • 38. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Schema and Vschema # schema - user keyspace create table user( user_id bigint, name varchar(128), primary key(user_id) ); // vschema - user keyspace { "sharded": true, "vindexes": { "hash": { "type": "hash" }, "tables": { "user": { "column_vindexes": [ { "column": "user_id", "name": "hash" # NOTE: vindex name } ] } } } 38
  • 39. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Reparenting ● Reparenting ○ Changing shard’s master tablet to another host ○ Changing slave tablet to have a different master ● GTID ○ GTID is used to initialize replication ○ GTID replication stream is used in parenting ● Types of reparenting ○ PlannedReparentShard - healthy master tablet to new master ○ EmergencyReparentShard - forces reparent to a new master when master unavailable. Data connect be retrieved from current master ● Re-sharding ○ split, merge, add new cells and replicas ○ Filtered replication key ingredient ensures source tablet data is transferred to proper destination VTtablet 39
  • 40. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | backups ● Backup ○ Plugins for NFS, GCS, S3, Ceph ○ VTtablet must have access to where storage, flags to provided to vtctl ○ Replica MySQL instance stopped, data copied, instanced started ○ vtctl backup <tablet-alias> ● Restore ○ For restore, VTtablet started with arguments specifying whether to restore from a backup, the storage implementation and backup storage root (path) ● Commands ○ vtctl backup <tablet-alias> ○ vtctl ListBackups <keyspace/shard> ○ vtctl RemoveBackup <keyspace/shard> vttablet mysql Storage (NFS, S3, GCS, Ceph) Object storage Mysqlctl backup 40
  • 41. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Vitess Operator ● VitessCluster – top level specification ● VitessCell – Failure domain/AZ ● EtcdCluster ● Deployment(s) orchestrator, vtctld, vtgate ● VitessKeyspace – comprised of multiple shards ● VitessShard – multiple vttablets, creates multiple StatefulSets of pods and PersistentVolumeClaims ● kubectl get vitessclusters 41
  • 42. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Vitess StatefulSet Demo https://youtu.be/9in5HenJ9xY ● Create two shards ● Load database schema and vschema ● Scale one shard from 2 replicas to 3 ● Delete StatefulSet, delete master pod, reparent ● Anthony Yeh, https://github.com/enisoc/vitess.git, statefulset-demo branch 42
  • 43. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Questions Preguntas Fragen सवाल... Patg at Patg dot net http://patg.net 43
  • 44. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Thank you! Special thanks to: Platform Team Oracle Dyn Ali Mukadam Anthony Yeh Sugu Sougoumarane Owain Lewis 44
  • 45. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Extra slides - resources 45
  • 46. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Collectbeats ● Open Source effort within Ebay ● Inspired by Metricbeat module “drop in” concept. ● Find all pods exposing metrics and start polling ● Ability to ○ Collect metrics from any pod that exposes them ○ Collect logs from STDOUT or logs on container ○ Append pod metadata to logs and metrics ○ Allow pods to push metrics through Graphite protocol and parse them uniquely ○ Stitch stack-traces for application logs ● http://bit.ly/2zT4VNZ 46
  • 47. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Other MySQL installation examples ● helm install --name kubeconf stable/percona ○ https://www.youtube.com/watch?v=kZOk0w6YKMA ● Simple replication with a stateful set https://kubernetes.io/docs/tasks/run- application/run-replicated-stateful-application/ ○ https://www.youtube.com/watch?v=M7EWFL83Vdc ● Galera StatefulSet by SeveralNines https://severalnines.com/blog/mysql- docker-running-galera-cluster-kubernetes ○ https://youtu.be/3vn7Jd9z4kc 47