SlideShare a Scribd company logo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Miguel Araújo
Senior Software Developer
MySQL Middleware and Clients
pre-FOSDEM’19 MySQL Day - February 01, 2019
MySQL Shell
A DevOps-engineer day with MySQL’s
development and administration tool
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, timing, and pricing of any
features or functionality described for Oracle’s products may change and remains at the
sole discretion of Oracle Corporation.
2
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 3
Who am I?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
whoami
Miguel Araújo
• MySQL Senior Software Developer
• Lead developer for the AdminAPI at the
MySQL Shell team
• MySQL InnoDB Cluster evangelist
• Living in Portugal
• http://about.me/miguel-araujo
4
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 5
DevOps: What is it?
As simple as:
 Engineers (developers) and operations working together to:
Automate and monitor processes
 Share knowledge and collaborate
Get things done faster
Deliver faster!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
DevOps-Engineer: …and that is?
6
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
DevOps-Engineer: …and that is?
¯_(ツ)_/¯
7
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
DevOps-Engineer: …and that is?
8
OK, actually it’s someone that can:
 Do system administration (sysadmin)
 Code
 Understand testing
 Automate processes
 Talk! (bridge between devs and ops)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
MySQL Shell: Introduction
• Interactive multi-language console interface that supports development and
administration for the MySQL Server
• Can be used to perform data queries or updates, and administration operations:
 Interactively or through batch operations
 With scriptable “DevOps” APIs
 Unified Interface for MySQL Developers and DBAs: one tool!
• Intuitive, flexible, powerful and easy to use!
9
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
MySQL Shell: Features (Dev)
• Multi-language support
– JavaScript, Python and SQL
– Both interactive and batch operations (scripting)
10
MySQL
Development
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
MySQL Shell: Features (Dev)
• Multi-language support
– JavaScript, Python and SQL
– Both interactive and batch operations (scripting)
• Document and relational model
– Supports the classic relational model
– Modern fluent API for the MySQL Document Store
• CRUD and Relational
11
MySQL
Development
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 12
MySQL Shell: Features (Dev)
• Scripting
– Execute scripts from:
• Interactive REPL interface
• Directly from the cmdline
• From Python, JS, or SQL script files
– Import any installed module (in Python)
MySQL
Development
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 13
MySQL Shell: Features (Dev/Ops)
• APIs
 MySQL DBs
– ‘mysql’ object
– Interaction with MySQL Server using the relational model
 Document Store
– ‘mysqlx’ object
– Interact with MySQL Server using the X DevAPI
MySQL
Development
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 14
MySQL Shell: Features (Dev/Ops)
• APIs
 ShellAPI
– ‘shell’ object
– General purpose functions and properties
 AdminAPI
– ‘dba’ object
– Set up and management of InnoDB clusters
 Shell utilities
– ‘util’ object
– Upgrade checker
– Import JSON documents
MySQL
Administration
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 15
A common use-case
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Company X starts a new business unit
16
• A DBMS is needed
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Company X starts a new business unit
17
• A DBMS is needed
• The infraestructure must be prepared
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Company X starts a new business unit
18
• A DBMS is needed
• The infraestructure must be prepared
• The DBMS must be deployed and managed
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Company X starts a new business unit
19
• A DBMS is needed
• The infraestructure must be prepared
• The DBMS must be deployed and managed
• The world’s most popular open-source database is suggested
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Company X starts a new business unit
20
• A DBMS is needed
• The infraestructure must be prepared
• The DBMS must be deployed and managed
• The world’s most popular open-source database is suggested
 MySQL is approved!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Company X starts a new business unit
21
• A DBMS is needed
• The infraestructure must be prepared
• The DBMS must be deployed and managed
• The world’s most popular open-source database is suggested
 MySQL is approved!
