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 ancora oggi. 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.
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.
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.
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:
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:
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.
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 con deployment 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, 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.
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:
Un cluster InnoDB è costituito da almeno tre istanze MySQL Server e offre funzionalità di alta disponibilità e scalabilità. I cluster InnoDB sono costituiti da MySQL Shell, router MySQL e server MySQL con replica dei gruppi. Ulteriori dettagli sono disponibili in Chapter 23 InnoDB Cluster.
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. Ulteriori dettagli sono disponibili in Percona XtraDB Cluster.
MariaDB Galera Cluster è un cluster multi-primary virtualmente sincrono per MariaDB che offre funzionalità di alta disponibilità 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. Ulteriori dettagli sono disponibili in MariaDB Galera Cluster.
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. Ulteriori dettagli sono disponibili in Cluster Continuent Tungsten.
MariaDB Xpand offre SQL distribuito compatibile con ACID, disponibilità elevata, 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. Ulteriori dettagli sono disponibili in MariaDB Xpand.
ScaleArc è un software di bilanciamento del carico dei database che offre alta disponibilità. Ulteriori dettagli sono disponibili in ScaleArc.
Vitess dispone di funzionalità di sharding integrate che consentono di far crescere il database senza aggiungere la logica di sharding all'applicazione per garantire alta disponibilità e scalabilità. Ulteriori dettagli sono disponibili in Vitess.
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:
Dettagli degli strumenti più diffusi:
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.
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.
Scopri come Cloud SQL per MySQL ti aiuta a innovare. Visualizza la documentazione
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.