Hai diverse opzioni per eseguire il deployment di MySQL nell'ambito del tuo progetto Google Cloud. Puoi utilizzare Cloud SQL, Google Cloud Marketplace o installare manualmente MySQL su Compute Engine.
Cloud SQL offre MySQL come servizio web. Puoi utilizzare Cloud SQL per ospitare il tuo database MySQL nella cloud di Google e lasciare che sia Google Cloud a gestire attività amministrative come replica, gestione delle patch e gestione del database.
Cloud Marketplace fornisce una semplice interfaccia click-to-deploy che semplifica l'installazione di MySQL su un'istanza di Compute Engine. Cloud Marketplace include non solo un'installazione MySQL autonoma, ma anche diversi stack di sviluppo web che utilizzano MySQL, tra cui stack LAMP, stack LEMP e cluster Percona MySQL.
Se preferisci installare e personalizzare MySQL manualmente, puoi utilizzare Compute Engine per creare un database MySQL in pochi minuti. Questo documento fornisce indicazioni sull'opzione da scegliere e illustra l'installazione manuale di un database MySQL su Compute Engine.
Come scegliere l'opzione di deployment MySQL giusta
Cloud SQL è un'ottima opzione se vuoi la comodità che Google Cloud si occupi delle faccende di amministrazione del database e dei server di backend. Ad esempio, Cloud SQL offre backup automatici e recupero point-in-time. Inoltre, i dati vengono replicati su più zone per una maggiore disponibilità e resilienza.
Potresti voler installare MySQL su Compute Engine se hai bisogno di una funzionalità MySQL non supportata da Cloud SQL. Ad esempio, Cloud SQL non supporta le funzioni definite dall'utente o il privilegio SUPER. Per ulteriori informazioni, consulta le Domande frequenti su Cloud SQL.
Se decidi di installare MySQL su Compute Engine, puoi utilizzare Cloud Marketplace per eseguire il deployment di un'installazione MySQL oppure puoi installare manualmente MySQL su un'istanza Compute Engine. Cloud Marketplace offre un modo conveniente per eseguire il deployment di MySQL come parte di stack di sviluppo più ampi. Cloud Marketplace offre diverse opzioni per le installazioni di MySQL, tra cui un'installazione autonoma di MySQL, stack LAMP, stack LEMP, stack Nginx, un'installazione di Percona MySQL Cluster e molte altre opzioni.
Se le offerte di Cloud Marketplace non soddisfano le tue esigenze, puoi installare manualmente MySQL su un'istanza di Compute Engine. Ad esempio, potresti voler eseguire il deployment di MySQL su un'immagine personalizzata che hai creato oppure avere il controllo completo del processo di installazione.
Per installare manualmente MySQL su un'istanza Compute Engine, è sufficiente creare un'istanza Compute Engine e installare MySQL direttamente nell'istanza.
Per ulteriori informazioni su ciascuna opzione, consulta le seguenti risorse:
- Per informazioni su Cloud SQL, consulta la documentazione di Cloud SQL per MySQL.
Per Cloud Marketplace, consulta le opzioni per le installazioni di MySQL nella console Google Cloud:
Per l'installazione manuale di MySQL su un'istanza Compute Engine, consulta il resto di questo documento.
Obiettivi
- crea un'istanza Compute Engine
- Installa MySQL
- Connettersi a MySQL
Prerequisiti
Crea un nuovo progetto nella console Google Cloud. Puoi utilizzare un progetto esistente, ma crearne uno nuovo semplifica la pulizia.
Puoi completare tutti i passaggi in questo documento utilizzando la console Google Cloud, ma se preferisci utilizzare gcloud CLI, segui questi passaggi per abilitare l'API Compute Engine e installare Google Cloud CLI.
Utilizza la console Google Cloud per abilitare l'API Compute Engine.
Installa gcloud CLI.
Configura l'area di lavoro per rendere i comandi meno dettagliati. Sostituisci i valori del progetto per
PROJECT_ID
,REGION
eZONE
nei comandi seguenti. Per l'elenco completo delle zone, consulta Regioni e zone disponibili.gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
crea un'istanza Compute Engine
Creare un'istanza di Compute Engine per MySQL e stabilire una connessione SSH all'istanza appena creata. Il sistema operativo predefinito è Debian versione 10. Se preferisci utilizzare un sistema operativo diverso per questo tutorial, puoi scegliere tra le opzioni descritte nella pagina delle immagini pubbliche nella documentazione di Compute Engine.
Console
Per creare un'istanza Compute Engine nella console Google Cloud:
Nella console Google Cloud, vai alla pagina Istanze VM di Compute Engine.
Seleziona il progetto appena creato e fai clic su Continua.
Fai clic su Crea istanza (se esistono già istanze, Nuova istanza). Assegna all'istanza il nome mysql-test.
Per specificare un sistema operativo diverso dal valore predefinito, nella sezione Disco di avvio, fai clic su Modifica per configurare le proprietà per il disco di avvio. Nella scheda Immagini pubbliche, seleziona un sistema operativo, quindi fai clic su Salva.
Per garantire la conformità con le best practice per la sicurezza, crea l'istanza senza un indirizzo IP esterno.
Espandi Opzioni avanzate ed espandi Networking. In Interfacce di rete, espandi l'interfaccia predefinita e nel menu Indirizzo IPv4 esterno, seleziona Nessuno.
Fai clic su Crea.
Per configurare e gestire Network Address Translation con Cloud NAT:
Nella console Google Cloud, vai alla pagina Cloud NAT.
Fai clic su Inizia o Crea gateway Cloud NAT.
In Nome gateway, inserisci
nat-simple-configuration
.Per la rete VPC del gateway NAT, scegli predefinita.
Per Regione del gateway NAT, scegli la regione che hai scelto sopra.
Per Router Cloud, scegli Crea nuovo router.
Nella finestra di dialogo, specifica un nome per il router,
nat-router-simple-configuration
e fai clic su Crea.Fai clic su Configurazione avanzata.
In Stackdriver Logging, seleziona Traduzione ed errori. Tutti i log vengono inviati a Cloud Logging.
Fai clic su Crea.
Per stabilire una connessione SSH:
Nella pagina Istanze VM, trova la nuova istanza VM nell'elenco.
Nella colonna Connetti, fai clic su SSH. Il terminale SSH si apre in una finestra del browser.
gcloud
Per creare un'istanza Compute Engine, utilizza il comando
gcloud compute instances create
. Per specificare il sistema operativo, aggiungi il parametro--image-family
seguito dal parametro image family o dal parametro--image
seguito dal nome dell'immagine per una specifica versione dell'immagine. Ad esempio, per utilizzare l'immagine più recente della famiglia Debian 10, aggiungi--image-family debian-10
. Quando utilizzi immagini pubbliche, il progetto immagine deve essere fornito utilizzando il parametro--image-project
.gcloud compute instances create \ --image-family debian-10 \ --image-project debian-cloud \ --no-address \ mysql-test
Creare un semplice router Cloud.
gcloud compute routers create nat-router-simple-configuration \ --network=default
Configura e gestisci Network Address Translation con Cloud NAT.
gcloud compute routers nats create nat-simple-configuration \ --router=nat-router-simple-configuration \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging
Connettiti all'istanza utilizzando
ssh
.gcloud compute ssh \ --tunnel-through-iap \ mysql-test
Le connessioni SSH vengono effettuate tramite l'inoltro TCP gestito da Identity-Aware Proxy (IAP).
Installa MySQL
I passaggi seguenti spiegano come installare MySQL sulla tua istanza di Compute Engine.
Debian 10 o versioni successive
Queste istruzioni installano MySQL 8 o 5.7.
Le versioni 10 e successive di Debian contengono MariaDB invece di MySQL come parte del relativo sistema di gestione dei pacchetti. MariaDB mantiene la compatibilità con il protocollo MySQL, ma dispone di un set di funzionalità che si evolve in modo indipendente. Per maggiori dettagli, consulta Confronto tra MaryDB e MySQL.
Per installare MySQL, scarica il pacchetto di release e installalo manualmente utilizzando il comando dpkg
.
Installa la dipendenza
wget
.sudo apt-get install -y wget
Scarica il pacchetto di rilascio di MySQL Community Server.
export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
Verifica l'integrità del file del pacchetto di release.
cat > ${DEB_FILE}.md5 << EOL 799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
L'autenticità e l'integrità del file vengono verificate se viene visualizzato il seguente output.
mysql-apt-config_0.8.20-1_all.deb: OK
Dopo aver verificato il file, aggiungi il pacchetto MySQL al repository del pacchetto locale.
sudo dpkg -i ${DEB_FILE}
Ti viene chiesto di confermare le opzioni di installazione, inclusa la versione MySQL.
Con l'opzione di menu MySQL Server e cluster selezionata, premi Invio e utilizza i tasti freccia per scegliere una versione del server.
In questa guida è previsto che tu scelga MySQL 8.0 o 5.7. Premi Invio sulla tastiera dopo aver selezionato la versione.
Se le opzioni selezionate nel menu di configurazione ti soddisfano, utilizza i tasti Freccia per selezionare
Ok
nel menu e premi Invio sulla tastiera.Aggiorna la cache del pacchetto.
sudo apt-get update
Se ricevi un errore GPG simile a Impossibile verificare la seguente firma perché la chiave pubblica non è disponibile: NO_PUBKEY 467B942D3A79BD29, importa le chiavi GPG mancanti con un comando che segue questo pattern:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
Nel messaggio di errore dimostrativo, la chiave pubblica mancante è
467B942D3A79BD29
; fornisci questo valore con l'opzione--recv-keys
.Ripeti il comando per aggiornare la cache del pacchetto.
Installa MySQL. Il processo di installazione avvia il servizio MySQL.
sudo apt-get -y install mysql-community-server
Viene richiesto di fornire alcuni dettagli per l'installazione, ad esempio la password root.
Debian 9
Queste istruzioni installano MySQL 8 o 5.7.
Per impostazione predefinita, alcune versioni di Debian, come Debian 9, installano MariaDB come server MySQL predefinito. MariaDB è progettato per essere ampiamente compatibile con MySQL e può essere richiamato utilizzando gli stessi comandi. Per maggiori dettagli sulle differenze tra MySQL e MySQL standard, vedi Passare da MySQL a MariaDB in Debian 9.
Per installare MySQL, segui queste istruzioni:
Scarica il pacchetto di rilascio di MySQL Community Server.
export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
Verifica l'integrità del file del pacchetto di release.
cat > ${DEB_FILE}.md5 << EOL 9e393c991311ead61dcc8313aab8e230 ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
L'autenticità e l'integrità del file vengono verificate se viene visualizzato il seguente output.
mysql-apt-config_0.8.17-1_all.deb: OK
Dopo aver verificato il file, aggiungi il pacchetto MySQL al repository del pacchetto locale.
sudo dpkg -i ${DEB_FILE}
Ti viene chiesto di confermare le opzioni di installazione, inclusa la versione MySQL.
Con l'opzione di menu MySQL Server e cluster selezionata, premi Invio e utilizza i tasti freccia per scegliere una versione del server.
In questa guida è previsto che tu scelga MySQL 8.0 o 5.7. Premi Invio sulla tastiera dopo aver selezionato la versione.
Se le opzioni selezionate nel menu di configurazione ti soddisfano, utilizza i tasti Freccia per selezionare
Ok
nel menu e premi Invio sulla tastiera.Aggiorna la cache del pacchetto.
sudo apt-get update
Se ricevi un errore GPG simile a Impossibile verificare la seguente firma perché la chiave pubblica non è disponibile: NO_PUBKEY 467B942D3A79BD29, importa le chiavi GPG mancanti con un comando che segue questo pattern:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
Nel messaggio di errore dimostrativo, la chiave pubblica mancante è
467B942D3A79BD29
; fornisci questo valore con l'opzione--recv-keys
.Ripeti il comando per aggiornare la cache del pacchetto.
Installa MySQL. Il processo di installazione avvia il servizio MySQL.
sudo apt-get -y install mysql-community-server
Ubuntu
Per Ubuntu 1804 e versioni precedenti, queste istruzioni installano MySQL 5.7.
Per Ubuntu 2004 e versioni successive, queste istruzioni devono installare MySQL 8.
Aggiorna il gestore di pacchetti
apt-get
.sudo apt-get update
Installa MySQL. Il processo di installazione avvia il servizio MySQL.
sudo apt-get -y install mysql-server
Per impostazione predefinita nelle distribuzioni Ubuntu, mysql autentica l'utente
root
con il plug-inauth_socket
. Esegui questa query per verificare la configurazione predefinita:echo "SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user='root' ;" \ | sudo mysql -t -u root
L'output mostra che l'utente
root
che si connette dalocalhost
utilizzerà il plug-inauth_socket
:+------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------+-----------------------+-------------+-----------+ | root | | auth_socket | localhost | +------+-----------------------+-------------+-----------+
Cambiate questa impostazione e scegliete una password root che sia difficile da indovinare:
export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD" echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \ | sudo mysql -u root
L'output contiene la nuova password root:
Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
CentOS o RHEL 7
Queste istruzioni installano MySQL 8.
La versione 7 di CentOS e RHEL contiene MariaDB invece di MySQL come parte del sistema di gestione dei pacchetti. Per installare MySQL, devi prima aggiornare il gestore di pacchetti.
Scarica il pacchetto di rilascio di MySQL Community Server.
export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
Verifica l'integrità del file del pacchetto di release.
cat > ${RPM_FILE}.md5 << EOL 8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
L'autenticità e l'integrità del file vengono verificate se viene visualizzato il seguente output.
mysql80-community-release-el7-4.noarch.rpm: OK
Aggiorna il gestore di pacchetti in modo che includa MySQL.
sudo rpm -Uvh ${RPM_FILE}
Installa MySQL.
sudo yum -y install mysql-community-server
Avvia il server MySQL.
sudo /usr/bin/systemctl start mysqld
Recupera la password root temporanea dai log del server
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Rocky Linux o RHEL 8
Queste istruzioni installano MySQL 8.
La versione 8 di Rocky Linux, CentOS Stream e RHEL contiene MariaDB anziché MySQL come parte del relativo sistema di gestione dei pacchetti. Per installare MySQL, devi prima aggiornare il gestore di pacchetti.
Scarica il pacchetto di rilascio di MySQL Community Server.
export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
Verifica l'integrità del file del pacchetto di release.
cat > ${RPM_FILE}.md5 << EOL 0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
L'autenticità e l'integrità del file vengono verificate se viene visualizzato il seguente output.
mysql80-community-release-el8-2.noarch.rpm: OK
Aggiorna il gestore di pacchetti in modo che includa MySQL.
sudo rpm -iUvh ${RPM_FILE}
Installa MySQL. Durante l'installazione, disabilita il repository AppStream in modo che l'installazione utilizzi il server della community.
sudo yum module disable -y mysql sudo yum install -y \ --disablerepo=appstream \ mysql-community-server
Avvia il server MySQL.
sudo /usr/bin/systemctl start mysqld
Recupera la password root temporanea dai log del server
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Migliora la sicurezza dell'installazione di MySQL
Per migliorare la sicurezza dell'installazione di MySQL, esegui il comando mysql_secure_installation
. Se non hai impostato una password durante
l'installazione, creane una in questo passaggio. Per ulteriori informazioni su questo comando, consulta la documentazione di MySQL per mysql_secure_installation.
sudo mysql_secure_installation
Connettersi a MySQL
I passaggi seguenti spiegano come connetterti a MySQL dall'istanza mysql-test
.
MySQL 8.0
Connetterti a MySQL tramite il client MySQL.
sudo mysql -u root -p
Quando ti connetti a MySQL, il prompt diventa
mysql>
.Puoi quindi eseguire i comandi MySQL. Ad esempio, il seguente comando mostra i thread in esecuzione, inclusa la connessione attuale.
mysql> SHOW processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | 5 | event_scheduler | localhost | NULL | Daemon | 1889 | Waiting on empty queue | NULL | | 14 | root | localhost | NULL | Query | 0 | init | show processlist | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ 2 rows in set (0.00 sec)
Puoi utilizzare il seguente comando per generare un elenco di utenti.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+------------------------------------------------------------------------+ | User | Host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.sys | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | root | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B | +------------------+-----------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
Quando hai finito di eseguire i comandi, utilizza il comando
exit
per uscire dal client MySQL, quindi utilizza di nuovoexit
per disconnetterti dall'istanza di Compute Engine.mysql> exit
Bye
MySQL 5.7
Connetterti a MySQL tramite il client MySQL.
sudo mysql -u root -p
Quando ti connetti a MySQL, il prompt diventa
mysql>
.Puoi quindi eseguire i comandi MySQL. Ad esempio, il seguente comando mostra i thread in esecuzione, inclusa la connessione attuale.
mysql> SHOW processlist;
+----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 51 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
Puoi utilizzare il seguente comando per generare un elenco di utenti.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+---------------+-----------+-------------------------------------------+ | User | Host | authentication_string | +---------------+-----------+-------------------------------------------+ | root | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +---------------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)
Quando hai finito di eseguire i comandi, utilizza il comando
exit
per uscire dal client MySQL, quindi utilizza di nuovoexit
per disconnetterti dall'istanza di Compute Engine.mysql> exit
Bye
Eseguire la pulizia
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e non incorrano in addebiti. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Eliminazione di istanze
Per eliminare un'istanza di Compute Engine:
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Seleziona la casella di controllo per l'istanza che vuoi eliminare.
- Per eliminare l'istanza, fai clic su Altre azioni, quindi su Elimina e segui le istruzioni.
Passaggi successivi
Ora hai visto come installare il server MySQL su Compute Engine. Per individuare applicazioni più complesse che utilizzano MySQL, esplora l'ampia gamma di stack di sviluppo su Cloud Marketplace che utilizzano MySQL.
Se i tuoi requisiti includono alta disponibilità e scalabilità, valuta l'installazione di cluster MySQL su Compute Engine. MySQL Cluster offre disponibilità e scalabilità tramite clustering senza condivisione e suddivisione automatica. Cloud Marketplace offre un'opzione click-to-deploy per Percona, una soluzione open source per il clustering MySQL.
Un'altra soluzione open source per la scalabilità MySQL è Vitess, che gestisce tutto il traffico dei database di YouTube dal 2011. Vitess è ideale per applicazioni eseguite in container. Per ulteriori informazioni sull'utilizzo di Vitess in un ambiente containerizzato, consulta Esecuzione di Vitess su Kubernetes.
Per ulteriori informazioni su MySQL, consulta la documentazione ufficiale di MySQL.
Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Cloud Architecture Center.