Call the devOps-engineer!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Meet Bill
The devOps-engineer
22
This is Bill.
Bill is a MySQL user.
Bill knows the Shell is the devOps tool for MySQL.
Bill uses the Shell to make his life easier.
Bill is smart.
Be like Bill.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Prepare the DBMS
23
1. Package installation
2. Directories management
3. Set up security
4. Configure server settings
5. Create accounts with the right permissions
6. ...
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Prepare the DBMS
24
• Bill writes a JS script that can be used by others or even automated
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Prepare the DBMS
25
• Interacts with the database through the session object
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Prepare the DBMS
26
• Connect to localhost:3310
• Execute create_account.js with or without extra arguments forwarded to
the script (sys.argv[])
• Rely on the Shell prompt utility
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Upgrade the DBMS
27
• A major new MySQL version (8.0) is released with many improvements and
features
• Bill needs to upgrade the whole setup but is afraid it gets broken...
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Upgrade the DBMS
28
• A major new MySQL version (8.0) is released with many improvements and
features
• Bill needs to upgrade the whole setup but is afraid it gets broken...
Shell to the rescue!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
MySQL Shell: Features (Ops)
• Upgrade checker
– Verify whether instances are ready or not
for upgrading to MySQL 8
– Available through the util object
29
mysql-js> util.checkForServerUpgrade(“root@localhost:3306”);
MySQL
Administration
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Upgrade the DBMS
30
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
MySQL Shell: Features (Ops)
• API Command line integration
– cmdline syntax to invoke built-in Shell commands
– Requires minimal extra typing, quoting and escaping
– Supported objects: dba, cluster, shell, shell.options
and util
Syntax: mysqlsh [OPTIONS] [URI] -- <object_name> <method_name> [argument_list]
31
$ mysqlsh root@myserver:33060 –- util check-for-server-upgrade
MySQL
Administration
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Upgrade the DBMS
32
• Bill is smart
• Bill is a devOps-engineer
• Bill automates processes, by using continuous automation frameworks
• How could Bill ensure that the MySQL Servers deployments are always
using the latest available version?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Shell meets continuous automation
33
• Let’s use as an example:
service { ‘mysql’:
ensure => latest,
enable => true,
require => Package[‘mysql-server-community’],
}
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Shell meets continuous automation
34
What if current is 5.7 and latest is 8.0? Will it break everything?
service { ‘mysql’:
ensure => latest,
enable => true,
require => Package[‘mysql-server-community’],
}
!
• Let’s use as an example:
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Shell meets continuous automation
35
service { ‘mysql’:
ensure => latest,
enable => true,
require => Package[‘mysql-server-community’],
before => Exec [‘upgrade checker’]
}
exec { “upgrade checker”:
command => “mysqlsh -- util check-for-server-upgrade { --user=root --
host=localhost --port=3306} --password=‘myPwd’”
require => Service[“mysqlsh”]
}
• Use MySQL Shell upgrade checker
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Customizable prompts
– Display context information
– Custom/dynamic tags that react to context
• Eg. export PRODUCTION_SERVERS=192.168.42.16
MySQL Shell: The DBA toolbox
Other features and tweaks
36
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Secure credential manager
• Passwords queried from a secure password store (uses OS native APIs)
• Optional auto-save for typed passwords (default will prompt)
• History
• Typed command history
• Pager
• Pass SQL results through an external screen paging program
MySQL Shell: The DBA toolbox
Other features and tweaks
37
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Built-in help
– Documentation for included APIs, shell commands, SQL, etc.
MySQL Shell: The DBA toolbox
Other features and tweaks
38
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
The business unit is growing
39
• The systems are vulnerable to downtime
• Downtime causes high losses...
• Critical data can’t be lost and must ”always” be available!
• High Availability becomes mandatory
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
The business unit is growing
40
• The systems are vulnerable to downtime
• Downtime causes high losses...
• Critical data can’t be lost and must ”always” be available!
• High Availability becomes mandatory
Bill wonders what kind of HA support MySQL has...
?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 41
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 42
InnoDB cluster
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 43
InnoDB cluster
 MySQL Servers running Group
Replication
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 44
InnoDB cluster
 MySQL Servers running Group
Replication
 App Servers with MySQL Router
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 45
InnoDB cluster
 MySQL Servers running Group
Replication
 App Servers with MySQL Router
 MySQL Shell
 Set up, Manage, Orchestrate IDC
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 46
InnoDB cluster
 MySQL Servers running Group
Replication
 App Servers with MySQL Router
 MySQL Shell
 Set up, Manage, Orchestrate IDC
 Clients / Applications
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
MySQL Shell: Features (Ops)
• Administration API: AdminAPI
– Creation and Management of InnoDB Clusters
– Hides the complexity of:
• Configuration
• Provisioning
• Orchestration
– Simple and straight-forward
– Doesn’t require MySQL expertise
– Flexible, powerful and secure
– Available in both JavaScript and Python
47
MySQL
Administration
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
The business unit is growing
48
• Bill needs to set up an HA deployment for the company needs
• Using the Shell and the AdminAPI he can achieve that very easily!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
The business unit is growing
49
• Bill needs to set up an HA deployment for the company needs
• Using the Shell and the AdminAPI he can achieve that very easily!
$ mysqlsh
mysql-js> dba.configureInstance(“root@host1:3306”, {clusterAdmin: “bill”})
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
The business unit is growing
50
• Bill needs to set up an HA deployment for the company needs
• Using the Shell and the AdminAPI he can achieve that very easily!
$ mysqlsh
mysql-js> dba.configureInstance(“root@host1:3306”, {clusterAdmin: “bill”})
mysql-js> var cluster = dba.createCluster(“Cluster1”)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
The business unit is growing
51
• Bill needs to set up an HA deployment for the company needs
• Using the Shell and the AdminAPI he can achieve that very easily!
$ mysqlsh
mysql-js> dba.configureInstance(“root@host1:3306”, {clusterAdmin: “bill”})
mysql-js> var cluster = dba.createCluster(“Cluster1”)
mysql-js> cluster.addInstance(“bill@host2:3306”)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
HA in 5 minutes!
52
 JSON object describing the structure of
the Cluster
 Includes general cluster information
 Topology:
 ReplicaSets
 Instance members
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 2
HA in 5 minutes!
53
 JSON object describing the status of the
Cluster
 Includes general cluster status
 Status information about each ReplicaSet
member
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
The requirements change
54
• A strange behaviour was seen in the application leading to user complaints
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
The requirements change
55
• A strange behaviour was seen in the application leading to user complaints
• Ops traced down the issue to the database... And found possible
inconsistent reads
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
The requirements change
56
• A strange behaviour was seen in the application leading to user complaints
• Ops traced down the issue to the database... And found possible
inconsistent reads
• Finally someone noticed that whenever a primary failover happens, stale
data was being read from the newly elected primary causing the strange
“inconsistencies”
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
The requirements change
57
• A strange behaviour was seen in the application leading to user complaints
• Ops traced down the issue to the database... And found possible
inconsistent reads
• Finally someone noticed that whenever a primary failover happens, stale
data was being read from the newly elected primary causing the strange
“inconsistencies”
• Direction asks for a solution even if it compromises performance!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
Checking the cluster options
58
 Verify the current cluster settings
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
Checking the cluster options
59
 Verify the current cluster settings
 JSON object listing configuration options
of the Cluster
 Includes global cluster options
 Includes configuration options of each cluster
member
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
Failover consistency
60
The failover consistency option can have 2 values:
• EVENTUAL (default)
 Read queries allowed in the new primary (even if backlog is being applied)
 Writes are blocked
 Possible stale reads
