Mysql
 sql >> Database >  >> RDS >> Mysql

Come distribuire MySQL su Ubuntu e completamente gestito

In questo post del blog, ti mostreremo una guida passo passo su come installare e configurare un server MySQL sia manualmente sul sistema operativo Ubuntu 20.04, sia utilizzando il servizio di database gestito di ScaleGrid. Nelle sezioni seguenti di questo tutorial, ti aiuteremo attraverso ogni passaggio per configurare correttamente il tuo server MySQL e configurarlo correttamente.

Un po' di MySQL e Ubuntu

MySQL è un sistema di gestione di database relazionali (DBMS) open source. Funziona su server Windows e Linux ed è comunemente installato come parte dello stack LAMP (Linux, Apache, MySQL, PHP/Python/Perl) o dello stack LEMP (Linux, Nginx, MySQL, PHP). È una scelta adatta se sai che hai semplicemente bisogno di un database, in quanto è un sistema basato su SQL veloce, semplice e scalabile ed è considerato il più popolare sistema di gestione di database relazionali.

Sebbene Ubuntu sia uno dei sistemi operativi desktop open source più popolari al mondo, Ubuntu 20.04 offre stabilità, resilienza e sicurezza ancora migliori di classe enterprise in un modello conveniente.

Come installare MySQL su Ubuntu 20.04

Prima di addentrarci nel processo di installazione di un server MySQL su Ubuntu, tieni a mente questi prerequisiti:

  • Un server Ubuntu 20.04 con un utente amministrativo o sudo non root per eseguire i passaggi autorevoli e un firewall configurato UFW
  • Il sistema deve essere aggiornato utilizzando:
    • sudo apt update
    • sudo apt upgrade -y
  • Una connessione di rete stabile

Nuova installazione di MySQL su Ubuntu 20.04

Installa MySQL

Per installare MySQL su Ubuntu 20.04, è possibile eseguire un semplice comando (apt install mysql server) poiché il pacchetto di installazione fa parte del repository ufficiale di Ubuntu 20.04.

apt install mysql-server -y

Protezione dell'installazione del server MySQL

Il server MySQL ha uno script predefinito per la sua installazione sicura. Come pratica comune per rendere questa un'installazione sicura, eseguire questo script dopo il comando di installazione. Quello che fa è che consente all'utente di impostare la password di root per MySQL, disabilitare l'accessibilità dell'account di root dall'esterno dell'host locale, rimuovere gli account utente anonimi e anche rimuovere il database di test a cui possono accedere utenti anonimi. Questo script può essere invocato con questo sudo comando:

sudo mysql_secure_installation

Dopo l'esecuzione dello script di installazione sicura viene visualizzata una serie di prompt. La prima richiesta è di impostare VALIDATE PASSWORD COMPONENT . Questo prompt (se selezionato) eseguirà la convalida al momento della creazione della password dell'utente. Ti consentirà di creare la password solo se corrisponde agli standard di password su MySQL.

Impostazione della password di root

La seguente richiesta serve per impostare la password per root. L'utente deve impostare questa password. Rispondi a tutte le richieste successive con "Sì", poiché questa è una procedura consigliata dal punto di vista della sicurezza.

Configurazione di SSL per l'installazione del server MySQL

Ci sono momenti dopo l'installazione di MySQL, in cui il server di database è configurato su una macchina fisica separata sulla stessa rete o su una rete diversa. Per comunicare con un tale database, la comunicazione deve essere protetta e crittografata. Pertanto, i certificati SSL devono essere installati e abilitati sul server del database. Il protocollo SSL utilizza una coppia di chiavi per autenticare, proteggere e gestire connessioni sicure. Utilizzare il comando seguente per generare chiavi SSL:

sudo mysql_ssl_rsa_setup --uid=mysql

La loro directory predefinita contiene queste chiavi e puoi trovarle invocando il seguente comando:

sudo sudo find /var/lib/mysql -name '*.pem' -ls

mysql> \s

Richiamando il comando sopra dal prompt SQL, puoi confermare che SSL è attivo cercando la riga che dice SSL: Cipher in use is […] , come si vede nell'immagine qui sotto.

