Vai a

Ecosistema MySQL

MySQL è uno dei database open source più popolari al mondo, secondo DB-Engines. La sua prima versione è stata rilasciata nel 1995 e da allora è stato sviluppato continuamente, fino a diventare uno dei database relazionali più diffusi oggigiorno. MySQL deve il suo successo a un ecosistema composto da un'ampia gamma di versioni open source e commerciali. MySQL viene utilizzato ampiamente sia on-premise che nel cloud. I principali fornitori di servizi cloud per MySQL sono Google Cloud, Oracle, Amazon Web Services (AWS) e Microsoft Azure.

Versioni di MySQL

Sul mercato è disponibile attualmente una vasta gamma di versioni che estendono MySQL aggiungendo funzionalità per l'ottimizzazione, la scalabilità, il clustering, il ripristino di emergenza e altro ancora. I due principali database creati mediante il fork di MySQL e attualmente attivi sono MariaDB e Percona Server for MySQL.

MySQL Community Edition ed Enterprise Edition

Oracle sviluppa e gestisce sia MySQL Community Edition che Enterprise Edition. Enterprise Edition include l'assistenza tecnica fornita da Oracle e alcune funzionalità aggiuntive, tra cui il monitoraggio aziendale MySQL, l'autenticazione PAM, la sicurezza avanzata, prestazioni e scalabilità avanzate, backup e audit di livello enterprise, gestione dei cluster per aziende, pool di thread e altro ancora.

MariaDB

I fondatori di MySQL hanno anche creato MariaDB con la garanzia che rimarrà open source. Alcune funzionalità di MySQL sono state rilasciate in MariaDB prima che in MySQL, ad esempio il supporto JSON, la replica multi-origine e la replica con thread paralleli. Ecco alcuni dei principali vantaggi di MariaDB rispetto a MySQL:

  • Introduzione di nuovi motori di archiviazione come ColumnStore per l'analisi, motore S3 per archiviare le tabelle su AWS S3, Aria Engine, che è una versione ottimizzata di MyISAM, MyRocks per applicazioni con alta compressione e traffico elevato, Cassandra, SphinxSE e altro ancora
  • Possibilità di esecuzione parallela delle query
  • Creazione di pool di thread, disponibile in MySQL Enterprise Edition, ma non in Community Edition
  • Router MaxScale gratuito
  • Una soluzione multi-parent: Galera Cluster

Percona

Percona è una società che sviluppa e gestisce Percona Server for MySQL. Nel corso degli anni ha svolto un lavoro enorme su MySQL per ottimizzarlo, oltre a introdurre nuove funzionalità. Ecco alcuni dei principali vantaggi dell'utilizzo di Percona rispetto a MySQL: 

  • Ricerca a testo intero InnoDB migliorata, motore di archiviazione in memoria e meccanismo di svuotamento perfezionati, più funzioni hash/digest, supporto per la crittografia integrata nello spazio delle tabelle InnoDB, log binari e file temporanei
  • Introduzione di un buffer parallelo a doppia scrittura per l'ottimizzazione
  • Strumento XtraBackup per il backup a caldo con opzioni per il backup completo e incrementale
  • Supporto dei motori di archiviazione MyRocks e Toku
  • Strumenti avanzati di risoluzione dei problemi, ad esempio di contatori per tabella, per indice, per client, per utente e per prestazioni dei thread
  • Autenticazione PAM e audit logging disponibili in MySQL Enterprise Edition, ma non in Community Edition
  • Pt-toolkit, un servizio di utilità sviluppato da Percona che ha molte opzioni per amministrare MySQL

Quale versione scegliere?

Le esigenze di un'applicazione determinano quale database scegliere, dato che ognuno ha funzionalità univoche mirate a casi d'uso specifici. Ad esempio, se la tua applicazione richiede funzionalità di analisi, puoi utilizzare clickhouse in Percona o columnstore in MariaDB. Un'opzione simile non è disponibile in MySQL. Analogamente, se vuoi utilizzare la funzionalità di pool di thread, che non è disponibile nella versione Community di MySQL, devi scegliere Enterprise MySQL o la funzionalità di pool di thread open source in Percona e MariaDB.

