SlideShare a Scribd company logo
1 of 50
Download to read offline
MySQL Shell
The Best MySQL DBA Tool
Miguel Araújo
Principal Software Developer
MySQL, Oracle
@m1guelaraujo
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.
Safe harbor statement
Copyright © 2020, Oracle and/or its affiliates2
MySQL turned 25 years old this year!
It’s a relational database:
• SQL
• Has a command-line SQL client: mysql
But MySQL isn’t just relational databases...
Context
Copyright © 2020, Oracle and/or its affiliates3
Modern, new command-line client for MySQL
Written from scratch, supporting:
• MySQL Document Store (NoSQL, X DevAPI)
• JSON Documents / SQL Tables
• SQL, Python and JavaScript
• Fully customizable
Meet MySQL Shell
Copyright © 2020, Oracle and/or its affiliates4
Copyright © 2020, Oracle and/or its affiliates5
There’s much more in Shell than meets the eye!
A DBA and Developer Toolbox:
• SQL, JavaScript and Python support
• Auto-completion
• Command history
• Integrated built-in help system
• Customizable prompts / colors
• APIs and Utilities built-in
• Extensible
• Open-source!
MySQL Shell
Copyright © 2020, Oracle and/or its affiliates6
Copyright © 2020, Oracle and/or its affiliates7
MySQL Shell Overview
Copyright © 2020, Oracle and/or its affiliates8
MySQL Shell Overview
MySQL Protocols:
• mysql
• mysqlx
The MySQL Toolbox
Copyright © 2020, Oracle and/or its affiliates9
MySQL Protocols:
• mysql
• mysqlx
ShellAPI:
• OS utilities
• General purpose
functions
• Create Reports
• Create Plugins
• Manage
Credentials
The MySQL Toolbox
Copyright © 2020, Oracle and/or its affiliates10
MySQL Protocols:
• mysql
• mysqlx
ShellAPI:
• OS utilities
• General purpose
functions
• Create Reports
• Create Plugins
• Manage
Credentials
AdminAPI:
• InnoDB Cluster
• InnoDB ReplicaSet
• Sandboxes
The MySQL Toolbox
Copyright © 2020, Oracle and/or its affiliates11
MySQL Protocols:
• mysql
• mysqlx
ShellAPI:
• OS utilities
• General purpose
functions
• Create Reports
• Create Plugins
• Manage
Credentials
AdminAPI:
• InnoDB Cluster
• InnoDB ReplicaSet
• Sandboxes
The MySQL Toolbox
Copyright © 2020, Oracle and/or its affiliates12
Utilities:
• Upgrade checker
• JSON import
• Parallel import
table
• Instance and
Schema dump
• Dump loading
• SQL
• JavaScript
• Full JS engine (V8)
• All core language features
• Python
• 3.6+
Multi-language Support
Copyright © 2020, Oracle and/or its affiliates13
• Auto-complete
• Customizable prompt with colors and state information
Pleasant experience
Copyright © 2020, Oracle and/or its affiliates14
• Auto-complete
• Customizable prompt with colors and state information
• Command history; Pager: more/less
Pleasant experience
Copyright © 2020, Oracle and/or its affiliates15
• Integrated built-in Help system
• Accessible via:
• ? <topic>
• help <topic>
• All functionality available
Pleasant experience
Copyright © 2020, Oracle and/or its affiliates16
• APIs for managing and interacting with MySQL
• All APIs available in JavaScript and Python:
• X DevAPI
• ShellAPI
• AdminAPI
• Flexibility and power of choice
Built-in APIs
Copyright © 2020, Oracle and/or its affiliates17
Classic protocol
// Print a welcome message
println('Create a local MySQL account with special privileges.');
// Prompt for the username if not passed by argument
if (sys.argv[1] == undefined) {
username = shell.prompt('Please enter the username for the account: ');
} else {
username = sys.argv[1];
}
// Prompt for the password
pwd = shell.prompt('Please enter a password for the account ' + username + ': ',
{type: 'password'});
Database APIs
Copyright © 2020, Oracle and/or its affiliates18
Classic protocol
// List of required grants
var grantsList = [
'USAGE ON *.*',
'SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES ON world_x.*'
];
try {
// Create the account
session.runSql('CREATE USER ?@'localhost' IDENTIFIED BY ?', [username, pwd]);
for (var grant in grantsList) {
session.runSql('GRANT ' + grantsList[grant] + 'TO ?@'localhost'',
[username])
}
} catch (err) { (...) }
Database APIs
Copyright © 2020, Oracle and/or its affiliates19
Multiple MySQL connections
Copyright © 2020, Oracle and/or its affiliates20
session1 = mysql.get_session("admin@t480:3330")
session2 = mysql.get_session("root@localhost:3306")
session1.run_sql("SELECT @@hostname, @@port;")
result = session2.run_sql("SELECT * FROM performance_schema.global_status;")
row = result.fetch_all()
print(row[10])
• Work with multiple MySQL sessions simultaneously
• Using ShellAPI and/or X DevAPI
Example in Python:
• DBA focused:
• Upgrade Checker
• JSON import
• Parallel table import
• Dump & load
• Session inspector
• Exposed on the ShellAPI util module
Utilities
Copyright © 2020, Oracle and/or its affiliates21
Upgrade Checker
Copyright © 2020, Oracle and/or its affiliates22
// Available through the util object
mysqlsh-js> util.checkForServerUpgrade("root@localhost");
• Check for compatibility issues for upgrading to MySQL 8
• 5.7 à 8.0+ (current Shell version)
• Warns about required actions:
• Obsolete/conflicting settings
• Schema properties requiring changes
• Can check .cnf files
Upgrade Checker
Copyright © 2020, Oracle and/or its affiliates23
API Command-line Integration
Copyright © 2020, Oracle and/or its affiliates24
• All APIs are available on the command-line
• Accessible using the special delimiter character --
• Arguments follow a syntax suitable for command-line use:
mysqlsh [shell options] -- <object> <command> [command options]
Example:
mysqlsh admin@t480 -- cluster status --extended=1
API Command-line Integration
Copyright © 2020, Oracle and/or its affiliates25
• Integrating Shell’s Upgrade Checker with Puppet:
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=33100 --password='mypassword'"
require => service["mysql"]
}
JSON Import
Copyright © 2020, Oracle and/or its affiliates26
• Import JSON documents into a collection or relational table
• Removes the need to use multiple INSERT statements or write scripts
• Supports BSON data types
// Available through the util object
mysqlsh-js> util.importJson("/home/miguel/banks.json", {schema: "docstore",
collection: "banks"})
// Very handy to be used with the API command-line integration
$ mysqlsh admin@localhost/docstore -- util import-json banks.json --collection=banks
Dump & Load
Copyright © 2020, Oracle and/or its affiliates27
• Powerful utilities to make it easy to do logical dumps and load of:
• A whole database instance
• A set of schemas
• Focus on ease of use:
// Dump and entire database instance, including users
util.dumpInstance(...)
// Dump a set of schemas
util.dumpSchemas(...)
// Load a dump into a target database
util.loadDump(...)
Dump & Load
28
• Focus on performance:
• Multi-threaded dump and load
• Concurrent execution of dump and load
• Built-in compression (zstd & gzip)
• Focus on integration:
• Dump & Load straight to/from OCI Object Storage
• Compatibility modes for importing into OCI MySQL Database Service
Copyright © 2020, Oracle and/or its affiliates
Dump & Load
Copyright © 2020, Oracle and/or its affiliates29
Replication & High Availability
Copyright © 2020, Oracle and/or its affiliates30
• MySQL offered individual components to achieve Highly Available setups
• Leaving it up to the user to set-up the architectures…
Replication & High Availability
Copyright © 2020, Oracle and/or its affiliates31
• MySQL offered individual components to achieve Highly Available setups
• Leaving it up to the user to set-up the architectures…
1. Provisioning, restoring backups
2. User management
3. Replication configuration
4. Deployment of client proxies
5. Manually changing topologies (or rely on external tools)
6. Use additional monitoring tools
Copyright © 2020, Oracle and/or its affiliates32
A lot of work for DBA’s and
SysAdmins, who spend their
time automating.
AdminAPI
33
• Setup and Management of InnoDB Cluster / ReplicaSet
• Hides the complexity of:
• Configuration
• Provisioning
• Orchestration
• Simple and straight-forward
• Doesn’t require MySQL expertise
• Flexible, powerful and secure
MySQL
Administration
Copyright © 2020, Oracle and/or its affiliates
§ MySQL Group Replication
§ MySQL Shell
§ MySQL Router
Complete HA Solution!
MySQL InnoDB Cluster
Copyright © 2020, Oracle and/or its affiliates34
§ MySQL Replication
§ MySQL Shell
§ MySQL Router
Simple but complete Replication
Solution!
MySQL InnoDB ReplicaSet
Copyright © 2020, Oracle and/or its affiliates35
Creating a Cluster
// Configure Instances for Cluster usage
mysqlsh-js> dba.configureInstance("root@mysql1", {clusterAdmin: "admin"})
(...)
// Create the Cluster
mysqlsh-js> c admin@mysql1
mysqlsh-js> cluster = dba.createCluster("myCluster")
// Add Instances to the Cluster
mysqlsh-js> cluster.addInstance("mysql2")
AdminAPI
Copyright © 2020, Oracle and/or its affiliates36
Creating a ReplicaSet
// Configure Instances for ReplicaSet usage
mysqlsh-js> dba.configureReplicaSetInstance("root@mysql4", {clusterAdmin: "admin"})
(...)
// Create the ReplicaSet
mysqlsh-js> c admin@mysql4
mysqlsh-js> replicaset = dba.createReplicaSet("myReplicaSet")
// Add Instances to the ReplicaSet
mysqlsh-js> replicaset.addInstance("mysql5")
AdminAPI
Copyright © 2020, Oracle and/or its affiliates37
Couldn’t be
easier!
Copyright © 2020, Oracle and/or its affiliates38
Powerful solutions supported by Shell’s
ease of use.
• General purpose functions and properties
• OS utilities
• Credential Manager
• Extend MySQL Shell
• Reports
• Plugins
ShellAPI
Copyright © 2020, Oracle and/or its affiliates39
Credential Manager
Copyright © 2020, Oracle and/or its affiliates40
• Store passwords using a secret store or keychain
• Greatly improves usability and saves time
• Built-in support for:
• MySQL login-path (mysql_config_editor)
• macOS keychain
• Windows Credentials Management API
Credential Manager
Copyright © 2020, Oracle and/or its affiliates41
// List available Secret Stores
mysqlsh-js> shell.listCredentialHelpers();
[
"keychain",
"login-path"
]
// List stored credentials
mysqlsh-js> shell.listCredentials();
[
"miguel@t480:3306",
"admin@10.0.2.15:3306",
"customer@10.0.2.15:3306"
]
Extend MySQL Shell
Copyright © 2020, Oracle and/or its affiliates42
• Extend Shell functionality through plugins
• Create new global reports or extensions objects
• Available in JavaScript or Python
• All Shell APIs available
• Automatically loaded at start-up
Extend MySQL Shell
Copyright © 2020, Oracle and/or its affiliates43
// Register a user-defined report
shell.registerReport([name, type, report[, description]);
// Create an extension object
shell.createExtensionObject();
// Add a new member into an extension object
shell.addExtensionObjectMember([object, name, member[, definition]);
// Register an extension object as a Shell global object
shell.registerGlobal(name, object[, definition]);
• API to register extensions:
Create a Report to get the uptime
Copyright © 2020, Oracle and/or its affiliates44
def uptime(session):
stmt = "SELECT TIME_FORMAT(SEC_TO_TIME(VARIABLE_VALUE ), '%Hh %im %ss') AS Uptime
FROM performance_schema.global_status WHERE VARIABLE_VALUE='Uptime';"
result = session.run_sql(stmt)
report = [result.get_column_names()]
for row in result.fetch_all():
report.append(list(row))
return {'report': report}
.mysqlsh/init.d/uptime.py:0
Create a Report to get the uptime
Copyright © 2020, Oracle and/or its affiliates45
shell.register_report(
'uptime',
'list',
uptime,
{
'brief': 'Shows Server Uptime.',
'details': ['You need the SELECT privileges on performance_schema.*'],
'arg': '0'
}
}
.mysqlsh/init.d/uptime.py:13
Create a Report to get the uptime
Copyright © 2020, Oracle and/or its affiliates46
Create a Plugin for system information
Copyright © 2020, Oracle and/or its affiliates47
.mysqlsh/plugins/ext/system_info/init.py
from mysqlsh.plugin_manager import plugin, plugin_function
@plugin
class system_info:
"""
System Information
A collection of tools to gather system information.
"""
@plugin_function("system_info.get_public_key")
def get_public_key(session=None, verbose=False):
"""
Get RSA Public Key of (...)
Create a Plugin for system information
Copyright © 2020, Oracle and/or its affiliates48
• MySQL Shell’s goal is to be the primary frontend for most of MySQL
functionality
• It’s an unified interface for Developers and DBAs
• Brings ease of use for complex tasks
• Frontend manager for InnoDB Cluster and InnoDB ReplicaSet
• Extensible and open-source!
Summary
Copyright © 2020, Oracle and/or its affiliates49
ü Give it a try! dev.mysql.com/downloads/shell/
ü Check and contribute to lefred’s collection of MySQL Shell plugins:
github.com/lefred/mysqlshell-plugins
ü Blogs: mysqlhighavailability.com / mysqlserverteam.com
ü Reach us out on Slack! mysqlcommunity.slack.com
#shell / #mysql_innodb_cluster
Additional Resources
Copyright © 2020, Oracle and/or its affiliates50

More Related Content

What's hot

Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Miguel Araújo
 
MySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a NutshellMySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a NutshellFrederic Descamps
 
MySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & DemoMySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & DemoKeith Hollman
 
ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022René Cannaò
 
MySQL Database Architectures - 2020-10
MySQL Database Architectures -  2020-10MySQL Database Architectures -  2020-10
MySQL Database Architectures - 2020-10Kenny Gryp
 
MariaDB 10.11 key features overview for DBAs
MariaDB 10.11 key features overview for DBAsMariaDB 10.11 key features overview for DBAs
MariaDB 10.11 key features overview for DBAsFederico Razzoli
 
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...Severalnines
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1NeoClova
 
MySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsMySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsFrederic Descamps
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialJean-François Gagné
 
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Mydbops
 
MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08Kenny Gryp
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8Frederic Descamps
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group ReplicationUlf Wendel
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼NeoClova
 
Running MariaDB in multiple data centers
Running MariaDB in multiple data centersRunning MariaDB in multiple data centers
Running MariaDB in multiple data centersMariaDB plc
 
ProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management OverviewProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management OverviewRené Cannaò
 
Tanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata MigrationsTanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata MigrationsTanel Poder
 
Dd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublinDd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublinStåle Deraas
 

What's hot (20)

Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
 
MySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a NutshellMySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a Nutshell
 
Introduction to Galera Cluster
Introduction to Galera ClusterIntroduction to Galera Cluster
Introduction to Galera Cluster
 
MySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & DemoMySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & Demo
 
ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022
 
MySQL Database Architectures - 2020-10
MySQL Database Architectures -  2020-10MySQL Database Architectures -  2020-10
MySQL Database Architectures - 2020-10
 
MariaDB 10.11 key features overview for DBAs
MariaDB 10.11 key features overview for DBAsMariaDB 10.11 key features overview for DBAs
MariaDB 10.11 key features overview for DBAs
 
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
MySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsMySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & Operations
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication Tutorial
 
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
 
MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼
 
Running MariaDB in multiple data centers
Running MariaDB in multiple data centersRunning MariaDB in multiple data centers
Running MariaDB in multiple data centers
 
ProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management OverviewProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management Overview
 
Tanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata MigrationsTanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata Migrations
 
Dd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublinDd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublin
 

Similar to MySQL Shell - The Best MySQL DBA Tool

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
 
20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shell20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shellIvan Ma
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONMario Beck
 
MySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMiguel Araújo
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deploymentIvan Ma
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...Geir Høydalsvik
 
MySQL 8.0 from December London Open Source Database Meetup
MySQL 8.0 from December London Open Source Database MeetupMySQL 8.0 from December London Open Source Database Meetup
MySQL 8.0 from December London Open Source Database MeetupDave Stokes
 
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...GeneXus
 
MySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime TimeMySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime TimeArnab Ray
 
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Olivier DASINI
 
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...Geir Høydalsvik
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesDave 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
 
[OSC 2020 Osaka] MySQL"超"入門
[OSC 2020 Osaka] MySQL"超"入門[OSC 2020 Osaka] MySQL"超"入門
[OSC 2020 Osaka] MySQL"超"入門Ryusuke Kajiyama
 
MySQL Ecosystem in 2020
MySQL Ecosystem in 2020MySQL Ecosystem in 2020
MySQL Ecosystem in 2020Alkin Tezuysal
 
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?Olivier DASINI
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?Olivier DASINI
 
BGOUG 2014: Developing Using MySQL
BGOUG 2014: Developing Using MySQLBGOUG 2014: Developing Using MySQL
BGOUG 2014: Developing Using MySQLGeorgi Kodinov
 

Similar to MySQL Shell - The Best MySQL DBA 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.
 
20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shell20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shell
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSON
 
MySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQL
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deployment
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
 
MySQL 8.0 from December London Open Source Database Meetup
MySQL 8.0 from December London Open Source Database MeetupMySQL 8.0 from December London Open Source Database Meetup
MySQL 8.0 from December London Open Source Database Meetup
 
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
 
MySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime TimeMySQL 8: Ready for Prime Time
MySQL 8: Ready for Prime Time
 
MySQL on Docker and Kubernetes
MySQL on Docker and KubernetesMySQL on Docker and Kubernetes
MySQL on Docker and Kubernetes
 
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
 
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New Features
 
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
 
[OSC 2020 Osaka] MySQL"超"入門
[OSC 2020 Osaka] MySQL"超"入門[OSC 2020 Osaka] MySQL"超"入門
[OSC 2020 Osaka] MySQL"超"入門
 
MySQL Ecosystem in 2020
MySQL Ecosystem in 2020MySQL Ecosystem in 2020
MySQL Ecosystem in 2020
 
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
 
BGOUG 2014: Developing Using MySQL
BGOUG 2014: Developing Using MySQLBGOUG 2014: Developing Using MySQL
BGOUG 2014: Developing Using MySQL
 

More from 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.pdfMiguel Araújo
 
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...Miguel Araújo
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMiguel Araújo
 
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL ShellMySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL ShellMiguel Araújo
 
MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...
MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...
MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...Miguel Araújo
 
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
 
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
 
MySQL Shell - The DevOps Tool for MySQL
MySQL Shell - The DevOps Tool for MySQLMySQL Shell - The DevOps Tool for MySQL
MySQL Shell - The DevOps Tool for MySQLMiguel Araújo
 
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
 
SLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foesSLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foesMiguel Araújo
 
Asynchronous Replication of Databases
Asynchronous Replication of DatabasesAsynchronous Replication of Databases
Asynchronous Replication of DatabasesMiguel 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 DatabasesMiguel Araújo
 

More from Miguel Araújo (14)

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)
 
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!
 
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
 
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - Tutorial
 
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL ShellMySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
 
MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...
MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...
MySQL Shell - A DevOps-engineer day with MySQL’s development and administrati...
 
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
 
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!
 
MySQL Shell - The DevOps Tool for MySQL
MySQL Shell - The DevOps Tool for MySQLMySQL Shell - The DevOps Tool for MySQL
MySQL Shell - The DevOps Tool for MySQL
 
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.
 
SLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foesSLQ vs NOSQL - friends or foes
SLQ vs NOSQL - friends or foes
 
Asynchronous Replication of Databases
Asynchronous Replication of DatabasesAsynchronous Replication of Databases
Asynchronous Replication of Databases
 
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
 

Recently uploaded

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 

Recently uploaded (20)

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 

MySQL Shell - The Best MySQL DBA Tool

  • 1. MySQL Shell The Best MySQL DBA Tool Miguel Araújo Principal Software Developer MySQL, Oracle @m1guelaraujo
  • 2. 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. Safe harbor statement Copyright © 2020, Oracle and/or its affiliates2
  • 3. MySQL turned 25 years old this year! It’s a relational database: • SQL • Has a command-line SQL client: mysql But MySQL isn’t just relational databases... Context Copyright © 2020, Oracle and/or its affiliates3
  • 4. Modern, new command-line client for MySQL Written from scratch, supporting: • MySQL Document Store (NoSQL, X DevAPI) • JSON Documents / SQL Tables • SQL, Python and JavaScript • Fully customizable Meet MySQL Shell Copyright © 2020, Oracle and/or its affiliates4
  • 5. Copyright © 2020, Oracle and/or its affiliates5 There’s much more in Shell than meets the eye!
  • 6. A DBA and Developer Toolbox: • SQL, JavaScript and Python support • Auto-completion • Command history • Integrated built-in help system • Customizable prompts / colors • APIs and Utilities built-in • Extensible • Open-source! MySQL Shell Copyright © 2020, Oracle and/or its affiliates6
  • 7. Copyright © 2020, Oracle and/or its affiliates7 MySQL Shell Overview
  • 8. Copyright © 2020, Oracle and/or its affiliates8 MySQL Shell Overview
  • 9. MySQL Protocols: • mysql • mysqlx The MySQL Toolbox Copyright © 2020, Oracle and/or its affiliates9
  • 10. MySQL Protocols: • mysql • mysqlx ShellAPI: • OS utilities • General purpose functions • Create Reports • Create Plugins • Manage Credentials The MySQL Toolbox Copyright © 2020, Oracle and/or its affiliates10
  • 11. MySQL Protocols: • mysql • mysqlx ShellAPI: • OS utilities • General purpose functions • Create Reports • Create Plugins • Manage Credentials AdminAPI: • InnoDB Cluster • InnoDB ReplicaSet • Sandboxes The MySQL Toolbox Copyright © 2020, Oracle and/or its affiliates11
  • 12. MySQL Protocols: • mysql • mysqlx ShellAPI: • OS utilities • General purpose functions • Create Reports • Create Plugins • Manage Credentials AdminAPI: • InnoDB Cluster • InnoDB ReplicaSet • Sandboxes The MySQL Toolbox Copyright © 2020, Oracle and/or its affiliates12 Utilities: • Upgrade checker • JSON import • Parallel import table • Instance and Schema dump • Dump loading
  • 13. • SQL • JavaScript • Full JS engine (V8) • All core language features • Python • 3.6+ Multi-language Support Copyright © 2020, Oracle and/or its affiliates13
  • 14. • Auto-complete • Customizable prompt with colors and state information Pleasant experience Copyright © 2020, Oracle and/or its affiliates14
  • 15. • Auto-complete • Customizable prompt with colors and state information • Command history; Pager: more/less Pleasant experience Copyright © 2020, Oracle and/or its affiliates15
  • 16. • Integrated built-in Help system • Accessible via: • ? <topic> • help <topic> • All functionality available Pleasant experience Copyright © 2020, Oracle and/or its affiliates16
  • 17. • APIs for managing and interacting with MySQL • All APIs available in JavaScript and Python: • X DevAPI • ShellAPI • AdminAPI • Flexibility and power of choice Built-in APIs Copyright © 2020, Oracle and/or its affiliates17
  • 18. Classic protocol // Print a welcome message println('Create a local MySQL account with special privileges.'); // Prompt for the username if not passed by argument if (sys.argv[1] == undefined) { username = shell.prompt('Please enter the username for the account: '); } else { username = sys.argv[1]; } // Prompt for the password pwd = shell.prompt('Please enter a password for the account ' + username + ': ', {type: 'password'}); Database APIs Copyright © 2020, Oracle and/or its affiliates18
  • 19. Classic protocol // List of required grants var grantsList = [ 'USAGE ON *.*', 'SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES ON world_x.*' ]; try { // Create the account session.runSql('CREATE USER ?@'localhost' IDENTIFIED BY ?', [username, pwd]); for (var grant in grantsList) { session.runSql('GRANT ' + grantsList[grant] + 'TO ?@'localhost'', [username]) } } catch (err) { (...) } Database APIs Copyright © 2020, Oracle and/or its affiliates19
  • 20. Multiple MySQL connections Copyright © 2020, Oracle and/or its affiliates20 session1 = mysql.get_session("admin@t480:3330") session2 = mysql.get_session("root@localhost:3306") session1.run_sql("SELECT @@hostname, @@port;") result = session2.run_sql("SELECT * FROM performance_schema.global_status;") row = result.fetch_all() print(row[10]) • Work with multiple MySQL sessions simultaneously • Using ShellAPI and/or X DevAPI Example in Python:
  • 21. • DBA focused: • Upgrade Checker • JSON import • Parallel table import • Dump & load • Session inspector • Exposed on the ShellAPI util module Utilities Copyright © 2020, Oracle and/or its affiliates21
  • 22. Upgrade Checker Copyright © 2020, Oracle and/or its affiliates22 // Available through the util object mysqlsh-js> util.checkForServerUpgrade("root@localhost"); • Check for compatibility issues for upgrading to MySQL 8 • 5.7 à 8.0+ (current Shell version) • Warns about required actions: • Obsolete/conflicting settings • Schema properties requiring changes • Can check .cnf files
  • 23. Upgrade Checker Copyright © 2020, Oracle and/or its affiliates23
  • 24. API Command-line Integration Copyright © 2020, Oracle and/or its affiliates24 • All APIs are available on the command-line • Accessible using the special delimiter character -- • Arguments follow a syntax suitable for command-line use: mysqlsh [shell options] -- <object> <command> [command options] Example: mysqlsh admin@t480 -- cluster status --extended=1
  • 25. API Command-line Integration Copyright © 2020, Oracle and/or its affiliates25 • Integrating Shell’s Upgrade Checker with Puppet: 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=33100 --password='mypassword'" require => service["mysql"] }
  • 26. JSON Import Copyright © 2020, Oracle and/or its affiliates26 • Import JSON documents into a collection or relational table • Removes the need to use multiple INSERT statements or write scripts • Supports BSON data types // Available through the util object mysqlsh-js> util.importJson("/home/miguel/banks.json", {schema: "docstore", collection: "banks"}) // Very handy to be used with the API command-line integration $ mysqlsh admin@localhost/docstore -- util import-json banks.json --collection=banks
  • 27. Dump & Load Copyright © 2020, Oracle and/or its affiliates27 • Powerful utilities to make it easy to do logical dumps and load of: • A whole database instance • A set of schemas • Focus on ease of use: // Dump and entire database instance, including users util.dumpInstance(...) // Dump a set of schemas util.dumpSchemas(...) // Load a dump into a target database util.loadDump(...)
  • 28. Dump & Load 28 • Focus on performance: • Multi-threaded dump and load • Concurrent execution of dump and load • Built-in compression (zstd & gzip) • Focus on integration: • Dump & Load straight to/from OCI Object Storage • Compatibility modes for importing into OCI MySQL Database Service Copyright © 2020, Oracle and/or its affiliates
  • 29. Dump & Load Copyright © 2020, Oracle and/or its affiliates29
  • 30. Replication & High Availability Copyright © 2020, Oracle and/or its affiliates30 • MySQL offered individual components to achieve Highly Available setups • Leaving it up to the user to set-up the architectures…
  • 31. Replication & High Availability Copyright © 2020, Oracle and/or its affiliates31 • MySQL offered individual components to achieve Highly Available setups • Leaving it up to the user to set-up the architectures… 1. Provisioning, restoring backups 2. User management 3. Replication configuration 4. Deployment of client proxies 5. Manually changing topologies (or rely on external tools) 6. Use additional monitoring tools
  • 32. Copyright © 2020, Oracle and/or its affiliates32 A lot of work for DBA’s and SysAdmins, who spend their time automating.
  • 33. AdminAPI 33 • Setup and Management of InnoDB Cluster / ReplicaSet • Hides the complexity of: • Configuration • Provisioning • Orchestration • Simple and straight-forward • Doesn’t require MySQL expertise • Flexible, powerful and secure MySQL Administration Copyright © 2020, Oracle and/or its affiliates
  • 34. § MySQL Group Replication § MySQL Shell § MySQL Router Complete HA Solution! MySQL InnoDB Cluster Copyright © 2020, Oracle and/or its affiliates34
  • 35. § MySQL Replication § MySQL Shell § MySQL Router Simple but complete Replication Solution! MySQL InnoDB ReplicaSet Copyright © 2020, Oracle and/or its affiliates35
  • 36. Creating a Cluster // Configure Instances for Cluster usage mysqlsh-js> dba.configureInstance("root@mysql1", {clusterAdmin: "admin"}) (...) // Create the Cluster mysqlsh-js> c admin@mysql1 mysqlsh-js> cluster = dba.createCluster("myCluster") // Add Instances to the Cluster mysqlsh-js> cluster.addInstance("mysql2") AdminAPI Copyright © 2020, Oracle and/or its affiliates36
  • 37. Creating a ReplicaSet // Configure Instances for ReplicaSet usage mysqlsh-js> dba.configureReplicaSetInstance("root@mysql4", {clusterAdmin: "admin"}) (...) // Create the ReplicaSet mysqlsh-js> c admin@mysql4 mysqlsh-js> replicaset = dba.createReplicaSet("myReplicaSet") // Add Instances to the ReplicaSet mysqlsh-js> replicaset.addInstance("mysql5") AdminAPI Copyright © 2020, Oracle and/or its affiliates37
  • 38. Couldn’t be easier! Copyright © 2020, Oracle and/or its affiliates38 Powerful solutions supported by Shell’s ease of use.
  • 39. • General purpose functions and properties • OS utilities • Credential Manager • Extend MySQL Shell • Reports • Plugins ShellAPI Copyright © 2020, Oracle and/or its affiliates39
  • 40. Credential Manager Copyright © 2020, Oracle and/or its affiliates40 • Store passwords using a secret store or keychain • Greatly improves usability and saves time • Built-in support for: • MySQL login-path (mysql_config_editor) • macOS keychain • Windows Credentials Management API
  • 41. Credential Manager Copyright © 2020, Oracle and/or its affiliates41 // List available Secret Stores mysqlsh-js> shell.listCredentialHelpers(); [ "keychain", "login-path" ] // List stored credentials mysqlsh-js> shell.listCredentials(); [ "miguel@t480:3306", "admin@10.0.2.15:3306", "customer@10.0.2.15:3306" ]
  • 42. Extend MySQL Shell Copyright © 2020, Oracle and/or its affiliates42 • Extend Shell functionality through plugins • Create new global reports or extensions objects • Available in JavaScript or Python • All Shell APIs available • Automatically loaded at start-up
  • 43. Extend MySQL Shell Copyright © 2020, Oracle and/or its affiliates43 // Register a user-defined report shell.registerReport([name, type, report[, description]); // Create an extension object shell.createExtensionObject(); // Add a new member into an extension object shell.addExtensionObjectMember([object, name, member[, definition]); // Register an extension object as a Shell global object shell.registerGlobal(name, object[, definition]); • API to register extensions:
  • 44. Create a Report to get the uptime Copyright © 2020, Oracle and/or its affiliates44 def uptime(session): stmt = "SELECT TIME_FORMAT(SEC_TO_TIME(VARIABLE_VALUE ), '%Hh %im %ss') AS Uptime FROM performance_schema.global_status WHERE VARIABLE_VALUE='Uptime';" result = session.run_sql(stmt) report = [result.get_column_names()] for row in result.fetch_all(): report.append(list(row)) return {'report': report} .mysqlsh/init.d/uptime.py:0
  • 45. Create a Report to get the uptime Copyright © 2020, Oracle and/or its affiliates45 shell.register_report( 'uptime', 'list', uptime, { 'brief': 'Shows Server Uptime.', 'details': ['You need the SELECT privileges on performance_schema.*'], 'arg': '0' } } .mysqlsh/init.d/uptime.py:13
  • 46. Create a Report to get the uptime Copyright © 2020, Oracle and/or its affiliates46
  • 47. Create a Plugin for system information Copyright © 2020, Oracle and/or its affiliates47 .mysqlsh/plugins/ext/system_info/init.py from mysqlsh.plugin_manager import plugin, plugin_function @plugin class system_info: """ System Information A collection of tools to gather system information. """ @plugin_function("system_info.get_public_key") def get_public_key(session=None, verbose=False): """ Get RSA Public Key of (...)
  • 48. Create a Plugin for system information Copyright © 2020, Oracle and/or its affiliates48
  • 49. • MySQL Shell’s goal is to be the primary frontend for most of MySQL functionality • It’s an unified interface for Developers and DBAs • Brings ease of use for complex tasks • Frontend manager for InnoDB Cluster and InnoDB ReplicaSet • Extensible and open-source! Summary Copyright © 2020, Oracle and/or its affiliates49
  • 50. ü Give it a try! dev.mysql.com/downloads/shell/ ü Check and contribute to lefred’s collection of MySQL Shell plugins: github.com/lefred/mysqlshell-plugins ü Blogs: mysqlhighavailability.com / mysqlserverteam.com ü Reach us out on Slack! mysqlcommunity.slack.com #shell / #mysql_innodb_cluster Additional Resources Copyright © 2020, Oracle and/or its affiliates50