Protezione del database

La sicurezza del database è uno degli elementi più critici da considerare quando si pianifica l'installazione di MySQL. Gli aggressori sono sempre alla ricerca di modi per ottenere l'accesso da backdoor nei sistemi di database e ottenere informazioni privilegiate sull'obiettivo. Modificare la sua porta predefinita è un modo semplice per aumentare la sicurezza del database. Questo può essere modificato nel file di configurazione in /etc/mysql/mysql.conf.d/mysqld.cnf .

Crea un utente e un database MySQL

Usando questo semplice comando, puoi creare un account utente del database MySQL insieme alla sua password:

CREATE USER 'Username' @ 'localhost'  IDENTIFIED BY 'StrongPassword';

Il campo localhost nel CREATE USER comando indica che l'utente si connetterà dallo stesso server. Può essere sostituito da un indirizzo IP se ci si vuole connettere da una macchina con un indirizzo IP specifico, oppure può essere sostituito da un segno di percentuale % se l'utente vuole accedere al DB da qualsiasi luogo.

Se vuoi solo creare un database, puoi crearlo usando il seguente comando:

CREATE DATABASE databasename;

Dopo aver creato l'utente e il database, all'utente verranno concesse le autorizzazioni necessarie per il database.

I permessi possono essere di qualsiasi tipo; ad esempio, CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD , ecc. Di solito, il proprietario del database ha bisogno di tutte le autorizzazioni e queste autorizzazioni possono essere assegnate indipendentemente a un utente. Tutte queste autorizzazioni possono essere concesse contemporaneamente utilizzando il comando.

GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';

Anche in questo caso, la parola chiave localhost può essere sostituita con un indirizzo IP o con il % sign, se l'utente intende connettersi da un indirizzo IP specifico o da qualsiasi altra fonte.

I privilegi di un utente possono essere visualizzati tramite il comando SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Tutti i privilegi possono essere revocati per un utente utilizzando il comando:

REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';

Qui puoi vederlo dopo aver eseguito REVOKE comando, non ci sono privilegi per l'utente jason .

Creazione ed eliminazione di tabelle

È facile aggiungere o eliminare tabelle dal database. Tutto quello che devi fare è usare uno dei seguenti comandi:

DROP TABLE databasename.tablename

CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);

Il parametro column specifica il nome, mentre il parametro datatype specifica il tipo di dati che contiene la colonna.

Ci sono momenti in cui una chiave primaria deve essere aggiunta a una colonna. Una chiave primaria consente di identificare in modo univoco ogni voce nella tabella. Questo può essere fatto menzionandolo in CREATE TABLE comando. L'esempio seguente crea una colonna user_id con una chiave primaria che viene incrementata automaticamente. Tieni presente che la chiave primaria deve contenere valori univoci e non può contenere valori null

Aggiungi o rimuovi colonne in una tabella

Le colonne possono anche essere aggiunte o eliminate da una tabella specifica di un database dopo la sua creazione.

Per farlo, cambia il database che vuoi modificare usando il use database_name comando.

Successivamente, i seguenti comandi aggiungeranno e rilasceranno una colonna:

ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;

Inserisci dati in una tabella

Inserisci i dati in una tabella utilizzando il comando seguente:

INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );

Sarà necessario specificare i nomi delle colonne e il valore da inserire in ciascuna colonna in ordine. Se vuoi inserire valori in ogni colonna di una tabella, puoi semplicemente omettere le colonne e iniziare a specificare i valori direttamente dopo il nome della tabella:

INSERT INTO tablename VALUES ('value1','value2','value3' );

Update Data in a Table

Utilizzare il comando seguente per aggiornare i dati in una tabella:

UPDATE tablename SET columnname= 'newvalue'  WHERE columnname='value'

Il WHERE condizione indica in quale riga i dati devono essere aggiornati. Se la condizione non è specificata, i dati vengono aggiornati in tutte le righe della colonna specificata.

Seleziona i dati da una tabella

Per selezionare e visualizzare i dati da particolari colonne in una tabella, utilizzare il comando seguente:

SELECT column1,column2 FROM tablename;

Tuttavia, per selezionare tutte le colonne da una tabella, il comando utilizzato è:

SELECT * FROM tablename;

Abilita registrazione binaria

L'abilitazione della registrazione binaria nel server di database MySQL consente di registrare le query che hanno apportato modifiche al database. La registrazione binaria è una funzione utile da abilitare se, ad esempio, devi risolvere un problema causato da una query nel database.

Per abilitare la registrazione binaria, aggiungi la seguente riga all'interno del file di configurazione in /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

Per confermare se la registrazione binaria è attiva, invoca il seguente comando dalla shell MySQL:

show variables like  '% log_bin%'

Per impostazione predefinita, i file di registro binari sono archiviati all'interno di /var/lib/mysql directory nella maggior parte delle distribuzioni Linux incluso Ubuntu.

Imposta la replica asincrona semplice

MySQL ha il supporto per la replica, utile quando si pianifica il ripristino di emergenza e si assicura di ridurre al minimo il potenziale di eventuali tempi di inattività. MySQL supporta due tipi di replica:

  • Replica semisincrona
  • Replica asincrona

Con la replica semisincrona, quando un'origine esegue il commit di una transazione, anche tutte le repliche avranno eseguito il commit della transazione prima che l'origine ritorni alla sessione che ha eseguito la transazione. Lo svantaggio è che provoca un notevole ritardo nel completamento della transazione a causa del suddetto sistema di transazione.

Considerando che, con la replica asincrona, l'origine scrive gli eventi nel log binario e le repliche li richiedono quando sono pronti. Tuttavia, non vi è alcuna garanzia che qualsiasi evento raggiungerà mai una replica.

Per impostazione predefinita, MySQL ha la replica asincrona abilitata grazie al suo tempo di elaborazione veloce. Tuttavia, lo svantaggio principale è che se il database di origine si guasta, non c'è modo di recuperare i dati che non hanno completato le transazioni per replicare i DB. D'altra parte, la modalità di replica semisincrona si concentra maggiormente sulla disponibilità e sulla durabilità dei dati, ma è molto lenta. La scelta di una modalità di replica dipende esclusivamente dalle esigenze specifiche dell'utente relative alla configurazione del database.

All'interno del file my.cnf per il server di origine e il server di replica, puoi scrivere gli ID del server rispettivamente come:

server_id=1
server_id=2

È possibile creare un utente MySQL dedicato sul server di origine, che verrà utilizzato dalla replica per connettersi al server di origine.

GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server'
→ IDENTIFIED BY ‘masterpassword’;

Il processo di replica sul server di replica può essere avviato da:

mysql> CHANGE MASTER TO
-> MASTER_HOST='ip address',
-> MASTER_PORT=port number,
-> MASTER_USER='username',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='',
-> MASTER_LOG_POS=4;
mysql> start slave;

Queste istruzioni avvieranno la creazione del server di replica come copia del server di origine.

Backup/ripristino di un database MySQL

Mantenere un backup del database è sempre una buona idea, non sai mai quando potresti averne bisogno per assicurarti che i dati critici non vadano persi. Per eseguire il backup di un database per MySQL su Ubuntu OS, esegui semplicemente il seguente mysqldump comando:

sudo mysqldump -u root -p <database.name> > <filename.sql>

Per ripristinare un database eliminato, il database viene prima creato con lo stesso nome in MySQL. Il database viene quindi ripristinato con il comando:

sudo mysql -u root -p <database.name> < <filename.sql>

Lo screenshot seguente elimina prima il nostro test_database, quindi lo ricrea e tenta di ripristinare tutti i suoi dati dal backup creato in precedenza. L'importazione dei dati può essere effettuata anche seguendo la stessa procedura.

Conclusione sull'installazione di MySQL su Ubuntu

Ora hai completato con successo i passaggi di base per installare MySQL su Ubuntu 20.04. Dopo aver completato l'installazione, avrai un database relazionale operativo che potrai utilizzare per creare la tua prossima applicazione o sito web.