• BEFORE_ON_PRIMARY_FAILOVER
 Read and write queries blocked in the new primary (meanwhile backlog is being applied)
 “read your writes”
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
Change the failover consistency
61
The AdminAPI allows changing a configuration option:
1) For the whole cluster
 <Cluster.>setOption(option, value)
2) In a cluster member
 <Cluster.>setInstanceOption(instance, option, value)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 3
Change the failover consistency
62
The AdminAPI allows changing a configuration option:
1) For the whole cluster
 <Cluster.>setOption(option, value)
2) In a cluster member
 <Cluster.>setInstanceOption(instance, option, value)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 4
Maintenance
63
• Maintenance tasks on servers are common...
• Bill needs to perform a maintenance task on the current primary instance
• Which implies some sort of disruption...
• Idealy, Bill would rather manually elect a new primary to avoid any
disruption
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 4
Maintenance
64
• Maintenance tasks on servers are common...
• Bill needs to perform a maintenance task on the current primary instance
• Which implies some sort of disruption...
• Idealy, Bill would rather manually elect a new primary to avoid any
disruption
But... How?
?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 4
Elect a new primary
65
 <Cluster.>setPrimaryInstance(instance)
By using the Shell and the AdminAPI!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
The requirements change... again
66
• Analysis of the dataset and its usage, concluded that the workload could be
spread accross the cluster members:
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
The requirements change... again
67
• Analysis of the dataset and its usage, concluded that the workload could be
spread accross the cluster members:
– No concurrent DDL ops in the same object
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
The requirements change... again
68
• Analysis of the dataset and its usage, concluded that the workload could be
spread accross the cluster members:
– No concurrent DDL ops in the same object
– No foreign key constraints
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
The requirements change... again
69
• Analysis of the dataset and its usage, concluded that the workload could be
spread accross the cluster members:
– No concurrent DDL ops in the same object
– No foreign key constraints
– No large transactions, etc.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
The requirements change... again
70
• Analysis of the dataset and its usage, concluded that the workload could be
spread accross the cluster members:
– No concurrent DDL ops in the same object
– No foreign key constraints
– No large transactions, etc.
• Decision to use Multi-Primary mode, even if not recommended, is taken.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
The requirements change... again
71
• Analysis of the dataset and its usage, concluded that the workload could be
spread accross the cluster members:
– No concurrent DDL ops in the same object
– No foreign key constraints
– No large transactions, etc.
• Decision to use Multi-Primary mode, even if not recommended, is taken.
But that implies the downtime of re-creating the whole cluster!
!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
 <Cluster.>switchToMultiPrimaryMode()
A common use-case: part 5
Switch to Multi-Primary mode
72
No restarts nor downtime!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case: part 5
Switch to Multi-Primary mode
73
• All cluster members become
writable (R/W)
 Note:
Switch to single-primary mode available with:
 <Cluster.>switchToSinglePrimaryMode()
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Suddently somes instances are expelled from the cluster
• ... even though ops report that the network is OK!
• But further investigation concludes the network is actually flaky
• Some members are being expelled due to very small network cuts of 2
minutes
A common use-case: part 6
Troubleshooting
74
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Suddently somes instances are expelled from the cluster
• ... even though ops report that the network is OK!
• But further investigation concludes the network is actually flaky
• Some members are being expelled due to very small network cuts of 2
minutes
What can be done?
A common use-case: part 6
Troubleshooting
75
?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Group Replication’s failure detector window is configurable
• Allows delays of suspensions of previously active cluster members
• Configurable using the AdminAPI!
A common use-case: part 6
Defining the expel timeout
76
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
A common use-case
Other useful features
77
• Define the next primary instance “in line”
• memberWeight = x
– Integer: [0, 100]
• Define the behaviour of an instance whenever it drops out of the cluster
• exitStateAction = y
– ABORT_SERVER
– READ_ONLY
• Extended Cluster.status()
• extended: true
• queryMembers: true
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Summary
• MySQL Shell brings together developers and DBAs
• Unified interface: one tool!
• Development and Administration APIs and features
• MySQL InnoDB Cluster is THE built-in HA solution for MySQL:
• Full-stack: High Availability out-of-the-box
• Easy to use: usability as a top concern
• Full control of the Cluster using the AdminAPI
78
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Resources
• MySQL Shell Userguide:
– https://dev.mysql.com/doc/refman/en/mysql-shell.html
• MySQL InnoDB Cluster Userguide:
– http://dev.mysql.com/doc/refman/en/mysql-innodb-cluster-userguide.html
• APIs Reference manuals
– JavaScript: https://dev.mysql.com/doc/dev/mysqlsh-api-javascript/
– Python: https://dev.mysql.com/doc/dev/mysqlsh-api-python/
• Blogging
– http://mysqlserverteam.com/category/high-availability
79
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Thank you!
Any questions?
80
MySQL Shell - A DevOps-engineer day with MySQL’s development and administration tool

More Related Content

What's hot (20)

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
Miguel Araújo
 
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)
Olivier DASINI
 
MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.
Miguel Araújo
 
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
Ivan Ma
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability Matters
Matt Lord
 
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesOracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Sven Sandberg
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
Olivier DASINI
 
MySQL Shell : the best DBA tool ?
MySQL Shell : the best DBA tool ?MySQL Shell : the best DBA tool ?
MySQL Shell : the best DBA tool ?
Frederic Descamps
 
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
Frederic Descamps
 
MySQL 8.0 Released Update
MySQL 8.0 Released UpdateMySQL 8.0 Released Update
MySQL 8.0 Released Update
Keith Hollman
 
MySQL Replication Performance in the Cloud
MySQL Replication Performance in the CloudMySQL Replication Performance in the Cloud
MySQL Replication Performance in the Cloud
Vitor Oliveira
 
replic8 - Replication in MySQL 8
replic8 - Replication in MySQL 8replic8 - Replication in MySQL 8
replic8 - Replication in MySQL 8
Sven Sandberg
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn Tutorial
Kenny Gryp
 