MySQL nel cloud

Un database cloud viene eseguito in un ambiente cloud pubblico o ibrido al fine di semplificare la distribuzione, l'archiviazione e la gestione dei dati all'interno di un'organizzazione. I database cloud possono essere offerti come Database as a Service (DBaaS) gestiti oppure essere implementati su una macchina virtuale (VM) basata su cloud e gestiti autonomamente da un team IT interno. I principali cloud provider per MySQL gestito includono:

Google Cloud

Google Cloud offre sia una versione MySQL ospitata su una macchina virtuale, che un utente deve gestire autonomamente, sia Cloud SQL, che è un'offerta completamente gestita.

Amazon Web Services (AWS)

Amazon Web Services (AWS) offre un'opzione ospitata su una VM per MySQL e una soluzione completamente gestita sotto forma di RDS. AWS propone anche Aurora, un'offerta compatibile con MySQL che ha funzionalità aggiuntive.

Database SQL di Azure

Azure offre due modelli di deployment per MySQL simili a quelli di altri fornitori cloud: un'opzione su macchina virtuale sotto forma di MySQL su VM Azure e una versione completamente gestita sotto forma di database Azure per MySQL.

Cloud Oracle

Oracle offre la possibilità di ospitare MySQL sulle sue macchine virtuali. Ha anche creato una nuova offerta completamente gestita e chiamata MySQL HeatWave Database Service.

DigitalOcean

Anche DigitalOcean può ospitare MySQL sulle sue macchine virtuali. Offre inoltre un'opzione di hosting completamente gestito per MySQL.

Soluzioni ad alta disponibilità (HA) o per cluster

Molte aziende hanno lavorato per estendere MySQL e hanno creato prodotti che forniscono funzionalità di failover e alta disponibilità per il database MySQL. Alcuni sono strumenti diretti utilizzati con MySQL, mentre altri nascono da modifiche al codice sorgente MySQL per dare vita a prodotti separati che forniscono cluster ad alta disponibilità o multi-parent. Ecco alcune delle soluzioni ad alta disponibilità e scalabilità più diffuse per MySQL:

  • Replica dei gruppi e cluster InnoDB di MySQL

Un cluster InnoDB è costituito da almeno tre istanze MySQL Server e offre funzionalità di disponibilità elevata e scalabilità. I cluster InnoDB sono costituiti da MySQL Shell, router MySQL e server MySQL con replica dei gruppi. Maggiori dettagli sono disponibili qui.

Percona XtraDB Cluster è una soluzione di clustering sincrono che offre funzionalità di alta disponibilità, replica parallela e scalabilità. Percona XtraDB Cluster include lo strumento di amministrazione ProxySQL che configura automaticamente i nodi di Percona XtraDB Cluster mediante ProxySQL. Maggiori dettagli sono disponibili qui.

  • MariaDB Galera Cluster

MariaDB Galera Cluster è un cluster multi-primary virtualmente sincrono per MariaDB che offre funzionalità di disponibilità elevata e scalabilità. Si basa sui server MariaDB e sulla libreria del provider wsrep Galera. Offre funzionalità come unione automatica di nodi, replica effettiva in parallelo, topologia multi-primary e altro ancora. Maggiori dettagli sono disponibili qui.

  • Cluster Continuent Tungsten

Il cluster Tungsten fornisce un singolo pacchetto semplice che include tutti i componenti principali necessari per il deployment e la gestione del database MySQL come cluster. Fornisce una soluzione di clustering geografico. È costituito da Tungsten Manager, Replicator e Connector, nodi di dati e dashboard. Maggiori dettagli sono disponibili qui.

  • MariaDB Xpand (chiamato in precedenza ClustrixDB) 