Se preferisci che l'intero processo sia automatizzato e gestito da esperti, dai un'occhiata alla parte successiva di questa guida.

Utilizzo di ScaleGrid per configurare la distribuzione di MySQL in DigitalOcean

In questa parte della guida, utilizziamo la nostra soluzione di hosting MySQL completamente gestita, poiché offre il throughput più elevato e la latenza più bassa su DigitalOcean. Scopri di più nell'articolo sulle migliori prestazioni di MySQL DigitalOcean per confrontare i prezzi, la latenza e le prestazioni di throughput di ScaleGrid e di DigitalOcean Managed Databases.

L'intero processo dovrebbe richiedere meno di 20 minuti, con solo un paio di minuti all'inizio per personalizzare la configurazione della distribuzione di MySQL e un paio di minuti alla fine per connettersi all'applicazione .

Dopo la registrazione per un account di prova gratuito, la prima cosa da fare è selezionare MySQL come database, DigitalOcean come cloud e Hosting dedicato come piano per avviare il processo di creazione del cluster:

Passaggio 1. Inserisci i dettagli di distribuzione MySQL

La procedura guidata di creazione del cluster si aprirà al primo passaggio in cui puoi personalizzare i dettagli di base della tua distribuzione. Inserisci un nome per il tuo cluster utilizzando caratteri alfanumerici e utilizza un nome descrittivo univoco in modo da poter riconoscere facilmente il tuo cluster in un secondo momento.

Successivamente, seleziona il data center DigitalOcean che desideri utilizzare per il tuo server master dal menu a discesa della regione del cloud:ti consigliamo di utilizzare la stessa regione delle tue applicazioni DigitalOcean Droplets per il meglio prestazione. Quindi puoi selezionare la dimensione della tua VM delle istanze di DigitalOcean Droplet e la versione di MySQL che desideri utilizzare (sono supportate tutte le versioni principali). InnoDB Storage Engine è l'impostazione predefinita per tutte le distribuzioni MySQL. Fare clic su Avanti.

Passaggio 2. Abilita la replica master-slave

Nel passaggio 2, puoi abilitare la replica master-slave di DigitalOcean MySQL per aggiungere un'elevata disponibilità alla tua distribuzione. La replica è importante per mantenere la tua applicazione disponibile e online per i tuoi utenti nel caso in cui la tua regione del data center DigitalOcean non funzioni. Sebbene DigitalOcean sia un provider cloud altamente affidabile con un tempo di attività del 99,99%, i data center inevitabilmente si interrompono, quindi replicare i tuoi dati in posizioni di data center aggiuntive ti consente di ridurre al minimo il rischio di perdita di dati e tempi di inattività per i tuoi utenti.

Se desideri continuare con una distribuzione autonoma, fai clic su Avanti per passare al passaggio 3 senza abilitare la configurazione master-slave.

Nota:la configurazione master-slave è disponibile solo per gli account a pagamento, non puoi impostare una distribuzione di set di repliche mentre sei in modalità di prova.

Configura la configurazione MySQL Master-Slave

Ci sono un paio di opzioni qui per personalizzare la tua configurazione MySQL master-slave. Innanzitutto, puoi scegliere tra 2 + 1 Quorum o 3 nodi per la tua distribuzione. Entrambi offrono un'elevata disponibilità, ma nella configurazione del Quorum 2 + 1 sono disponibili solo 2 nodi di supporto dei dati poiché il nodo Quorum funge da decisore in un evento di failover. Puoi anche contattare l'assistenza per personalizzare la tua configurazione master-slave per aggiungere più nodi alla tua distribuzione.

In seguito, puoi scegliere tra replica semisincrona e asincrona. La replica semisincrona garantisce che almeno uno slave abbia ricevuto tutti i dati che il master ha commesso, assicurando che il failover allo slave giusto sia privo di perdite. Nella replica asincrona, ogni slave si sincronizza in modo asincrono con il master, quindi il failover da master a slave può comportare il failover su un server che non è completamente sincronizzato con il master corrente.