State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20
State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20
State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20
Frederic Descamps
 
Using MySQL Containers
Using MySQL ContainersUsing MySQL Containers
Using MySQL Containers
Matt Lord
 
MySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMySQL 5.7: Focus on Replication
MySQL 5.7: Focus on Replication
Mario Beck
 
Sunshine php my sql 8.0 v2
Sunshine php my sql 8.0 v2Sunshine php my sql 8.0 v2
Sunshine php my sql 8.0 v2
Kathy Forte (Hassard)
 
MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)
Mario Beck
 
Conference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance TuningConference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance Tuning
Severalnines
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group Replication
Frederic Descamps
 
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
Miguel Araújo
 
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)
Olivier DASINI
 
MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.
Miguel Araújo
 
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
Ivan Ma
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability Matters
Matt Lord
 
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesOracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Sven Sandberg
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
Olivier DASINI
 
MySQL Shell : the best DBA tool ?
MySQL Shell : the best DBA tool ?MySQL Shell : the best DBA tool ?
MySQL Shell : the best DBA tool ?
Frederic Descamps
 
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
Frederic Descamps
 
MySQL 8.0 Released Update
MySQL 8.0 Released UpdateMySQL 8.0 Released Update
MySQL 8.0 Released Update
Keith Hollman
 
MySQL Replication Performance in the Cloud
MySQL Replication Performance in the CloudMySQL Replication Performance in the Cloud
MySQL Replication Performance in the Cloud
Vitor Oliveira
 
replic8 - Replication in MySQL 8
replic8 - Replication in MySQL 8replic8 - Replication in MySQL 8
replic8 - Replication in MySQL 8
Sven Sandberg
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn Tutorial
Kenny Gryp
 
State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20
State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20
State of the Dolphin 2020 - 25th Anniversary of MySQL with 8.0.20
Frederic Descamps
 
Using MySQL Containers
Using MySQL ContainersUsing MySQL Containers
Using MySQL Containers
Matt Lord
 
MySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMySQL 5.7: Focus on Replication
MySQL 5.7: Focus on Replication
Mario Beck
 
MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)
Mario Beck
 
Conference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance TuningConference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance Tuning
Severalnines
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group Replication
Frederic Descamps
 

Similar to MySQL Shell - A DevOps-engineer day with MySQL’s development and administration tool (20)

MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
Cloud Native Day Tel Aviv
 
MySQL Shell for DBAs
MySQL Shell for DBAsMySQL Shell for DBAs
MySQL Shell for DBAs
Frederic Descamps
 
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
Frederic Descamps
 
MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !
Frederic Descamps
 
MySQL Shell - the best DBA tool ?
MySQL Shell - the best DBA tool ? MySQL Shell - the best DBA tool ?
MySQL Shell - the best DBA tool ?
Frederic Descamps
 
MySQL Shell: the best DBA tool !
MySQL Shell: the best DBA tool !MySQL Shell: the best DBA tool !
MySQL Shell: the best DBA tool !
Frederic Descamps
 
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
Frederic Descamps
 
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
OracleMySQL
 
MySQL 8.0 : High Availability Solution for Everybody
MySQL 8.0 : High Availability Solution for EverybodyMySQL 8.0 : High Availability Solution for Everybody
MySQL 8.0 : High Availability Solution for Everybody
Frederic Descamps
 
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
Frederic Descamps
 
MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019
Frederic Descamps
 
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
Dave Stokes
 
MySQL
MySQLMySQL
MySQL
PT.JUG
 
MySQL Enterprise Edition - Complete Guide (2019)
MySQL Enterprise Edition - Complete Guide (2019)MySQL Enterprise Edition - Complete Guide (2019)
MySQL Enterprise Edition - Complete Guide (2019)
Keith Hollman
 
MySQL Shell: the best DBA tool ?
MySQL Shell: the best DBA tool ?MySQL Shell: the best DBA tool ?
MySQL Shell: the best DBA tool ?
Frederic Descamps
 
MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...
MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...
MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...
Geir Høydalsvik
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
Mysql User Camp
 
MySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users GroupMySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users Group
Dave Stokes
 
MySQL enterprise edition
MySQL enterprise edition MySQL enterprise edition
MySQL enterprise edition
Mark Swarbrick
 
How to operate MySQL InnoDB Cluster with MySQL Shell
How to operate MySQL InnoDB Cluster with MySQL ShellHow to operate MySQL InnoDB Cluster with MySQL Shell
How to operate MySQL InnoDB Cluster with MySQL Shell
Frederic Descamps
 
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
Cloud Native Day Tel Aviv
 
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
Frederic Descamps
 
MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !
Frederic Descamps
 
MySQL Shell - the best DBA tool ?
MySQL Shell - the best DBA tool ? MySQL Shell - the best DBA tool ?
MySQL Shell - the best DBA tool ?
Frederic Descamps
 
MySQL Shell: the best DBA tool !
MySQL Shell: the best DBA tool !MySQL Shell: the best DBA tool !
MySQL Shell: the best DBA tool !
Frederic Descamps
 
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
Frederic Descamps
 
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
OracleMySQL
 
MySQL 8.0 : High Availability Solution for Everybody
MySQL 8.0 : High Availability Solution for EverybodyMySQL 8.0 : High Availability Solution for Everybody
MySQL 8.0 : High Availability Solution for Everybody
Frederic Descamps
 
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
Frederic Descamps
 
MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019
Frederic Descamps
 
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
Dave Stokes
 
MySQL Enterprise Edition - Complete Guide (2019)
MySQL Enterprise Edition - Complete Guide (2019)MySQL Enterprise Edition - Complete Guide (2019)
MySQL Enterprise Edition - Complete Guide (2019)
Keith Hollman
 