MariaDB Xpand offre SQL distribuito compatibile con ACID, disponibilità elevata, funzionalità a tolleranza di errore, scalabilità in scrittura e scale out orizzontale per i carichi di lavoro transazionali. MariaDB Xpand è un componente di MariaDB Enterprise. È costituito da uno o più nodi MaxScale e da tre o più nodi Xpand. Maggiori dettagli sono disponibili qui.

  • ScaleArc

ScaleArc è un software di bilanciamento del carico dei database che offre la disponibilità elevata. Maggiori dettagli sono disponibili qui.

  • Vitess

Vitess dispone di funzionalità di sharding integrate che consentono di far crescere il database senza aggiungere la logica di sharding all'applicazione per garantire la disponibilità elevata e la scalabilità. Maggiori dettagli sono disponibili qui.

  • Strumenti che forniscono la replica standard per il failover: MHA, ProxySQL, MaxScale e Orchestrator
  • Servizi basati su cloud come Google Cloud, Oracle, AWS e Azure forniscono alta disponibilità interna per MySQL

Strumenti MySQL

Esistono strumenti MySQL di ogni tipo basati sul web, su interfaccia a riga di comando (CLI) e su Graphic User Interface (GUI). MySQL offre una vasta gamma di strumenti open source e commerciali per vari aspetti dei database come progettazione, sviluppo, amministrazione, backup, monitoraggio delle prestazioni e avvisi. 

Ecco alcuni degli strumenti di monitoraggio MySQL più diffusi con GUI:

Percona Monitoring and Management, Prometheus, MySQL Enterprise Monitor, New Relic, SolarWinds, HeidiSQL, AppDynamics, Datadog e SQLyog.

Ecco alcuni degli strumenti di amministrazione, sviluppo o utilità più popolari:

  • Basati su GUI: MySQL Workbench, HeidiSQL, DBeaver, dbForge Studio, Navicat, SQLyog
  • Basati su interfaccia a riga di comando: toolkit Percona, ghost

Dettagli degli strumenti più diffusi:

  • MySQL Workbench: di proprietà di MySQL, disponibile in Community Edition ed Enterprise Edition con funzionalità avanzate
  • Percona Monitoring and Management (PMM): sviluppato da Percona e disponibile gratuitamente
  • HeidiSQL: sviluppato da Ansgar Becker e disponibile gratuitamente
  • Percona Toolkit: sviluppato da Percona e disponibile gratuitamente
  • Road: di proprietà di Quest, è uno strumento a pagamento
  • phpMyAdmin: strumento gratuito open source basato sul web per la gestione di MySQL
  • DBeaver: sviluppato dalla community open source, disponibile in Community Edition ed Enterprise Edition con funzionalità avanzate gestite da DBeaver
  • Navicat: di proprietà di CyberTech, è uno strumento a pagamento
  • SQLyog: di proprietà di Webyog, è uno strumento a pagamento

Altri importanti strumenti di monitoraggio con grafici per analizzare percentuali di errore, traffico e pattern di query con meccanismi di avviso sono New Relic, Zabbix, Cortex, Prometheus e Grafana.

Esecuzione di MySQL con container/Kubernetes

Attualmente sta diventando sempre più diffusa l'esecuzione di un database su un cluster Kubernetes utilizzando le immagini container Docker. Consente di gestire il database mediante codice, eseguire deployment facili e veloci, proteggere i dati, isolare il database dall'applicazione e usare le risorse condivise. In pratica, il sistema di database può sfruttare tutti i vantaggi di Docker. Esistono anche alcuni operatori Kubernetes già disponibili per MySQL. Tuttavia, esistono ampi margini di miglioramento in quest'area.

Vuoi provare MySQL?

Google Cloud offre un'offerta completamente gestita di MySQL: Cloud SQL per MySQL
Scopri di più su Cloud SQL

Scopri come Cloud SQL per MySQL ti aiuta a innovare. Visualizza la documentazione