SlideShare a Scribd company logo
1 / 69
MySQL Shell : the best DBA tool ?
How to use MySQL Shell as a framework for DBAs
Frédéric Descamps
Community Manager
MySQL
September 2019
2 / 69
 
Safe Harbor
The following is intended to outline our general product direction. It is intended for information purpose 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 up in making purchasing decisions. The development, release, timing and pricing of any
features or functionality described for Oracle´s product may change and remains at the sole discretion of Oracle
Corporation.
Statement in this presentation relating to Oracle´s future plans, expectations, beliefs, intentions and ptospects
are "forward-looking statements" and are subject to material risks and uncertainties. A detailed discussion of
these factors and other risks that a ect our business is contained in Oracle´s Securities and Exchange
Commission (SEC) lings, including our most recent reports on Form 10-K and Form 10-Q under the heading
"Risk Factors". These lings are available on the SEC´s website or on Oracle´s website at
h p://www.oracle.com/investor. All information in this presentation is current as of September 2019 and Oracle
undertakes no duty to update any statement in light of new information or future events.
Copyright @ 2019 Oracle and/or its affiliates.
3 / 69
about.me/lefred
Who am I ?
Copyright @ 2019 Oracle and/or its affiliates.
4 / 69
Frédéric Descamps
@lefred
MySQL Evangelist
Managing MySQL since 3.23
devops believer
living in Belgium 🇧🇪
h ps://lefred.be
Copyright @ 2019 Oracle and/or its affiliates.
5 / 69
a new tool
MySQL Shell
Copyright @ 2019 Oracle and/or its affiliates.
6 / 69
MySQL Shell
The MySQL Shell is an interactive Javascript, Python, or SQL interface supporting
development and administration for the MySQL Server and is a component of the MySQL
Server. You can use the MySQL Shell to perform data queries and updates as well as
various administration operations.
Copyright @ 2019 Oracle and/or its affiliates.
7 / 69
MySQL Shell (2)
The MySQL Shell provides:
Copyright @ 2019 Oracle and/or its affiliates.
8 / 69
MySQL Shell (2)
The MySQL Shell provides:
Both Interactive and Batch operations
Copyright @ 2019 Oracle and/or its affiliates.
9 / 69
MySQL Shell (2)
The MySQL Shell provides:
Both Interactive and Batch operations
Document and Relational Models
Copyright @ 2019 Oracle and/or its affiliates.
10 / 69
MySQL Shell (2)
The MySQL Shell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Copyright @ 2019 Oracle and/or its affiliates.
11 / 69
MySQL Shell (2)
The MySQL Shell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Traditional Table, JSON, Tab Separated output results formats
Copyright @ 2019 Oracle and/or its affiliates.
12 / 69
MySQL Shell (2)
The MySQL Shell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Traditional Table, JSON, Tab Separated output results formats
MySQL Standard and X Protocols
Copyright @ 2019 Oracle and/or its affiliates.
13 / 69
MySQL Shell (2)
The MySQL Shell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Traditional Table, JSON, Tab Separated output results formats
MySQL Standard and X Protocols
and more...
Copyright @ 2019 Oracle and/or its affiliates.
14 / 69
MySQL Shell Overview
PY
JS
SQL
>
MySQL 8.0
Upgrade Checker
Auto Completion
&
Command History
Output
Formats
(table, json, tabs)
Prompt
Themes
Batch
Execution
5.7
8.0
JS
Document
Store
X dev API
SQL CLI InnoDB
Cluster
importJSON
JSJS
parallel
importTABLE
data
Copyright @ 2019 Oracle and/or its affiliates.
15 / 69
setup your environment
Starting with MySQL Shell
Copyright @ 2019 Oracle and/or its affiliates.
16 / 69
Install MySQL Shell
the package's name to install is mysql-shell
you always need to use the latest available even with a lower MySQL Server version
latest version if 8.0.17, use it even with MySQL 5.7.x
Shell
Copyright @ 2019 Oracle and/or its affiliates.
17 / 69
Start a beautiful Shell
The default prompts is basic, we provide several di erent prompt examples.
# cp /usr/share/mysqlsh/prompt/prompt_256pl+aw.json ~/.mysqlsh/prompt.json
Then start the mysqlsh:
Copyright @ 2019 Oracle and/or its affiliates.
18 / 69
Some configuration tips
These are some se ings I usually use:
mysql-js> shell.options.setPersist('history.autoSave', 1)
mysql-js> shell.options.setPersist('history.maxSize', 5000)
You can swithc to all 3 di erent modes using:
py for Python
js for Javascript
sql for SQL
If you have a preferred mode, you can specify it like this:
mysql-js> shell.options.setPersist('defaultMode', 'sql')
Copyright @ 2019 Oracle and/or its affiliates.
19 / 69
Util
The MySQL Shell comes with a global object called util. This object is used to perform
some dedicated DBA tasks like:
Checking if the server's con guration and schema design is compatible with next
MySQL version (checkForServerUpdrade())
Importing JSON documents, like exports from MondoDB (importJSON())
Importing table dumps in parallel (importTable())
Con guring OCI pro le (con gureOCI())
Copyright @ 2019 Oracle and/or its affiliates.
20 / 69
Admin API
The Admin API is used to con gure MySQL instances to be part of a MySQL InnoDB
Cluster.
It also creates and manage clusters.
More Info: h ps://lefred.be/content/mysql-innodb-cluster-from-scratch-even-more-
easy-since-8-0-17/
Copyright @ 2019 Oracle and/or its affiliates.
21 / 69
Admin API in action
Copyright @ 2019 Oracle and/or its affiliates.
22 / 69
we want more !
Extending MySQL Shell
Copyright @ 2019 Oracle and/or its affiliates.
23 / 69
MySQL Shell and Javascript
In JS mode, it's also possible to load some pure Javascript modules installed in sys.path:
Copyright @ 2019 Oracle and/or its affiliates.
24 / 69
MySQL Shell and Javascript (2)
The module has to be pure JS (not node.JS) modules:
Copyright @ 2019 Oracle and/or its affiliates.
25 / 69
MySQL Shell and Javascript (3)
Then your module can be loaded and used like this:
Copyright @ 2019 Oracle and/or its affiliates.
26 / 69
MySQL Shell and Python
When using the python mode in the Shell, it's even possible to use system modules (local).
Copyright @ 2019 Oracle and/or its affiliates.
27 / 69
MySQL Shell and Python (2)
Of course this can be any type of modules:
Copyright @ 2019 Oracle and/or its affiliates.
28 / 69
MySQL Shell and Python (2)
Of course this can be any type of modules:
Copyright @ 2019 Oracle and/or its affiliates.
29 / 69
Extending MySQL Shell
Since 8.0.17, you have 3 di erent ways to extend the MySQL Shell:
using the new Reporting Framework (>= 8.0.16)
create your own modules to extend MySQL Shell (obsolete)
create your own plugins that will be completely integrated in all supported interpreters
(>= 8.0.17)
8.0
Copyright @ 2019 Oracle and/or its affiliates.
30 / 69
MySQL Shell User-Defined Reports
You can create reports that are called once on demand (show) or constantly refreshed
(watch).
Example for checking the LOCKS:
Copyright @ 2019 Oracle and/or its affiliates.
31 / 69
MySQL Shell User-Defined Reports (2)
This is a Python le (locks_info.py) installed in ~/.mysqlsh/init.d:
It contains a de nition and a registration:
def locks_info(session):
query = session.sql("select ...")
...
return {'report': report}
shell.register_report(
'locks_info',
'list',
locks_info,
{
'brief': 'Shows Locks.',
'details': ['You need the SELECT privilege on sys.session view and the ..'],
'argc': '0'
}
)
Copyright @ 2019 Oracle and/or its affiliates.
32 / 69
MySQL Shell User-Defined Reports (3)
User-De ned Reports can be called from any MySQL Shell mode, even SQL:
Copyright @ 2019 Oracle and/or its affiliates.
33 / 69
MySQL Shell User-Defined Reports (4)
More info:
h ps://lefred.be/content/using-the-new-mysql-shell-reporting-framework-to-
monitor-innodb-cluster/
h ps://lefred.be/content/mysql-innodb-cluster-recovery-process-monitoring-with-
the-mysql-shell-reporting-framework/
Copyright @ 2019 Oracle and/or its affiliates.
34 / 69
MySQL Shell User-Defined Reports (4)
Sources of Examples:
h ps://github.com/lefred/mysql-shell-udr
Pull Requests welcome !
Copyright @ 2019 Oracle and/or its affiliates.
35 / 69
Why should I extend the MySQL Shell with
plugins?
For calling some long statements or group of operations or sometimes to replace a
missing functionality.
Copyright @ 2019 Oracle and/or its affiliates.
36 / 69
Why should I extend the MySQL Shell with
plugins?
For calling some long statements or group of operations or sometimes to replace a
missing functionality.
Recently, somebody pointed out that since the new DD it was not anymore possible to
delete all routines for a speci c schema.
Copyright @ 2019 Oracle and/or its affiliates.
37 / 69
Why should I extend the MySQL Shell with
plugins?
For calling some long statements or group of operations or sometimes to replace a
missing functionality.
Recently, somebody pointed out that since the new DD it was not anymore possible to
delete all routines for a speci c schema.
Jesper explained how the MySQL Shell could help here see
h ps://mysql.wisborg.dk/2018/12/02/mysql-8-drop-several-stored-events-procedures-
or-functions/
Copyright @ 2019 Oracle and/or its affiliates.
38 / 69
Using a plugin within MySQL Shell
Plugins are available from the ext global object:
Copyright @ 2019 Oracle and/or its affiliates.
39 / 69
Using a plugin within MySQL Shell (2)
Help is automatically available:
Copyright @ 2019 Oracle and/or its affiliates.
40 / 69
Using a plugin within MySQL Shell (3)
Plugins are available from JS and Python, regardless of the language in which they are
wri en:
Copyright @ 2019 Oracle and/or its affiliates.
41 / 69
Using a plugin wi thin MySQL Shell (4)
The help goes from the plugin to its methods:
Copyright @ 2019 Oracle and/or its affiliates.
42 / 69
Using a plugin within MySQL Shell (5)
And nally the plugin in action:
Copyright @ 2019 Oracle and/or its affiliates.
43 / 69
Using a plugin within MySQL Shell (5)
And nally the plugin in action:
Copyright @ 2019 Oracle and/or its affiliates.
44 / 69
How to use MySQL Shell Plugins ?
Plugins must be installed inside ~/.mysqlsh/plugins/ext directory.
Several existing plugins can be found at h ps://github.com/lefred/mysqlshell-plugins
Plugins are split in di erent categories:
audit innodb_cluster router
collations maintenance schema
con guration performance security
demo proxysql support
innodb ...
Copyright @ 2019 Oracle and/or its affiliates.
45 / 69
Overview of some plugins
Extending MySQL Shell with Plugins
Copyright @ 2019 Oracle and/or its affiliates.
46 / 69
MySQL Shell: Security
Retrieving the expiration period of passwords:
Copyright @ 2019 Oracle and/or its affiliates.
47 / 69
MySQL Shell: InnoDB
Which tables are potentially fragmented:
Copyright @ 2019 Oracle and/or its affiliates.
48 / 69
MySQL Shell: InnoDB (2)
And it can be improved using table space on disk size:
Copyright @ 2019 Oracle and/or its affiliates.
49 / 69
MySQL Shell: Schema
We already saw how we added methods to show and delete procedures. But recently
somebody complained about the complexity of knowing what are the default values of
columns when expressions are used (h ps://forums.mysql.com/read.php?
101,670682,670682):
Copyright @ 2019 Oracle and/or its affiliates.
50 / 69
MySQL Shell: Schema (2)
In MySQL 8.0, 0000-00-00 is not a valid value for a date eld anymore. We can check for
such dates in our dataset:
More Info: h ps://lefred.be/content/mysql-8-0-and-wrong-dates/
Copyright @ 2019 Oracle and/or its affiliates.
51 / 69
MySQL Shell: Maintenance
When using MySQL X Protocol, it's not allowed to shutdown MySQL. This plugin resolves
this limitation:
Copyright @ 2019 Oracle and/or its affiliates.
52 / 69
MySQL Shell: Audit
Copyright @ 2019 Oracle and/or its affiliates.
53 / 69
MySQL Shell: Audit (2)
Copyright @ 2019 Oracle and/or its affiliates.
54 / 69
MySQL Shell: Collations
When upgrading, the collation might be problematic for unique values. This plugin from
Bernt Marius Johnsen shows the non-unique values for a speci c collation:
Copyright @ 2019 Oracle and/or its affiliates.
55 / 69
Outside MySQL
It's also possible to interact with external tools
Copyright @ 2019 Oracle and/or its affiliates.
56 / 69
Monitoring MySQL Router
With the MySQL Shell and MySQL Router's REST API, it's even possible to create a plugin
to monitor the Router:
Copyright @ 2019 Oracle and/or its affiliates.
57 / 69
Monitoring MySQL Router (2)
Copyright @ 2019 Oracle and/or its affiliates.
58 / 69
MySQL Shell and ProxySQL
It's also possible to integrate 3rd party projects directly in MySQL Shell:
Copyright @ 2019 Oracle and/or its affiliates.
59 / 69
MySQL Shell and ProxySQL
Copyright @ 2019 Oracle and/or its affiliates.
60 / 69
More Info:
h ps://lefred.be/content/mysql-innodb-cluster-recovery-process-monitoring-with-
the-mysql-shell-reporting-framework/
h ps://lefred.be/content/using-the-new-mysql-shell-reporting-framework-to-
monitor-innodb-cluster/
h ps://lefred.be/content/mysql-router-8-0-17s-rest-api-mysql-shell-extensions/
h ps://lefred.be/content/mysqlrouter-8-0-17-and-the-rest-api/
h ps://lefred.be/content/how-to-integrate-proxysql-in-mysql-innodb-cluster/
Copyright @ 2019 Oracle and/or its affiliates.
61 / 69
I am a newbie
Writing your first MySQL Shell Plugin
Copyright @ 2019 Oracle and/or its affiliates.
62 / 69
 