MySQL Shell: the best DBA tool ?
MySQL Shell: the best DBA tool ?MySQL Shell: the best DBA tool ?
MySQL Shell: the best DBA tool ?
Frederic Descamps
 
MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...
MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...
MySQL, An Open Source Ecosystem, Oracle Modern Cloud Day, Oslo, November 21, ...
Geir Høydalsvik
 
MySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users GroupMySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users Group
Dave Stokes
 
MySQL enterprise edition
MySQL enterprise edition MySQL enterprise edition
MySQL enterprise edition
Mark Swarbrick
 
How to operate MySQL InnoDB Cluster with MySQL Shell
How to operate MySQL InnoDB Cluster with MySQL ShellHow to operate MySQL InnoDB Cluster with MySQL Shell
How to operate MySQL InnoDB Cluster with MySQL Shell
Frederic Descamps
 
Ad

More from Miguel Araújo (11)

Routing Guidelines: Unlocking Smarter Query Routing in MySQL Architectures
Routing Guidelines: Unlocking Smarter Query Routing in MySQL ArchitecturesRouting Guidelines: Unlocking Smarter Query Routing in MySQL Architectures
Routing Guidelines: Unlocking Smarter Query Routing in MySQL Architectures
Miguel Araújo
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
 
MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)
MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)
MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)
Miguel Araújo
 
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
Miguel Araújo
 
Deep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdf
Deep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdfDeep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdf
Deep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdf
Miguel Araújo
 
MySQL Database Architectures - High Availability and Disaster Recovery Solution
MySQL Database Architectures - High Availability and Disaster Recovery SolutionMySQL Database Architectures - High Availability and Disaster Recovery Solution
MySQL Database Architectures - High Availability and Disaster Recovery Solution
Miguel Araújo
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - Tutorial
Miguel Araújo
 
FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!
FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!
FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!
Miguel Araújo
 
SLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foesSLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foes
Miguel Araújo
 
Asynchronous Replication of Databases
Asynchronous Replication of DatabasesAsynchronous Replication of Databases
Asynchronous Replication of Databases
Miguel Araújo
 
Evaluating Data Freshness in Large Scale Replicated Databases
Evaluating Data Freshness in Large Scale Replicated DatabasesEvaluating Data Freshness in Large Scale Replicated Databases
Evaluating Data Freshness in Large Scale Replicated Databases
Miguel Araújo
 
Routing Guidelines: Unlocking Smarter Query Routing in MySQL Architectures
Routing Guidelines: Unlocking Smarter Query Routing in MySQL ArchitecturesRouting Guidelines: Unlocking Smarter Query Routing in MySQL Architectures
Routing Guidelines: Unlocking Smarter Query Routing in MySQL Architectures
Miguel Araújo
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
 
MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)
MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)
MySQL Router - Explore The Secrets (MySQL Belgian Days 2024)
Miguel Araújo
 
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
Miguel Araújo
 
Deep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdf
Deep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdfDeep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdf
Deep Dive into MySQL InnoDB Cluster Read Scale-out Capabilities.pdf
Miguel Araújo
 
MySQL Database Architectures - High Availability and Disaster Recovery Solution
MySQL Database Architectures - High Availability and Disaster Recovery SolutionMySQL Database Architectures - High Availability and Disaster Recovery Solution
MySQL Database Architectures - High Availability and Disaster Recovery Solution
Miguel Araújo
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - Tutorial
Miguel Araújo
 
FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!
FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!
FOSDEM'18: MySQL InnoDB Cluster - MySQL HA Made Easy!
Miguel Araújo
 
SLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foesSLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foes
Miguel Araújo
 
Asynchronous Replication of Databases
Asynchronous Replication of DatabasesAsynchronous Replication of Databases
Asynchronous Replication of Databases
Miguel Araújo
 
Evaluating Data Freshness in Large Scale Replicated Databases
Evaluating Data Freshness in Large Scale Replicated DatabasesEvaluating Data Freshness in Large Scale Replicated Databases
Evaluating Data Freshness in Large Scale Replicated Databases
Miguel Araújo
 
Ad

Recently uploaded (20)

FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!
PhilMeredith3
 
zOS CommServer support for the Network Express feature on z17
zOS CommServer support for the Network Express feature on z17zOS CommServer support for the Network Express feature on z17
zOS CommServer support for the Network Express feature on z17
zOSCommserver
 
Artificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across IndustriesArtificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across Industries
SandeepKS52
 
AI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA TechnologiesAI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA Technologies
SandeepKS52
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
SheenBrisals
 
Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3
Gaurav Sharma
 
Agile Software Engineering Methodologies
Agile Software Engineering MethodologiesAgile Software Engineering Methodologies
Agile Software Engineering Methodologies
Gaurav Sharma
 
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps CyclesFrom Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
Marjukka Niinioja
 
Simplify Training with an Online Induction Portal for Contractors
Simplify Training with an Online Induction Portal for ContractorsSimplify Training with an Online Induction Portal for Contractors
Simplify Training with an Online Induction Portal for Contractors
SHEQ Network Limited
 
Key AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence CompaniesKey AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence Companies
Mypcot Infotech
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Boost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for SchoolsBoost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for Schools
Visitu
 
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATIONAI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
miso_uam
 
Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...
Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...
Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...
Safe Software
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdfHow to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
victordsane
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!
PhilMeredith3
 
zOS CommServer support for the Network Express feature on z17
zOS CommServer support for the Network Express feature on z17zOS CommServer support for the Network Express feature on z17
zOS CommServer support for the Network Express feature on z17
zOSCommserver
 
Artificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across IndustriesArtificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across Industries
SandeepKS52
 
