Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 35 di 58
  • livello intermedio
Indice lezioni

Introduzione a MySQL Utilities

Una panoramica sulle MySQL Utilities, una serie di strumenti da riga di comando molto utili per l'amministrazione ed il profiling di un database MySQL.
Una panoramica sulle MySQL Utilities, una serie di strumenti da riga di comando molto utili per l'amministrazione ed il profiling di un database MySQL.
Link copiato negli appunti

Abbiamo già trattato alcuni tool di base di MySQL, che però offre ai suoi fruitori anche la possibilità di utilizzare una serie di strumenti per facilitarne l’amministrazione. In questa lezione estenderemo il set di tool di base sopra citato, introducendo nuovi strumenti per la gestione del DBMS: le cosiddette MySQL Utilities.

Cosa sono le MySQL Utilities?

Le MySQL Utilities forniscono una collezione di strumenti da riga di comando che permettono agli utenti di estendere le funzionalità di base fornite con MySQL, per la manutenzione e l’amministrazione dei server. Il fatto che i suddetti comandi siano forniti come command-line è un grande vantaggio, poiché questo ci permette di combinarli e di dar vita a script sempre più complessi e completi.

Le Utilities di cui stiamo parlando sono state sviluppate nel noto linguaggio di scripting Python e sono rilasciate sotto licenza GPLv2. Esse si possono suddividere in tre gruppi:

  • Admin Utilities (Clone, Copy, Compare, Diff, Export, Import, User Management);
  • Replication Utilities (Setup, Configuration, Verification);
  • General Utilities (Disk Usage, Redundant Indexes, Manage Meta & Audit Data).

Accedere alle MySQL Utilities

Come già anticipato, le MySQL Utilities sono script a linea di comando che normalmente sono accessibili se abbiamo installato MySQL Workbench o le Utilities stesse dal sito del produttore. Per richiamare le Utilities da MySQL Workbench, dobbiamo andare su Tools nel menù principale, e selezionare la voce Start Shell for MySQL Utilities. Sarà visualizzato un terminale da cui richiamare i comandi desiderati.

Figura 1. Accedere alle MySQL Utilities tramite MySQL Workbench (click per ingrandire)

Accedere alle MySQL Utilities tramite MySQL Workbench

Si noti che le MySQL Utilities sono pensate per essere eseguite con i permessi di amministratore, sebbene sia possibile adoperarle avviando i server con l’opzione (sconsigliata) --skip-grant-tables.

Qualche esempio pratico

Mostriamo di seguito alcuni utilizzi pratici delle MySQL Utilities.

mysqluc

Prima di trattare qualsiasi tipo di MySQL Utility, è d’obbligo introdurne una in particolare: mysqluc.

Considerato l'alto numero di utility a disposizione di MySQL, non sempre è semplice tenere a mente, per ognuna di esse, tutte le relative opzioni e i relativi parametri. L’utility mysqluc ci viene in aiuto offrendoci la possibilità di visualizzare, per un ognuna delle utility, la lista di tutte le sue opzioni e dei suoi parametri.

Come spiegato sopra, apriamo da MySQL Workbench la voce Start Shell for MySQL Utilities, ed immettiamo il seguente comando:

shell> mysqluc
Launching console ...
Welcome to the MySQL Utilities Client (mysqluc) version 1.6.4
Copyright (c) 2010, 2016 Oracle and/or its affiliates. All rights reserved.
This is a release of dual licensed MySQL Utilities. For the avoidance of
doubt, this particular copy of the software is released
under the version 2 of the GNU General Public License.
MySQL Utilities is brought to you by Oracle.
Type 'help' for a list of commands or press TAB twice for list of utilities.

Una volta avviata la console, potremo lanciare il comando help utilities e ricevere in risposta la lista di tutte le utility presenti nel vostro server MySQL. Scrivendo su questa console il nome di una utility, verrà restituita una panoramica sul suo utilizzo e sulle opzioni adoperabili su di essa.

mysqldiskusage

Una utility molto interessante è mysqldiskusage, che ci permette di conoscere quanto spazio stanno occupando i dati sul nostro database. La possibilità di poter conoscere, con un semplice comando, le dimensioni occupate dai nostri dati ci potrebbe tornare utile in caso di un backup imminente o di una manutenzione al nostro server.

Apriamo da MySQL Workbench la voce Start Shell for MySQL Utilities ed immettiamo il seguente comando:

shell> sudo env PYTHONPATH=$PYTHONPATH mysqldiskusage \
--server=root:root@localhost --all

Ovviamente, al posto di root:root@localhost dovremo inserire i dati relativi al server MySQL di cui vogliamo conoscere l'occupazione di spazio.

Come risposta al comando, otterremo una schermata simile a questa:

+-----------------+--------------+
| db_name         |       total  |
+-----------------+--------------+
| oltp2           | 829,669      |
| bvm             | 15,129       |
| db1             | 9,895        |
| db2             | 11,035       |
| employees       | 206,117,692  |
| griots          | 14,415       |
| mysql           | 995,722      |
| oltp1           | 177,393      |
| room_temp       | 9,847        |
| sakila          | 791,727      |
| test            | 647,911      |
| test_arduino    | 9,999        |
| welford_kindle  | 72,032       |
| world           | 472,785      |
| world_innodb    | 829,669      |
+-----------------+--------------+
Total database disk usage = 210,175,251 bytes or 200.44 MB

Come si vede, mysqldiskusage ci fornisce una serie di informazioni riepilogative circa lo spazio occupato dai nostri dati. È altresì possibile ottenere ulteriori informazioni nel caso in cui decisiamo di utilizzare l’opzione --all. Oltre alla schermata riportata in precedenza, sarà possibile ottenere informazioni sulla memoria usata dallo storage engine del database adoperato (ad esempio InnoDB).

mysqluserclone

Uno dei principali problemi per gli amministratori di database è quello inerente la gestione dei permessi dei vari utenti. Molto spesso ci potremmo trovare nella situazione di dover fornire in poco tempo i permessi ad un utente per la modifica di qualche dato sensibile. L’utility qui presentata, mysqluserclone, permette di clonare i permessi di un utente già esistente e crearne uno nuovo con gli stessi. Questo permette di creare utenti con gli stessi permessi in poco tempo e con il minino sforzo, il tutto da riga di comando.

Assumiamo di avere uno scenario in cui nel nostro database abbiamo un utente chiamato vito, che goda di una certa lista di permessi. Vogliamo creare due nuovi utenti, fabrizio e giuseppe, che abbiano gli stessi identici permessi ma password di accesso diverse. Apriamo da MySQL Workbench la voce Start Shell for MySQL Utilities ed inseriamo il seguente comando:

shell> mysqluserclone --source=root@localhost \
          --destination=root@localhost \
          vito@localhost fabrizio:paswd1@localhost giuseppe:paswd2@localhost
# Source on localhost: ... connected.
# Destination on localhost: ... connected.
# Cloning 2 users...
# Cloning vito@localhost to user fabrizio:paswd1@localhost
# Cloning vito@localhost to user giuseppe:paswd2@localhost
# ...done.

Notiamo che le opzioni --source e --destination assumo gli stessi valire, poichè stiamo eseguendo la copia di un account sullo stesso server.

Ti consigliamo anche