Infine, personalizza le posizioni del data center DigitalOcean che desideri utilizzare per i tuoi nodi slave. Al termine, fai clic su Avanti.

Come configurare MySQL su DigitalOceanFai clic per twittare

Passaggio 3. Abilita SSL

Nel passaggio 3, puoi abilitare SSL per la tua distribuzione. Per impostazione predefinita, il server MySQL installa e abilita sempre la configurazione SSL, ma non è obbligatorio che i client si connettano tramite SSL. I client possono scegliere di connettersi con o senza SSL poiché il server consente entrambi i tipi di connessione. Scopri di più sulla configurazione e la gestione di SSL in questo tutorial su MySQL.

Passaggio 4. Configura i firewall

Nell'ultimo passaggio del processo di creazione del cluster, inserisci almeno un CIDR IP a cui sarà consentito l'accesso alla tua distribuzione MySQL per impostare la regola del firewall. Puoi trovare il tuo attuale IP CIDR nella parte superiore della pagina. Questi possono essere personalizzati in seguito sia a livello di cluster che a livello di account. Dopo averlo inserito, fai clic su Aggiungi. Inserisci tutti i CIDR IP che desideri, quindi fai clic su Avanti.

Passaggio 5. Rivedi e crea

L'ultima pagina fornisce un breve riepilogo del tuo nuovo cluster MySQL DigitalOcean. Rivedi tutti i dettagli e fai clic sul pulsante Precedente per tornare a un passaggio precedente e modificare le tue configurazioni. Quando sei pronto, fai clic su Crea per avviare il tuo cluster.

E il gioco è fatto! La tua distribuzione è ora in fase di provisioning! Questa operazione richiede circa 15 minuti, quindi mentre aspetti, puoi familiarizzare con gli strumenti di gestione per MySQL nella console:backup, ripristini, ridimensionamento, avvisi, analisi delle query, ecc.

Connetti e migra

Una volta che lo stato del cluster cambia da "Creating" a "Running", puoi connettere la tua distribuzione. Esistono due modi diversi per farlo:tramite la stringa di connessione alla tua app, tramite la riga di comando, tramite WordPress, tramite MySQL Workbench o altri popolari strumenti GUI. Tutti i dettagli della tua connessione sono disponibili nella metà inferiore della scheda Panoramica della pagina dei dettagli del tuo cluster.

Visita le schede principali per creare un database MySQL e creare un utente del database MySQL. È possibile accedervi e gestirli in qualsiasi momento dalla console ScaleGrid.

Migra la tua installazione MySQL esistente in pochi minuti

Anche la migrazione è un processo automatizzato che richiede solo pochi dettagli dalla distribuzione esistente. Fai clic sul pulsante Importa dati nella scheda Panoramica e inserisci il nome del server, la porta, i nomi del database, il nome utente e la password. Consulta il nostro documento sulle migrazioni MySQL per maggiori dettagli e ulteriori opzioni di migrazione.

Vuoi provare MySQL su DigitalOcean per te stesso?

Prova ScaleGrid e configura MySQL su DigitalOcean con pochi semplici passaggi utilizzando la nostra prova completamente gratuita di 30 giorni. Automatizza l'hosting e la gestione MySQL nel cloud con le più potenti funzionalità di gestione del database per ottimizzare la tua distribuzione.

Eseguire il tuo server MySQL su DigitalOcean

Una volta che sei pronto e funzionante, la tua distribuzione MySQL può funzionare virtualmente con il pilota automatico. Poiché ScaleGrid è un servizio completamente gestito, gestiamo tutta l'amministrazione e la manutenzione quotidiana dei database MySQL, così puoi concentrarti sulla creazione della tua app. Se dovesse verificarsi qualcosa che richiede la tua attenzione, come lo spazio su disco insufficiente, ti invieremo una notifica in modo che tu possa accedere e vedere se sei pronto per aumentare la scalabilità del tuo cluster.

Puoi anche connetterti con i nostri esperti MySQL in qualsiasi momento attraverso il nostro supporto 24 ore su 24, 7 giorni su 7 per aiutarti a configurare e risolvere i problemi della tua distribuzione.