AI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA TechnologiesAI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA Technologies
SandeepKS52
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
SheenBrisals
 
Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3
Gaurav Sharma
 
Agile Software Engineering Methodologies
Agile Software Engineering MethodologiesAgile Software Engineering Methodologies
Agile Software Engineering Methodologies
Gaurav Sharma
 
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps CyclesFrom Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
Marjukka Niinioja
 
Simplify Training with an Online Induction Portal for Contractors
Simplify Training with an Online Induction Portal for ContractorsSimplify Training with an Online Induction Portal for Contractors
Simplify Training with an Online Induction Portal for Contractors
SHEQ Network Limited
 
Key AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence CompaniesKey AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence Companies
Mypcot Infotech
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Boost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for SchoolsBoost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for Schools
Visitu
 
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATIONAI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
miso_uam
 
Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...
Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...
Scaling FME Flow on Demand with Kubernetes: A Case Study At Cadac Group SaaS ...
Safe Software
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdfHow to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
victordsane
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 

MySQL Shell - A DevOps-engineer day with MySQL’s development and administration tool

  • 1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Miguel Araújo Senior Software Developer MySQL Middleware and Clients pre-FOSDEM’19 MySQL Day - February 01, 2019 MySQL Shell A DevOps-engineer day with MySQL’s development and administration tool
  • 2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 2
  • 3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 3 Who am I?
  • 4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. whoami Miguel Araújo • MySQL Senior Software Developer • Lead developer for the AdminAPI at the MySQL Shell team • MySQL InnoDB Cluster evangelist • Living in Portugal • http://about.me/miguel-araujo 4
  • 5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 5 DevOps: What is it? As simple as:  Engineers (developers) and operations working together to: Automate and monitor processes  Share knowledge and collaborate Get things done faster Deliver faster!
  • 6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. DevOps-Engineer: …and that is? 6
  • 7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. DevOps-Engineer: …and that is? ¯_(ツ)_/¯ 7
  • 8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. DevOps-Engineer: …and that is? 8 OK, actually it’s someone that can:  Do system administration (sysadmin)  Code  Understand testing  Automate processes  Talk! (bridge between devs and ops)
  • 9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. MySQL Shell: Introduction • Interactive multi-language console interface that supports development and administration for the MySQL Server • Can be used to perform data queries or updates, and administration operations:  Interactively or through batch operations  With scriptable “DevOps” APIs  Unified Interface for MySQL Developers and DBAs: one tool! • Intuitive, flexible, powerful and easy to use! 9
  • 10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. MySQL Shell: Features (Dev) • Multi-language support – JavaScript, Python and SQL – Both interactive and batch operations (scripting) 10 MySQL Development
  • 11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. MySQL Shell: Features (Dev) • Multi-language support – JavaScript, Python and SQL – Both interactive and batch operations (scripting) • Document and relational model – Supports the classic relational model – Modern fluent API for the MySQL Document Store • CRUD and Relational 11 MySQL Development
  • 12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 12 MySQL Shell: Features (Dev) • Scripting – Execute scripts from: • Interactive REPL interface • Directly from the cmdline • From Python, JS, or SQL script files – Import any installed module (in Python) MySQL Development
  • 13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 13 MySQL Shell: Features (Dev/Ops) • APIs  MySQL DBs – ‘mysql’ object – Interaction with MySQL Server using the relational model  Document Store – ‘mysqlx’ object – Interact with MySQL Server using the X DevAPI MySQL Development
  • 14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 14 MySQL Shell: Features (Dev/Ops) • APIs  ShellAPI – ‘shell’ object – General purpose functions and properties  AdminAPI – ‘dba’ object – Set up and management of InnoDB clusters  Shell utilities – ‘util’ object – Upgrade checker – Import JSON documents MySQL Administration
  • 15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 15 A common use-case
  • 16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Company X starts a new business unit 16 • A DBMS is needed
  • 17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Company X starts a new business unit 17 • A DBMS is needed • The infraestructure must be prepared
  • 18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Company X starts a new business unit 18 • A DBMS is needed • The infraestructure must be prepared • The DBMS must be deployed and managed
  • 19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Company X starts a new business unit 19 • A DBMS is needed • The infraestructure must be prepared • The DBMS must be deployed and managed • The world’s most popular open-source database is suggested
  • 20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Company X starts a new business unit 20 • A DBMS is needed • The infraestructure must be prepared • The DBMS must be deployed and managed • The world’s most popular open-source database is suggested  MySQL is approved!
  • 21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Company X starts a new business unit 21 • A DBMS is needed • The infraestructure must be prepared • The DBMS must be deployed and managed • The world’s most popular open-source database is suggested  MySQL is approved! Call the devOps-engineer!
  • 22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Meet Bill The devOps-engineer 22 This is Bill. Bill is a MySQL user. Bill knows the Shell is the devOps tool for MySQL. Bill uses the Shell to make his life easier. Bill is smart. Be like Bill.
  • 23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Prepare the DBMS 23 1. Package installation 2. Directories management 3. Set up security 4. Configure server settings 5. Create accounts with the right permissions 6. ...
  • 24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Prepare the DBMS 24 • Bill writes a JS script that can be used by others or even automated
  • 25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Prepare the DBMS 25 • Interacts with the database through the session object
  • 26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Prepare the DBMS 26 • Connect to localhost:3310 • Execute create_account.js with or without extra arguments forwarded to the script (sys.argv[]) • Rely on the Shell prompt utility
  • 27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Upgrade the DBMS 27 • A major new MySQL version (8.0) is released with many improvements and features • Bill needs to upgrade the whole setup but is afraid it gets broken...
  • 28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Upgrade the DBMS 28 • A major new MySQL version (8.0) is released with many improvements and features • Bill needs to upgrade the whole setup but is afraid it gets broken... Shell to the rescue!
  • 29. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. MySQL Shell: Features (Ops) • Upgrade checker – Verify whether instances are ready or not for upgrading to MySQL 8 – Available through the util object 29 mysql-js> util.checkForServerUpgrade(“root@localhost:3306”); MySQL Administration
  • 30. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Upgrade the DBMS 30
  • 31. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. MySQL Shell: Features (Ops) • API Command line integration – cmdline syntax to invoke built-in Shell commands – Requires minimal extra typing, quoting and escaping – Supported objects: dba, cluster, shell, shell.options and util Syntax: mysqlsh [OPTIONS] [URI] -- <object_name> <method_name> [argument_list] 31 $ mysqlsh root@myserver:33060 –- util check-for-server-upgrade MySQL Administration
  • 32. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Upgrade the DBMS 32 • Bill is smart • Bill is a devOps-engineer • Bill automates processes, by using continuous automation frameworks • How could Bill ensure that the MySQL Servers deployments are always using the latest available version?
  • 33. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Shell meets continuous automation 33 • Let’s use as an example: service { ‘mysql’: ensure => latest, enable => true, require => Package[‘mysql-server-community’], }
  • 34. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Shell meets continuous automation 34 What if current is 5.7 and latest is 8.0? Will it break everything? service { ‘mysql’: ensure => latest, enable => true, require => Package[‘mysql-server-community’], } ! • Let’s use as an example:
  • 35. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Shell meets continuous automation 35 service { ‘mysql’: ensure => latest, enable => true, require => Package[‘mysql-server-community’], before => Exec [‘upgrade checker’] } exec { “upgrade checker”: command => “mysqlsh -- util check-for-server-upgrade { --user=root -- host=localhost --port=3306} --password=‘myPwd’” require => Service[“mysqlsh”] } • Use MySQL Shell upgrade checker
  • 36. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Customizable prompts – Display context information – Custom/dynamic tags that react to context • Eg. export PRODUCTION_SERVERS=192.168.42.16 MySQL Shell: The DBA toolbox Other features and tweaks 36
  • 37. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Secure credential manager • Passwords queried from a secure password store (uses OS native APIs) • Optional auto-save for typed passwords (default will prompt) • History • Typed command history • Pager • Pass SQL results through an external screen paging program MySQL Shell: The DBA toolbox Other features and tweaks 37
  • 38. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Built-in help – Documentation for included APIs, shell commands, SQL, etc. MySQL Shell: The DBA toolbox Other features and tweaks 38
  • 39. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 The business unit is growing 39 • The systems are vulnerable to downtime • Downtime causes high losses... • Critical data can’t be lost and must ”always” be available! • High Availability becomes mandatory
  • 40. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 The business unit is growing 40 • The systems are vulnerable to downtime • Downtime causes high losses... • Critical data can’t be lost and must ”always” be available! • High Availability becomes mandatory Bill wonders what kind of HA support MySQL has... ?
  • 41. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 41
  • 42. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 42 InnoDB cluster
  • 43. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 43 InnoDB cluster  MySQL Servers running Group Replication
  • 44. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 44 InnoDB cluster  MySQL Servers running Group Replication  App Servers with MySQL Router
  • 45. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 45 InnoDB cluster  MySQL Servers running Group Replication  App Servers with MySQL Router  MySQL Shell  Set up, Manage, Orchestrate IDC
  • 46. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 46 InnoDB cluster  MySQL Servers running Group Replication  App Servers with MySQL Router  MySQL Shell  Set up, Manage, Orchestrate IDC  Clients / Applications
  • 47. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. MySQL Shell: Features (Ops) • Administration API: AdminAPI – Creation and Management of InnoDB Clusters – Hides the complexity of: • Configuration • Provisioning • Orchestration – Simple and straight-forward – Doesn’t require MySQL expertise – Flexible, powerful and secure – Available in both JavaScript and Python 47 MySQL Administration
  • 48. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 The business unit is growing 48 • Bill needs to set up an HA deployment for the company needs • Using the Shell and the AdminAPI he can achieve that very easily!
  • 49. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 The business unit is growing 49 • Bill needs to set up an HA deployment for the company needs • Using the Shell and the AdminAPI he can achieve that very easily! $ mysqlsh mysql-js> dba.configureInstance(“root@host1:3306”, {clusterAdmin: “bill”})
  • 50. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 The business unit is growing 50 • Bill needs to set up an HA deployment for the company needs • Using the Shell and the AdminAPI he can achieve that very easily! $ mysqlsh mysql-js> dba.configureInstance(“root@host1:3306”, {clusterAdmin: “bill”}) mysql-js> var cluster = dba.createCluster(“Cluster1”)
  • 51. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 The business unit is growing 51 • Bill needs to set up an HA deployment for the company needs • Using the Shell and the AdminAPI he can achieve that very easily! $ mysqlsh mysql-js> dba.configureInstance(“root@host1:3306”, {clusterAdmin: “bill”}) mysql-js> var cluster = dba.createCluster(“Cluster1”) mysql-js> cluster.addInstance(“bill@host2:3306”)
  • 52. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 HA in 5 minutes! 52  JSON object describing the structure of the Cluster  Includes general cluster information  Topology:  ReplicaSets  Instance members
  • 53. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 2 HA in 5 minutes! 53  JSON object describing the status of the Cluster  Includes general cluster status  Status information about each ReplicaSet member
  • 54. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 The requirements change 54 • A strange behaviour was seen in the application leading to user complaints
  • 55. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 The requirements change 55 • A strange behaviour was seen in the application leading to user complaints • Ops traced down the issue to the database... And found possible inconsistent reads
  • 56. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 The requirements change 56 • A strange behaviour was seen in the application leading to user complaints • Ops traced down the issue to the database... And found possible inconsistent reads • Finally someone noticed that whenever a primary failover happens, stale data was being read from the newly elected primary causing the strange “inconsistencies”
  • 57. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 The requirements change 57 • A strange behaviour was seen in the application leading to user complaints • Ops traced down the issue to the database... And found possible inconsistent reads • Finally someone noticed that whenever a primary failover happens, stale data was being read from the newly elected primary causing the strange “inconsistencies” • Direction asks for a solution even if it compromises performance!
  • 58. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 Checking the cluster options 58  Verify the current cluster settings
  • 59. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 Checking the cluster options 59  Verify the current cluster settings  JSON object listing configuration options of the Cluster  Includes global cluster options  Includes configuration options of each cluster member
  • 60. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 Failover consistency 60 The failover consistency option can have 2 values: • EVENTUAL (default)  Read queries allowed in the new primary (even if backlog is being applied)  Writes are blocked  Possible stale reads • BEFORE_ON_PRIMARY_FAILOVER  Read and write queries blocked in the new primary (meanwhile backlog is being applied)  “read your writes”
  • 61. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 Change the failover consistency 61 The AdminAPI allows changing a configuration option: 1) For the whole cluster  <Cluster.>setOption(option, value) 2) In a cluster member  <Cluster.>setInstanceOption(instance, option, value)
  • 62. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 3 Change the failover consistency 62 The AdminAPI allows changing a configuration option: 1) For the whole cluster  <Cluster.>setOption(option, value) 2) In a cluster member  <Cluster.>setInstanceOption(instance, option, value)
  • 63. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 4 Maintenance 63 • Maintenance tasks on servers are common... • Bill needs to perform a maintenance task on the current primary instance • Which implies some sort of disruption... • Idealy, Bill would rather manually elect a new primary to avoid any disruption
  • 64. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 4 Maintenance 64 • Maintenance tasks on servers are common... • Bill needs to perform a maintenance task on the current primary instance • Which implies some sort of disruption... • Idealy, Bill would rather manually elect a new primary to avoid any disruption But... How? ?
  • 65. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 4 Elect a new primary 65  <Cluster.>setPrimaryInstance(instance) By using the Shell and the AdminAPI!
  • 66. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 The requirements change... again 66 • Analysis of the dataset and its usage, concluded that the workload could be spread accross the cluster members:
  • 67. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 The requirements change... again 67 • Analysis of the dataset and its usage, concluded that the workload could be spread accross the cluster members: – No concurrent DDL ops in the same object
  • 68. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 The requirements change... again 68 • Analysis of the dataset and its usage, concluded that the workload could be spread accross the cluster members: – No concurrent DDL ops in the same object – No foreign key constraints
  • 69. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 The requirements change... again 69 • Analysis of the dataset and its usage, concluded that the workload could be spread accross the cluster members: – No concurrent DDL ops in the same object – No foreign key constraints – No large transactions, etc.
  • 70. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 The requirements change... again 70 • Analysis of the dataset and its usage, concluded that the workload could be spread accross the cluster members: – No concurrent DDL ops in the same object – No foreign key constraints – No large transactions, etc. • Decision to use Multi-Primary mode, even if not recommended, is taken.
  • 71. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 The requirements change... again 71 • Analysis of the dataset and its usage, concluded that the workload could be spread accross the cluster members: – No concurrent DDL ops in the same object – No foreign key constraints – No large transactions, etc. • Decision to use Multi-Primary mode, even if not recommended, is taken. But that implies the downtime of re-creating the whole cluster! !
  • 72. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.  <Cluster.>switchToMultiPrimaryMode() A common use-case: part 5 Switch to Multi-Primary mode 72 No restarts nor downtime!
  • 73. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case: part 5 Switch to Multi-Primary mode 73 • All cluster members become writable (R/W)  Note: Switch to single-primary mode available with:  <Cluster.>switchToSinglePrimaryMode()
  • 74. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Suddently somes instances are expelled from the cluster • ... even though ops report that the network is OK! • But further investigation concludes the network is actually flaky • Some members are being expelled due to very small network cuts of 2 minutes A common use-case: part 6 Troubleshooting 74
  • 75. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Suddently somes instances are expelled from the cluster • ... even though ops report that the network is OK! • But further investigation concludes the network is actually flaky • Some members are being expelled due to very small network cuts of 2 minutes What can be done? A common use-case: part 6 Troubleshooting 75 ?
  • 76. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Group Replication’s failure detector window is configurable • Allows delays of suspensions of previously active cluster members • Configurable using the AdminAPI! A common use-case: part 6 Defining the expel timeout 76
  • 77. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. A common use-case Other useful features 77 • Define the next primary instance “in line” • memberWeight = x – Integer: [0, 100] • Define the behaviour of an instance whenever it drops out of the cluster • exitStateAction = y – ABORT_SERVER – READ_ONLY • Extended Cluster.status() • extended: true • queryMembers: true
  • 78. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Summary • MySQL Shell brings together developers and DBAs • Unified interface: one tool! • Development and Administration APIs and features • MySQL InnoDB Cluster is THE built-in HA solution for MySQL: • Full-stack: High Availability out-of-the-box • Easy to use: usability as a top concern • Full control of the Cluster using the AdminAPI 78
  • 79. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Resources • MySQL Shell Userguide: – https://dev.mysql.com/doc/refman/en/mysql-shell.html • MySQL InnoDB Cluster Userguide: – http://dev.mysql.com/doc/refman/en/mysql-innodb-cluster-userguide.html • APIs Reference manuals – JavaScript: https://dev.mysql.com/doc/dev/mysqlsh-api-javascript/ – Python: https://dev.mysql.com/doc/dev/mysqlsh-api-python/ • Blogging – http://mysqlserverteam.com/category/high-availability 79
  • 80. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Thank you! Any questions? 80