Let's write an oracle 8 ball plugin
Copyright @ 2019 Oracle and/or its affiliates.
63 / 69
demo/oracle8ball.py
from random import randrange
def tell_me():
"""Function that prints the so expected answer
Returns:
Nothing
"""
answers = ["It is certain.", "It is decidedly so.","Without a doubt.",
"Yes - de nitely.", "You may rely on it.",
"As I see it, yes.","Most likely.","Outlook good.",
"Yes.","Signs point to yes.","Reply hazy, try again.","Ask again later.",
"Better not tell you now.","Cannot predict now.",
"Concentrate and ask again.", "Don't count on it.",
"My reply is no.","My sources say no.",
"Outlook not so good.","Very doubtful."]
print answers[randrange(20)]
Copyright @ 2019 Oracle and/or its affiliates.
64 / 69
demo/init.py
from ext.mysqlsh_plugins_common import register_plugin
from ext.demo import oracle8ball as oracle_8_ball
[...]
try:
register_plugin("oracle8ball", oracle_8_ball.tell_me,
{
"brief": "Get the answer from the Oracle 8 Black Ball",
"parameters": []
},
"demo"
)
except Exception as e:
shell.log("ERROR", "Failed to register ext.demo.oracle8ball ({0}).".
format(str(e).rstrip())
Copyright @ 2019 Oracle and/or its affiliates.
65 / 69
Plugin's Help
Copyright @ 2019 Oracle and/or its affiliates.
66 / 69
Ready to contribute to MySQL Shell Plugins?
Get the code from h ps://github.com/lefred/mysqlshell-plugins and Pull Requests are
welcome !
Copyright @ 2019 Oracle and/or its affiliates.
67 / 69
Thank you !
Copyright @ 2019 Oracle and/or its affiliates.
68 / 69
Upgrade to MySQL 8.0
It's time to upgrade to
MySQL 8.0, the fastest MySQL
adoption release ever !
Copyright @ 2019 Oracle and/or its affiliates.
69 / 69

More Related Content

What's hot

MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
I Goo Lee
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8
Frederic Descamps
 
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 Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
Kenny Gryp
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and Histograms
Frederic Descamps
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
Jean-François Gagné
 
MariaDB Galera Cluster
MariaDB Galera ClusterMariaDB Galera Cluster
MariaDB Galera ClusterAbdul Manaf
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptx
NeoClova
 
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Almost Perfect Service Discovery and Failover with ProxySQL and OrchestratorAlmost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Jean-François Gagné
 
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
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQL
René Cannaò
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
NeoClova
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?
Mydbops
 
JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0
Mydbops
 
MySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & DemoMySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & Demo
Keith Hollman
 
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 Timeout Variables Explained
MySQL Timeout Variables Explained MySQL Timeout Variables Explained
MySQL Timeout Variables Explained
Mydbops
 
MySQL Shell for Database Engineers
MySQL Shell for Database EngineersMySQL Shell for Database Engineers
MySQL Shell for Database Engineers
Mydbops
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
Altinity Ltd
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
NeoClova
 

What's hot (20)

MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8
 
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 Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and Histograms
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
MariaDB Galera Cluster
MariaDB Galera ClusterMariaDB Galera Cluster
MariaDB Galera Cluster
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptx
 
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Almost Perfect Service Discovery and Failover with ProxySQL and OrchestratorAlmost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
 
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
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQL
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?
 
JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0
 
MySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & DemoMySQL InnoDB Cluster HA Overview & Demo
MySQL InnoDB Cluster HA Overview & Demo
 
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
 
MySQL Timeout Variables Explained
MySQL Timeout Variables Explained MySQL Timeout Variables Explained
MySQL Timeout Variables Explained
 
MySQL Shell for Database Engineers
MySQL Shell for Database EngineersMySQL Shell for Database Engineers
MySQL Shell for Database Engineers
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
 

Similar to MySQL Shell - the best DBA tool !

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 8.0 InnoDB Cluster - Easiest Tutorial
MySQL 8.0 InnoDB Cluster - Easiest TutorialMySQL 8.0 InnoDB Cluster - Easiest Tutorial
MySQL 8.0 InnoDB Cluster - Easiest Tutorial
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
 
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
 
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
 
preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0
preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0
preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0
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
 
20190915_MySQL開発最新動向
20190915_MySQL開発最新動向20190915_MySQL開発最新動向
20190915_MySQL開発最新動向
Machiko Ikoma
 
Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...
Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...
Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...
Frederic Descamps
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deployment
Ivan 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
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021
Frederic Descamps
 
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
 
the State of the Dolphin - October 2020
the State of the Dolphin - October 2020the State of the Dolphin - October 2020
the State of the Dolphin - October 2020
Frederic Descamps
 
20190713_MySQL開発最新動向
20190713_MySQL開発最新動向20190713_MySQL開発最新動向
20190713_MySQL開発最新動向
Machiko Ikoma
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
Mysql User Camp
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorial
Frazer Clement
 
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
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetConfoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSet
Dave Stokes
 

Similar to MySQL Shell - the best DBA tool ! (20)

MySQL Shell: the best DBA tool !
MySQL Shell: the best DBA tool !MySQL Shell: the best DBA tool !
MySQL Shell: the best DBA tool !
 
MySQL Shell - the best DBA tool ?
MySQL Shell - the best DBA tool ? MySQL Shell - the best DBA tool ?
MySQL Shell - the best DBA tool ?
 
MySQL 8.0 InnoDB Cluster - Easiest Tutorial
MySQL 8.0 InnoDB Cluster - Easiest TutorialMySQL 8.0 InnoDB Cluster - Easiest Tutorial
MySQL 8.0 InnoDB Cluster - Easiest Tutorial
 
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...
 
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
 
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
 
preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0
preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0
preFOSDEM MySQL Day - Best Practices to Upgrade to MySQL 8.0
 
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
 
20190915_MySQL開発最新動向
20190915_MySQL開発最新動向20190915_MySQL開発最新動向
20190915_MySQL開発最新動向
 
Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...
Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...
Another MySQL HA Solution for ProxySQL Users, Easy and All Integrated: MySQL ...
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deployment
 
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...
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021
 
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
 
the State of the Dolphin - October 2020
the State of the Dolphin - October 2020the State of the Dolphin - October 2020
the State of the Dolphin - October 2020
 
20190713_MySQL開発最新動向
20190713_MySQL開発最新動向20190713_MySQL開発最新動向
20190713_MySQL開発最新動向
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorial
 
MySQL Shell: the best DBA tool ?
MySQL Shell: the best DBA tool ?MySQL Shell: the best DBA tool ?
MySQL Shell: the best DBA tool ?
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetConfoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSet
 

More from Frederic Descamps

MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
Frederic Descamps
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and Histograms
Frederic Descamps
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
Frederic Descamps
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022
Frederic Descamps
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio Code
Frederic Descamps
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database System
Frederic Descamps
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
Frederic Descamps
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
Frederic Descamps
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Frederic Descamps
 
Confoo 2022 - le cycle d'une instance MySQL
Confoo 2022  - le cycle d'une instance MySQLConfoo 2022  - le cycle d'une instance MySQL
Confoo 2022 - le cycle d'une instance MySQL
Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
Frederic Descamps
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDS
Frederic Descamps
 
MySQL Router REST API
MySQL Router REST APIMySQL Router REST API
MySQL Router REST API
Frederic Descamps
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
Frederic Descamps
 
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native -  Why to use MySQL 8.0 and how to use it on oci with MDSCloud native -  Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Frederic Descamps
 
MySQL Database Service Webinar: Installing Drupal in oci with mds
MySQL Database Service Webinar: Installing Drupal in oci with mdsMySQL Database Service Webinar: Installing Drupal in oci with mds
MySQL Database Service Webinar: Installing Drupal in oci with mds
Frederic Descamps
 
MySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New WorldMySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New World
Frederic Descamps
 
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with TerraformOracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Frederic Descamps
 
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDSMySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
Frederic Descamps
 

More from Frederic Descamps (20)

MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and Histograms
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio Code
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database System
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
 
Confoo 2022 - le cycle d'une instance MySQL
Confoo 2022  - le cycle d'une instance MySQLConfoo 2022  - le cycle d'une instance MySQL
Confoo 2022 - le cycle d'une instance MySQL
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDS
 
MySQL Router REST API
MySQL Router REST APIMySQL Router REST API
MySQL Router REST API
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
 
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native -  Why to use MySQL 8.0 and how to use it on oci with MDSCloud native -  Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
 
MySQL Database Service Webinar: Installing Drupal in oci with mds
MySQL Database Service Webinar: Installing Drupal in oci with mdsMySQL Database Service Webinar: Installing Drupal in oci with mds
MySQL Database Service Webinar: Installing Drupal in oci with mds
 
MySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New WorldMySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New World
 
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with TerraformOracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
 
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDSMySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
 

Recently uploaded

20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 

Recently uploaded (20)

20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 

MySQL Shell - the best DBA tool !

  • 2. MySQL Shell : the best DBA tool ? How to use MySQL Shell as a framework for DBAs Frédéric Descamps Community Manager MySQL September 2019 2 / 69
  • 3.   Safe Harbor The following is intended to outline our general product direction. It is intended for information purpose 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 up in making purchasing decisions. The development, release, timing and pricing of any features or functionality described for Oracle´s product may change and remains at the sole discretion of Oracle Corporation. Statement in this presentation relating to Oracle´s future plans, expectations, beliefs, intentions and ptospects are "forward-looking statements" and are subject to material risks and uncertainties. A detailed discussion of these factors and other risks that a ect our business is contained in Oracle´s Securities and Exchange Commission (SEC) lings, including our most recent reports on Form 10-K and Form 10-Q under the heading "Risk Factors". These lings are available on the SEC´s website or on Oracle´s website at h p://www.oracle.com/investor. All information in this presentation is current as of September 2019 and Oracle undertakes no duty to update any statement in light of new information or future events. Copyright @ 2019 Oracle and/or its affiliates. 3 / 69
  • 4. about.me/lefred Who am I ? Copyright @ 2019 Oracle and/or its affiliates. 4 / 69
  • 5. Frédéric Descamps @lefred MySQL Evangelist Managing MySQL since 3.23 devops believer living in Belgium 🇧🇪 h ps://lefred.be Copyright @ 2019 Oracle and/or its affiliates. 5 / 69
  • 6. a new tool MySQL Shell Copyright @ 2019 Oracle and/or its affiliates. 6 / 69
  • 7. MySQL Shell The MySQL Shell is an interactive Javascript, Python, or SQL interface supporting development and administration for the MySQL Server and is a component of the MySQL Server. You can use the MySQL Shell to perform data queries and updates as well as various administration operations. Copyright @ 2019 Oracle and/or its affiliates. 7 / 69
  • 8. MySQL Shell (2) The MySQL Shell provides: Copyright @ 2019 Oracle and/or its affiliates. 8 / 69
  • 9. MySQL Shell (2) The MySQL Shell provides: Both Interactive and Batch operations Copyright @ 2019 Oracle and/or its affiliates. 9 / 69
  • 10. MySQL Shell (2) The MySQL Shell provides: Both Interactive and Batch operations Document and Relational Models Copyright @ 2019 Oracle and/or its affiliates. 10 / 69
  • 11. MySQL Shell (2) The MySQL Shell provides: Both Interactive and Batch operations Document and Relational Models CRUD Document and Relational APIs via scripting Copyright @ 2019 Oracle and/or its affiliates. 11 / 69
  • 12. MySQL Shell (2) The MySQL Shell provides: Both Interactive and Batch operations Document and Relational Models CRUD Document and Relational APIs via scripting Traditional Table, JSON, Tab Separated output results formats Copyright @ 2019 Oracle and/or its affiliates. 12 / 69
  • 13. MySQL Shell (2) The MySQL Shell provides: Both Interactive and Batch operations Document and Relational Models CRUD Document and Relational APIs via scripting Traditional Table, JSON, Tab Separated output results formats MySQL Standard and X Protocols Copyright @ 2019 Oracle and/or its affiliates. 13 / 69
  • 14. MySQL Shell (2) The MySQL Shell provides: Both Interactive and Batch operations Document and Relational Models CRUD Document and Relational APIs via scripting Traditional Table, JSON, Tab Separated output results formats MySQL Standard and X Protocols and more... Copyright @ 2019 Oracle and/or its affiliates. 14 / 69
  • 15. MySQL Shell Overview PY JS SQL > MySQL 8.0 Upgrade Checker Auto Completion & Command History Output Formats (table, json, tabs) Prompt Themes Batch Execution 5.7 8.0 JS Document Store X dev API SQL CLI InnoDB Cluster importJSON JSJS parallel importTABLE data Copyright @ 2019 Oracle and/or its affiliates. 15 / 69
  • 16. setup your environment Starting with MySQL Shell Copyright @ 2019 Oracle and/or its affiliates. 16 / 69
  • 17. Install MySQL Shell the package's name to install is mysql-shell you always need to use the latest available even with a lower MySQL Server version latest version if 8.0.17, use it even with MySQL 5.7.x Shell Copyright @ 2019 Oracle and/or its affiliates. 17 / 69
  • 18. Start a beautiful Shell The default prompts is basic, we provide several di erent prompt examples. # cp /usr/share/mysqlsh/prompt/prompt_256pl+aw.json ~/.mysqlsh/prompt.json Then start the mysqlsh: Copyright @ 2019 Oracle and/or its affiliates. 18 / 69
  • 19. Some configuration tips These are some se ings I usually use: mysql-js> shell.options.setPersist('history.autoSave', 1) mysql-js> shell.options.setPersist('history.maxSize', 5000) You can swithc to all 3 di erent modes using: py for Python js for Javascript sql for SQL If you have a preferred mode, you can specify it like this: mysql-js> shell.options.setPersist('defaultMode', 'sql') Copyright @ 2019 Oracle and/or its affiliates. 19 / 69
  • 20. Util The MySQL Shell comes with a global object called util. This object is used to perform some dedicated DBA tasks like: Checking if the server's con guration and schema design is compatible with next MySQL version (checkForServerUpdrade()) Importing JSON documents, like exports from MondoDB (importJSON()) Importing table dumps in parallel (importTable()) Con guring OCI pro le (con gureOCI()) Copyright @ 2019 Oracle and/or its affiliates. 20 / 69
  • 21. Admin API The Admin API is used to con gure MySQL instances to be part of a MySQL InnoDB Cluster. It also creates and manage clusters. More Info: h ps://lefred.be/content/mysql-innodb-cluster-from-scratch-even-more- easy-since-8-0-17/ Copyright @ 2019 Oracle and/or its affiliates. 21 / 69
  • 22. Admin API in action Copyright @ 2019 Oracle and/or its affiliates. 22 / 69
  • 23. we want more ! Extending MySQL Shell Copyright @ 2019 Oracle and/or its affiliates. 23 / 69
  • 24. MySQL Shell and Javascript In JS mode, it's also possible to load some pure Javascript modules installed in sys.path: Copyright @ 2019 Oracle and/or its affiliates. 24 / 69
  • 25. MySQL Shell and Javascript (2) The module has to be pure JS (not node.JS) modules: Copyright @ 2019 Oracle and/or its affiliates. 25 / 69
  • 26. MySQL Shell and Javascript (3) Then your module can be loaded and used like this: Copyright @ 2019 Oracle and/or its affiliates. 26 / 69
  • 27. MySQL Shell and Python When using the python mode in the Shell, it's even possible to use system modules (local). Copyright @ 2019 Oracle and/or its affiliates. 27 / 69
  • 28. MySQL Shell and Python (2) Of course this can be any type of modules: Copyright @ 2019 Oracle and/or its affiliates. 28 / 69
  • 29. MySQL Shell and Python (2) Of course this can be any type of modules: Copyright @ 2019 Oracle and/or its affiliates. 29 / 69
  • 30. Extending MySQL Shell Since 8.0.17, you have 3 di erent ways to extend the MySQL Shell: using the new Reporting Framework (>= 8.0.16) create your own modules to extend MySQL Shell (obsolete) create your own plugins that will be completely integrated in all supported interpreters (>= 8.0.17) 8.0 Copyright @ 2019 Oracle and/or its affiliates. 30 / 69
  • 31. MySQL Shell User-Defined Reports You can create reports that are called once on demand (show) or constantly refreshed (watch). Example for checking the LOCKS: Copyright @ 2019 Oracle and/or its affiliates. 31 / 69
  • 32. MySQL Shell User-Defined Reports (2) This is a Python le (locks_info.py) installed in ~/.mysqlsh/init.d: It contains a de nition and a registration: def locks_info(session): query = session.sql("select ...") ... return {'report': report} shell.register_report( 'locks_info', 'list', locks_info, { 'brief': 'Shows Locks.', 'details': ['You need the SELECT privilege on sys.session view and the ..'], 'argc': '0' } ) Copyright @ 2019 Oracle and/or its affiliates. 32 / 69
  • 33. MySQL Shell User-Defined Reports (3) User-De ned Reports can be called from any MySQL Shell mode, even SQL: Copyright @ 2019 Oracle and/or its affiliates. 33 / 69
  • 34. MySQL Shell User-Defined Reports (4) More info: h ps://lefred.be/content/using-the-new-mysql-shell-reporting-framework-to- monitor-innodb-cluster/ h ps://lefred.be/content/mysql-innodb-cluster-recovery-process-monitoring-with- the-mysql-shell-reporting-framework/ Copyright @ 2019 Oracle and/or its affiliates. 34 / 69
  • 35. MySQL Shell User-Defined Reports (4) Sources of Examples: h ps://github.com/lefred/mysql-shell-udr Pull Requests welcome ! Copyright @ 2019 Oracle and/or its affiliates. 35 / 69
  • 36. Why should I extend the MySQL Shell with plugins? For calling some long statements or group of operations or sometimes to replace a missing functionality. Copyright @ 2019 Oracle and/or its affiliates. 36 / 69
  • 37. Why should I extend the MySQL Shell with plugins? For calling some long statements or group of operations or sometimes to replace a missing functionality. Recently, somebody pointed out that since the new DD it was not anymore possible to delete all routines for a speci c schema. Copyright @ 2019 Oracle and/or its affiliates. 37 / 69
  • 38. Why should I extend the MySQL Shell with plugins? For calling some long statements or group of operations or sometimes to replace a missing functionality. Recently, somebody pointed out that since the new DD it was not anymore possible to delete all routines for a speci c schema. Jesper explained how the MySQL Shell could help here see h ps://mysql.wisborg.dk/2018/12/02/mysql-8-drop-several-stored-events-procedures- or-functions/ Copyright @ 2019 Oracle and/or its affiliates. 38 / 69
  • 39. Using a plugin within MySQL Shell Plugins are available from the ext global object: Copyright @ 2019 Oracle and/or its affiliates. 39 / 69
  • 40. Using a plugin within MySQL Shell (2) Help is automatically available: Copyright @ 2019 Oracle and/or its affiliates. 40 / 69
  • 41. Using a plugin within MySQL Shell (3) Plugins are available from JS and Python, regardless of the language in which they are wri en: Copyright @ 2019 Oracle and/or its affiliates. 41 / 69
  • 42. Using a plugin wi thin MySQL Shell (4) The help goes from the plugin to its methods: Copyright @ 2019 Oracle and/or its affiliates. 42 / 69
  • 43. Using a plugin within MySQL Shell (5) And nally the plugin in action: Copyright @ 2019 Oracle and/or its affiliates. 43 / 69
  • 44. Using a plugin within MySQL Shell (5) And nally the plugin in action: Copyright @ 2019 Oracle and/or its affiliates. 44 / 69
  • 45. How to use MySQL Shell Plugins ? Plugins must be installed inside ~/.mysqlsh/plugins/ext directory. Several existing plugins can be found at h ps://github.com/lefred/mysqlshell-plugins Plugins are split in di erent categories: audit innodb_cluster router collations maintenance schema con guration performance security demo proxysql support innodb ... Copyright @ 2019 Oracle and/or its affiliates. 45 / 69
  • 46. Overview of some plugins Extending MySQL Shell with Plugins Copyright @ 2019 Oracle and/or its affiliates. 46 / 69
  • 47. MySQL Shell: Security Retrieving the expiration period of passwords: Copyright @ 2019 Oracle and/or its affiliates. 47 / 69
  • 48. MySQL Shell: InnoDB Which tables are potentially fragmented: Copyright @ 2019 Oracle and/or its affiliates. 48 / 69
  • 49. MySQL Shell: InnoDB (2) And it can be improved using table space on disk size: Copyright @ 2019 Oracle and/or its affiliates. 49 / 69
  • 50. MySQL Shell: Schema We already saw how we added methods to show and delete procedures. But recently somebody complained about the complexity of knowing what are the default values of columns when expressions are used (h ps://forums.mysql.com/read.php? 101,670682,670682): Copyright @ 2019 Oracle and/or its affiliates. 50 / 69
  • 51. MySQL Shell: Schema (2) In MySQL 8.0, 0000-00-00 is not a valid value for a date eld anymore. We can check for such dates in our dataset: More Info: h ps://lefred.be/content/mysql-8-0-and-wrong-dates/ Copyright @ 2019 Oracle and/or its affiliates. 51 / 69
  • 52. MySQL Shell: Maintenance When using MySQL X Protocol, it's not allowed to shutdown MySQL. This plugin resolves this limitation: Copyright @ 2019 Oracle and/or its affiliates. 52 / 69
  • 53. MySQL Shell: Audit Copyright @ 2019 Oracle and/or its affiliates. 53 / 69
  • 54. MySQL Shell: Audit (2) Copyright @ 2019 Oracle and/or its affiliates. 54 / 69
  • 55. MySQL Shell: Collations When upgrading, the collation might be problematic for unique values. This plugin from Bernt Marius Johnsen shows the non-unique values for a speci c collation: Copyright @ 2019 Oracle and/or its affiliates. 55 / 69
  • 56. Outside MySQL It's also possible to interact with external tools Copyright @ 2019 Oracle and/or its affiliates. 56 / 69
  • 57. Monitoring MySQL Router With the MySQL Shell and MySQL Router's REST API, it's even possible to create a plugin to monitor the Router: Copyright @ 2019 Oracle and/or its affiliates. 57 / 69
  • 58. Monitoring MySQL Router (2) Copyright @ 2019 Oracle and/or its affiliates. 58 / 69
  • 59. MySQL Shell and ProxySQL It's also possible to integrate 3rd party projects directly in MySQL Shell: Copyright @ 2019 Oracle and/or its affiliates. 59 / 69
  • 60. MySQL Shell and ProxySQL Copyright @ 2019 Oracle and/or its affiliates. 60 / 69
  • 61. More Info: h ps://lefred.be/content/mysql-innodb-cluster-recovery-process-monitoring-with- the-mysql-shell-reporting-framework/ h ps://lefred.be/content/using-the-new-mysql-shell-reporting-framework-to- monitor-innodb-cluster/ h ps://lefred.be/content/mysql-router-8-0-17s-rest-api-mysql-shell-extensions/ h ps://lefred.be/content/mysqlrouter-8-0-17-and-the-rest-api/ h ps://lefred.be/content/how-to-integrate-proxysql-in-mysql-innodb-cluster/ Copyright @ 2019 Oracle and/or its affiliates. 61 / 69
  • 62. I am a newbie Writing your first MySQL Shell Plugin Copyright @ 2019 Oracle and/or its affiliates. 62 / 69
  • 63.   Let's write an oracle 8 ball plugin Copyright @ 2019 Oracle and/or its affiliates. 63 / 69
  • 64. demo/oracle8ball.py from random import randrange def tell_me(): """Function that prints the so expected answer Returns: Nothing """ answers = ["It is certain.", "It is decidedly so.","Without a doubt.", "Yes - de nitely.", "You may rely on it.", "As I see it, yes.","Most likely.","Outlook good.", "Yes.","Signs point to yes.","Reply hazy, try again.","Ask again later.", "Better not tell you now.","Cannot predict now.", "Concentrate and ask again.", "Don't count on it.", "My reply is no.","My sources say no.", "Outlook not so good.","Very doubtful."] print answers[randrange(20)] Copyright @ 2019 Oracle and/or its affiliates. 64 / 69
  • 65. demo/init.py from ext.mysqlsh_plugins_common import register_plugin from ext.demo import oracle8ball as oracle_8_ball [...] try: register_plugin("oracle8ball", oracle_8_ball.tell_me, { "brief": "Get the answer from the Oracle 8 Black Ball", "parameters": [] }, "demo" ) except Exception as e: shell.log("ERROR", "Failed to register ext.demo.oracle8ball ({0}).". format(str(e).rstrip()) Copyright @ 2019 Oracle and/or its affiliates. 65 / 69
  • 66. Plugin's Help Copyright @ 2019 Oracle and/or its affiliates. 66 / 69
  • 67. Ready to contribute to MySQL Shell Plugins? Get the code from h ps://github.com/lefred/mysqlshell-plugins and Pull Requests are welcome ! Copyright @ 2019 Oracle and/or its affiliates. 67 / 69
  • 68. Thank you ! Copyright @ 2019 Oracle and/or its affiliates. 68 / 69
  • 69. Upgrade to MySQL 8.0 It's time to upgrade to MySQL 8.0, the fastest MySQL adoption release ever ! Copyright @ 2019 Oracle and/or its affiliates. 69 / 69