Se lavorate parecchio con MySQL è probabile che conosciate molto bene la suite MySQL Workbench, lo strumento di gestione unificato che contiene tutti gli strumenti necessari a un DBA per svolgere il proprio lavoro, tra cui:
- Design di tabelle e DB Schema, tramite interfaccia visuale.
- Database Connection Panel e SQL Editor, per gestire connessioni a DB locali e remoti ed eseguire query tramite GUI.
- Strumenti di Backup e Migration, per importare ed esportare DB e tabelle da e verso altri server o altri DB Engine.
- Performance Dashboard, per osservare in tempo reale le performance del DB.
Si tratta senza dubbio di una ottima soluzione, in grado di soddisfare le esigenze della maggior parte degli sviluppatori e amministratori di sistema.
Esiste però un'alternativa, molto meno conosciuta e senz'altro meno potente, che personalmente mi sento di consigliare a corredo del Workbench in quanto consente di gestire in modo molto più immediato e user-friendly la maggior parte delle funzioni dello strumento ufficiale, garantendo nel contempo un livello di affidabilità altrettanto elevato. Il nome di questa applicazione è SQLyog, sviluppato da Webyog e disponibile in una doppia versione: Enterprise, disponibile in modalità Trialware e dedicata prevalentemente all'utilizzo aziendale e lavorativo, e Community, orientata ovviamente al mondo degli sviluppatori e gratuita per uso personale.
L'interfaccia, estremamente chiara, consente di avere un accesso immediato a un gran numero di funzionalità. La prima cosa da fare è aggiungere il proprio server in un pratico Address Book, analogo a quello di client come FileZilla o TeamSpeak: una volta creata, la entry sarà così disponibile anche per utilizzi successivi. Una volta connessi, sarà possibile effettuare tutte le operazioni consentire dal Connection Panel di MySQL Workbench e forse anche qualcuna in più. Questo che segue è un elenco sintetico delle funzionalità che personalmente ho trovato particolarmente utili e che in più di un'occasione mi hanno consentito di risparmiare tempo prezioso:
- Copy Database to different Host/Database. Un comando estremamente potente che, tramite una finestra popup, consente di selezionare un database di origine e uno di destinazione, scegliendo se copiare soltanto la struttura o la struttura + i dati dall'uno all'altro: l'operazione è estremamente configurabile, il programma consente infatti di selezionare quali tables, views, stored procedures, functions, triggers ed events si desidera copiare e quali no attraverso la GUI. Notevoli anche le performance dell'operazione, che avviene mediante la creazione e l'invio di una serie di query ottimizzate.
- Backup/Export > Backup Database as SQL Dump. Altro comando prezioso, che consente di effettuare l'esportazione/backup di un database in un singolo file/script sql. Anche in questo caso è ovviamente possibile specificare gli oggetti da esportare, oltre a una serie di parametri estremamente utili, tra cui: esportare la struttura, i dati oppure entrambe le cose, effettuare o meno un lock delle tabelle durante l'esecuzione, creare o meno istruzioni INSERT in modalità bulk, e così via.
- Import > Execute SQL Script. Il corrispettivo del comando precedente, che consente di eseguire file/script sql su un database selezionabile a piacimento tra quelli aperti. In questo caso le opzioni sono piuttosto limitate, anche perché si tratta di una importazione di comandi SQL già generati: è comunque possibile avere accesso a un file di log in caso di errori durante l'importazione.
- Tools -> Table Diagnostics. Un pannello di controllo che consente di gestire tutti i principali comandi relativi alla manutenzione del Database selezionato: mi riferisco ai vari optimize, check, analyze, repair, ciascuno eseguibile con gli switch del caso.
- User Manager. Lo strumento di gestione degli utenti e delle credenziali, mediante il quale è possibile creare, modificare e/o eliminare utenti, nonché assegnare permessi globali o relativi a singoli database in modo estremamente pratico e intuitivo.
- Show > Processlist. Un pannello che consente di visualizzare l'elenco dei processi attivi sul database, comprensivi di ID, Utente, Host e DB interessato, comando eseguito, tempo di attesa (in secondi), informazioni di stato e dettagli sul processo. E' anche possibile effettuare il kill di ciascun processo (tasto destro > Kill Process).
Potrei continuare a lungo, in quanto il prodotto è pieno di strumenti utili, pratici ed efficaci: quelli che ho descritto sono tutti disponibili nell'edizione Community, ma l'Enterprise Edition consente di accedere a funzionalità ancora più interessanti, tra cui: Database Synchronization Wizard, Visual Data Comparison Wizard, Scheduled Backups/Scheduled Jobs e Query Profiler, solo per citarne alcune.
Al di là delle funzionalità, quello che convince maggiormente è l'attenzione dedicata all'interfaccia utente, che mi è sempre sembrata - al netto delle modifiche subite da entrambi i prodotti nel corso degli anni - una spanna superiore a quella di MySQL Workbench: la gestione razionale delle finestre e dei pannelli, l'utilizzo intelligente dei tab e, forse più di ogni altra cosa, una gestione dello spazio estremamente accurata, grazie alla quale è possibile tenere a schermo tutte le informazioni utili. Se apprezzate la distribuzione degli strumenti di lavoro di programmi come Thunderbird, Photoshop o Visual Studio sapete già quello che intendo ed è probabile che vi troverete bene anche con SQLyog.
In definitiva si tratta di un software che mi sento di consigliare caldamente ad ogni DBA che lavora con MySQL. Non riuscirà probabilmente a farvi disinstallare MySQL Workbench - specialmente se utilizzate le funzionalità di UI Designer che SQLyog non possiede - ma di certo potrà farvi risparmiare tempo prezioso quando dovrete effettuare un backup, una migrazione o un inserimento bulk di dati.
LINK UTILI
- SQLyog Community Edition e relativa Pagina di Download (entrambe su Github)
- SQLyog Trialware Edition (sito ufficiale)