Clonare un database MySQL su Compute Engine

Last reviewed 2019-10-08 UTC

Questo tutorial mostra due modi per clonare un database MySQL in esecuzione su Compute Engine. Un metodo utilizza snapshot dei dischi permanenti. L'altro metodo utilizza l'esportazione e l'importazione native di MySQL, trasferendo il file di esportazione utilizzando Cloud Storage. Cloud Storage è il Google Cloud servizio di archiviazione di oggetti. Offre un modo semplice, sicuro, duraturo e ad alta disponibilità per archiviare i file.

La clonazione è il processo di copia di un database su un altro server. La copia è indipendente dal database di origine e viene conservata come snapshot in un determinato momento. Puoi utilizzare un database clonato per vari scopi senza caricare il server di produzione o rischiare l'integrità dei dati di produzione. Ecco alcune di queste finalità:

  • Eseguire query di analisi.
  • Test di carico o di integrazione delle tue app.
  • Estrazione dei dati per il popolamento dei data warehouse.
  • Eseguire esperimenti sui dati.

Ogni metodo di clonazione descritto in questo tutorial presenta vantaggi e svantaggi. Il metodo ideale per te dipende dalla tua situazione. La tabella seguente evidenzia alcuni problemi chiave.

Problema Metodo 1: snapshot dei dischi Metodo 2: esportazione e importazione tramite Cloud Storage
Spazio su disco aggiuntivo necessario sulle istanze MySQL Non è richiesto spazio su disco aggiuntivo Spazio aggiuntivo necessario per archiviare il file di esportazione durante la creazione e il ripristino
Carico aggiuntivo sulle istanze MySQL di origine durante la clonazione Nessun carico aggiuntivo Carico aggiuntivo su CPU e I/O durante la creazione e il caricamento del file di esportazione
Durata della clonazione Relativamente veloce per database di grandi dimensioni Relativamente lento per database di grandi dimensioni
Può eseguire la clonazione da istanze MySQL esterne a Google Cloud No
complessità Una sequenza complessa di comandi per il collegamento di dischi clonati Un insieme di comandi relativamente semplici per la clonazione
Può sfruttare i sistemi di backup esistenti Sì, se il sistema di backup utilizza gli snapshot del disco Google Cloud Sì, se il sistema di backup esporta i file in Cloud Storage
Granularità della clonazione Può clonare solo interi dischi Può clonare solo il database specificato
Coerenza dei dati Coerenti al momento dello snapshot Coerenti al momento dell'esportazione
Può utilizzare Cloud SQL come origine No Sì, se viene utilizzata la stessa versione
Può utilizzare Cloud SQL come destinazione No

Questo tutorial presuppone che tu abbia familiarità con la riga di comando Linux e con l'amministrazione del database MySQL.

Obiettivi

  • Scopri come eseguire un database MySQL su Google Cloud.
  • Scopri come creare un database di prova su un disco secondario.
  • Scopri come clonare un database MySQL utilizzando gli snapshot dei dischi Compute Engine.
  • Scopri come clonare un database MySQL trasferendo un file di esportazione utilizzando Cloud Storage.
  • Scopri come clonare un database MySQL in Cloud SQL trasferendo un file di esportazione utilizzando Cloud Storage.

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi Google Cloud utenti potrebbero avere diritto a una prova gratuita.

Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Abilita l'API Compute Engine.
  7. Attiva l'API

Configurazione dell'ambiente

Per completare questo tutorial, devi configurare il tuo ambiente di calcolo con quanto segue:

  • Un'istanza MySQL su Compute Engine (denominata mysql-prod) per rappresentare il tuo server di database di produzione.
  • Un disco aggiuntivo (denominato mysql-prod-data) collegato al server di produzione per l'archiviazione del database di produzione.
  • Una copia del database Employees importata in mysql-prod per simulare il database di produzione che vuoi clonare.
  • Un'istanza MySQL su Compute Engine (denominata mysql-test) per rappresentare il server del database di test. Clona il database su questo server.

Il seguente diagramma illustra questa architettura.

Diagramma che mostra la configurazione per la clonazione di un database MySQL in questo tutorial.

Crea l'istanza VM di produzione

Per simulare un ambiente di produzione, configura un'istanza VM Compute Engine che esegue MySQL su Debian Linux.

L'istanza VM per questo tutorial utilizza due dischi: uno da 50 GB per il sistema operativo e gli account utente e uno da 100 GB per l'archiviazione del database.

In Compute Engine, l'utilizzo di dischi separati non offre vantaggi in termini di prestazioni. Le prestazioni del disco sono determinate dalla capacità di archiviazione totale di tutti i dischi collegati a un'istanza e dal numero totale di vCPU nell'istanza VM. Pertanto, il database e il file di log possono trovarsi sullo stesso disco.

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Imposta la zona che preferisci:

    ZONE=us-east1-b
    REGION=us-east1
    gcloud config set compute/zone "${ZONE}"
    
  3. Crea un'istanza Compute Engine:

    gcloud compute instances create mysql-prod \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --boot-disk-size=50GB \
        --boot-disk-device-name=mysql-prod \
        --create-disk="mode=rw,size=100,type=pd-standard,name=mysql-prod-data,device-name=mysql-prod-data"
    

    Questo comando concede all'istanza l'accesso completo alle API, crea un disco secondario da 100 GB e lo collega all'istanza. Google Cloud Ignora l'avviso relativo alle prestazioni del disco perché per questo tutorial non sono necessarie prestazioni elevate.

Configura il disco aggiuntivo

Il secondo disco collegato all'istanza di produzione è destinato allo stoccaggio del database di produzione. Questo disco è vuoto, quindi devi partizionarlo, formattarlo e montarlo.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  2. Assicurati che accanto al nome dell'istanza mysql-prod sia visualizzato un segno di spunta verde, a indicare che l'istanza è pronta.

  3. Fai clic sul pulsante SSH accanto all'istanza mysql-prod. Il browser apre una connessione di terminale all'istanza.

  4. Nella finestra del terminale, viene visualizzato un elenco dei dischi collegati all'istanza:

    lsblk
    

    L'output è il seguente:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   50G  0 disk
    └─sda1   8:1    0   50G  0 part /
    sdb      8:16   0  100G  0 disk
    

    Il disco denominato sdb (100 GB) è il disco dati.

  5. Formatta il disco sdb e crea una singola partizione con un file system ext4:

    sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard \
        /dev/sdb
    
  6. Crea la directory dei dati MySQL che fungerà da punto di montaggio per il disco dati:

    sudo mkdir -p /var/lib/mysql
    
  7. Per montare automaticamente il disco nel punto di montaggio che hai creato, aggiungi una voce al file /etc/fstab:

    echo "UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/lib/mysql ext4 discard,defaults,nofail 0 2" \
       | sudo tee -a /etc/fstab
    
  8. Monta il disco:

    sudo mount -av
    
  9. Rimuovi tutti i file dal disco di dati in modo che possa essere utilizzato da MySQL come directory di dati:

    sudo rm -rf /var/lib/mysql/*
    

Installa il server MySQL

Devi scaricare e installare MySQL Community Edition. La directory dei dati MySQL viene creata sul disco aggiuntivo.

  1. Nella sessione SSH connessa a mysql-prod, scarica e installa il package di configurazione di MySQL:

    wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
    
  2. Quando ti viene richiesto, seleziona l'opzione MySQL Server e cluster, quindi mysql-5.7.

  3. Nell'elenco, seleziona l'opzione Ok per completare la configurazione del package.

  4. Aggiorna la cache del repository e installa i pacchetti mysql-community:

    sudo apt-get update
    sudo apt-get install -y mysql-community-server mysql-community-client
    
  5. Quando viene visualizzato l'avviso che la directory dei dati esiste già, seleziona Ok.

  6. Quando ti viene chiesto di fornire una password di root, crea e inserisci una password. Prendi nota della password o conservala temporaneamente in un luogo sicuro.

Scarica e installa il database di esempio

  1. Nella sessione SSH connessa all'istanza mysql-prod, installa git:

    sudo apt-get install -y git
    
  2. Clona il repository GitHub contenente gli script di database Employees:

    git clone https://github.com/datacharmer/test_db.git
    
  3. Cambia la directory impostandola su quella dello script del database Employees:

    cd test_db
    
  4. Esegui lo script di creazione del database Employees:

    mysql -u root -p -q < employees.sql
    

    Quando richiesto, inserisci la password root che hai creato in precedenza.

  5. Per verificare che il database di esempio sia funzionale, puoi eseguire una query che conteggia il numero di righe nella tabella employees:

    mysql -u root -p -e "select count(*) from employees.employees;"
    

    Quando richiesto, inserisci la password root che hai creato in precedenza.

    L'output è il seguente:

    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    

Crea l'istanza VM di test

In questa sezione, crei un'istanza VM MySQL denominata mysql-test come destinazione per il database clonato. La configurazione di questa istanza è identica a quella dell'istanza di produzione. Tuttavia, non crei un secondo disco di dati, ma lo colleghi più avanti in questo tutorial.

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Crea l'istanza MySQL di test:

    gcloud compute instances create mysql-test \
      --machine-type=n1-standard-2 \
      --scopes=cloud-platform \
      --boot-disk-size=50GB \
      --boot-disk-device-name=mysql-test
    

    Puoi ignorare l'avviso relativo alle prestazioni del disco perché per questo tutorial non sono necessarie prestazioni elevate.

Installa il server MySQL sull'istanza VM di test

Devi anche scaricare e installare MySQL Community Edition sull'istanza VM mysql-test.

  1. Nella sessione SSH connessa a mysql-test, scarica e installa il pacchetto di configurazione MySQL:

    wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
    
  2. Quando ti viene richiesto, seleziona l'opzione MySQL Server e cluster, quindi mysql-5.7.

  3. Nell'elenco, seleziona l'opzione Ok per completare la configurazione del package.

  4. Aggiorna la cache del repository e installa i pacchetti mysql-community:

    sudo apt-get update
    sudo apt-get install -y mysql-community-server mysql-community-client
    
  5. Quando ti viene chiesto di fornire una password di root, crea e inserisci una password. Prendi nota della password o conservala temporaneamente in un luogo sicuro.

Clonazione del database utilizzando gli snapshot dei dischi di Compute Engine

Un modo per clonare un database MySQL in esecuzione su Compute Engine è memorizzare il database su un disco di dati separato e utilizzare gli snapshot dei dischi permanenti per creare un clone del disco.

Gli snapshot dei dischi permanenti ti consentono di ottenere una copia point-in-time dei dati sul disco. La pianificazione degli snapshot dei dischi è un modo per eseguire automaticamente il backup dei dati.

In questa sezione del tutorial, esegui le seguenti operazioni:

  • Acquisisci uno snapshot del disco di dati del server di produzione.
  • Crea un nuovo disco dallo snapshot.
  • Monta il nuovo disco sul server di test.
  • Riavvia il server MySQL nell'istanza di test in modo che utilizzi il nuovo disco come disco di dati.

Il seguente diagramma mostra come viene clonato un database utilizzando gli snapshot dei dischi.

Diagramma che mostra la configurazione per la clonazione di un database MySQL utilizzando gli snapshot del disco.

Crea lo snapshot del disco

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Crea uno snapshot del disco di dati nella stessa zona dell'istanza VM:

    gcloud compute disks snapshot mysql-prod-data \
         --snapshot-names=mysql-prod-data-snapshot \
         --zone="${ZONE}"
    

    Dopo alcuni minuti, lo snapshot viene creato.

Collega lo snapshot del disco all'istanza di test

Devi creare un nuovo disco dati dallo snapshot che hai creato e poi collegarlo all'istanza mysql-test.

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Crea un nuovo disco permanente utilizzando lo snapshot del disco di produzione per i relativi contenuti:

    gcloud beta compute disks create mysql-test-data \
         --size=100GB \
         --source-snapshot=mysql-prod-data-snapshot \
         --zone="${ZONE}"
    
  3. Collega il nuovo disco all'istanza mysql-test con autorizzazioni di lettura/scrittura:

    gcloud compute instances attach-disk mysql-test \
        --disk=mysql-test-data --mode=rw
    

Monta il nuovo disco di dati su Linux

Per utilizzare il disco dati clonato come directory dei dati di MySQL, devi arrestare l'istanza MySQL e montare il disco.

  1. Nella sessione SSH connessa a mysql-test, interrompi il servizio MySQL:

    sudo service mysql stop
    
  2. Nella finestra del terminale, viene visualizzato un elenco dei dischi collegati all'istanza:

    lsblk
    

    L'output è il seguente:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   50G  0 disk
    └─sda1   8:1    0   50G  0 part /
    sdb      8:16   0  100G  0 disk
    

    Il disco denominato sdb (100 GB) è il disco dati.

  3. Monta il disco di dati MySQL nella directory dei dati MySQL:

    sudo mount -o discard,defaults /dev/sdb /var/lib/mysql
    

    Il montaggio di questo disco nasconde eventuali file di configurazione e spazi tabella di MySQL, sostituendoli con i contenuti del disco.

    Con questo comando, il disco viene montato temporaneamente e non viene montato di nuovo al successivo avvio del sistema. Se vuoi montare il disco all'avvio del sistema, crea un'fstab voce. Per ulteriori informazioni, consulta la sezione Configurare il disco aggiuntivo all'inizio di questo tutorial.

Avvia MySQL nell'istanza di test

  1. Nella sessione SSH connessa a mysql-test, avvia il servizio MySQL:

    sudo service mysql start
    
  2. Per verificare che il database clonato sia funzionale, esegui una query che conteggia il numero di righe nella tabella employees:

    mysql -u root -p -e "select count(*) from employees.employees;"
    

    Quando richiesto, inserisci la password root del server database mysql-prod. La password di root dell'istanza di produzione è obbligatoria perché l'intera directory dei dati MySQL è un clone della directory dei dati dell'istanza mysql-prod, pertanto tutti i database, gli utenti del database e le relative password vengono copiati.

    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    

    Il numero di righe è lo stesso dell'istanza mysql-prod.

Ora che hai visto come clonare un database utilizzando gli snapshot dei dischi permanenti, puoi provare a clonare un database utilizzando l'esportazione e l'importazione. Per completare il tutorial per questo secondo approccio, devi smontare il disco clonato.

Smonta il disco clonato

Per smontare il disco clonato creato utilizzando gli snapshot del disco, svolgi i seguenti passaggi:

  1. Nella sessione SSH connessa all'istanza mysql-test, arresta il servizio MySQL:

    sudo service mysql stop
    
  2. Smonta il disco di dati clonato dalla directory dei dati di MySQL:

    sudo umount /var/lib/mysql
    
  3. Riavvia il servizio MySQL:

    sudo service mysql start
    

Clonazione mediante esportazione e importazione

Un secondo metodo per clonare un database MySQL in esecuzione su Compute Engine è utilizzare l'esportazione e l'importazione native di MySQL (utilizzando mysqldump). Con questo approccio, trasferisci il file di esportazione utilizzando Cloud Storage.

Questa sezione del tutorial utilizza le risorse che hai creato nella sezione Clonazione del database utilizzando gli snapshot dei dischi di Compute Engine di questo tutorial. Se non hai completato questa sezione, devi farlo prima di continuare.

In questa sezione del tutorial, esegui le seguenti operazioni:

  • Creare un bucket Cloud Storage.
  • Esporta il database nell'istanza di produzione scrivendolo in Cloud Storage.
  • Importa il file di esportazione nell'istanza di test leggendolo da Cloud Storage.

Il seguente diagramma mostra come viene clonato un database trasferendo un'esportazione utilizzando Cloud Storage.

Diagramma che mostra la configurazione per la clonazione di un database MySQL utilizzando Cloud Storage.

Poiché ai sistemi esterni Google Cloud è possibile concedere l'accesso a Cloud Storage, puoi utilizzare questo approccio per clonare i database da istanze MySQL esterne.

Crea un bucket Cloud Storage

Devi creare un bucket Cloud Storage in cui archiviare i file di esportazione mentre li trasferisci dall'istanza mysql-prod all'istanza mysql-test.

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Crea un bucket Cloud Storage nella stessa regione delle tue istanze VM:

    gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
    

Esportare il database

Nel tuo ambiente di produzione, potresti già eseguire i backup utilizzando i file di esportazione mysqldump. Puoi utilizzare questi backup come base per clonare il database.

In questo tutorial, crei un nuovo file di esportazione utilizzando mysqldump, che non influisce sulle pianificazioni dei backup completi o incrementali esistenti.

  • Nella sessione SSH connessa all'istanza mysql-prod, esporta il database Employees trasmettendolo in streaming in un oggetto Cloud Storage nel bucket creato in precedenza:

    mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose  --hex_blob \
        --databases employees |\
         gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-dump.sql"
    

    Quando richiesto, inserisci la password root del server di database mysql-prod.

    Utilizza il set di caratteri utf8mb4 nell'esportazione per evitare problemi di codifica dei caratteri.

    L'opzione --add-drop-database viene utilizzata in modo che le istruzioni DROP DATABASE e CREATE DATABASE vengano incluse nell'esportazione.

Importa il file esportato

  1. Nella sessione SSH connessa all'istanza mysql-test, riproduci in streaming il file esportato dal tuo bucket Cloud Storage nell'applicazione a riga di comando mysql:

    gcloud storage cat "gs://$(gcloud config get-value project)-bucket/employees-dump.sql" |\
        mysql --user=root -p --default-character-set=utf8mb4
    

    Quando richiesto, inserisci la password root del server di database mysql-test.

    Utilizza il set di caratteri utf8mb4 durante l'importazione per evitare problemi di codifica dei caratteri.

  2. Per verificare che il database clonato sia funzionale, esegui una query che conteggia il numero di righe nella tabella employees:

    mysql -u root -p -e "select count(*) from employees.employees;"
    

    Quando richiesto, inserisci la password root del server di database mysql-test.

    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    

    Il numero di righe è lo stesso dell'istanza mysql-prod.

Utilizzo di Cloud SQL come destinazione della clonazione

Se il database di destinazione è ospitato su Cloud SQL e il database di origine è su Compute Engine, l'unico meccanismo supportato per la clonazione è esportare il database in Cloud Storage e poi importarlo in Cloud SQL.

Come spiegato nella documentazione di Cloud SQL, Cloud SQL può importare il file esportato solo se non contiene trigger, stored procedure, viste o funzioni.

Se il tuo database si basa su uno di questi elementi, devi escluderli dall'esportazione utilizzando gli argomenti della riga di comando --skip-triggers e --ignore-table [VIEW_NAME], quindi ricrearli manualmente dopo l'importazione.

Crea un'istanza Cloud SQL per MySQL

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Crea un'istanza Cloud SQL per MySQL che esegue la stessa versione del database dell'istanza mysql-prod:

    gcloud sql instances create mysql-cloudsql \
        --tier=db-n1-standard-2 --region=${REGION} --database-version MYSQL_5_7
    

    Dopo alcuni minuti, il database Cloud SQL viene creato.

  3. Reimposta la password dell'utente root su un valore noto:

    gcloud sql users set-password root \
        --host=% --instance=mysql-cloudsql  --prompt-for-password
    

    Quando ti viene chiesto di fornire una password di root, crea e inserisci una password. Prendi nota della password o conservala temporaneamente in un luogo sicuro.

Esportare il database

Per esportare il database in un formato adatto per l'importazione in Cloud SQL, devi escludere tutte le visualizzazioni nel database.

  1. Nella sessione SSH connessa all'istanza mysql-prod, imposta una variabile di ambiente contenente un insieme di argomenti a riga di comando per il comando mysqldump in modo che ignori le visualizzazioni nel database Employees:

    DATABASE_NAME=employees
    IGNORE_TABLES_ARGS="`mysql -u root -p -s -s -e \"
        SELECT CONCAT('--ignore-table ${DATABASE_NAME}.',TABLE_NAME)
        FROM information_schema.TABLES
        WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA = '${DATABASE_NAME}';
        \"`"
    

    Quando richiesto, inserisci la password root del server di database mysql-prod.

  2. Visualizza i contenuti delle variabili per verificare che siano stati impostati correttamente:

    echo "${IGNORE_TABLES_ARGS}"
    
    --ignore-table employees.current_dept_emp
    --ignore-table employees.dept_emp_latest_date
    
  3. Esporta il database Employees, escludendo gli attivatori e le visualizzazioni, trasmettendolo in streaming direttamente in un oggetto Cloud Storage nel bucket che hai creato in precedenza:

    mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose \
        --hex-blob --skip-triggers --set-gtid-purged=OFF \
        $IGNORE_TABLES_ARGS \
        --databases employees |\
        gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"
    

    Quando richiesto, inserisci la password root del server di database mysql-prod.

Aggiorna le autorizzazioni degli oggetti

Le autorizzazioni corrette devono essere impostate sia sul bucket Cloud Storage sia sull'oggetto di esportazione in modo che l'account di servizio Cloud SQL possa leggerle. Queste autorizzazioni vengono impostate automaticamente quando utilizzi la console Google Cloud per importare l'oggetto oppure possono essere impostate utilizzando i comandi gcloud.

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Imposta una variabile di ambiente contenente l'indirizzo dell'account di servizio della tua istanza Cloud SQL:

    CLOUDSQL_SA="$(gcloud sql instances describe mysql-cloudsql --format='get(serviceAccountEmailAddress)')"
    
  3. Aggiungi l'account di servizio alla policy IAM del bucket come lettore e scrittore:

    gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \
        --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
    

Importa il database esportato

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Importa il file esportato nell'istanza Cloud SQL:

    gcloud sql import sql mysql-cloudsql \
        "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"
    

    Quando richiesto, inserisci y.

  3. Per verificare che il database clonato sia funzionale, esegui una query che conteggia il numero di righe nella tabella employees:

    echo "select count(*) from employees.employees;" |\
        gcloud sql connect mysql-cloudsql --user=root
    

    Quando richiesto, inserisci la password root del server di database mysql-cloudsql.

    L'output è il seguente:

    Connecting to database with SQL user [root].Enter password:
    count(*)
    300024
    

    Il numero di righe è lo stesso dell'istanza mysql-prod.

Informazioni aggiuntive per i sistemi di produzione

Utilizzo degli snapshot dei dischi

Per i backup fisici (ad esempio gli snapshot del disco), la documentazione di MySQL consiglia di mettere in pausa le scritture nel database prima di acquisire uno snapshot. A tale scopo, devi utilizzare il comando FLUSH TABLES WITH READ LOCK. Al termine dello snapshot, puoi utilizzare UNLOCK TABLES per riavviare le scritture.

Per i database che utilizzano tabelle InnoDB, ti consigliamo di acquisire lo snapshot direttamente senza prima eseguire il comando FLUSH TABLES WITH READ LOCK. In questo modo, il database può continuare a funzionare senza effetti negativi, ma lo snapshot potrebbe essere in uno stato incoerente. Tuttavia, in questo caso, il motore InnoDB può ricostruire le tabelle in uno stato coerente all'avvio del clone.

Per i database che utilizzano tabelle MyISAM, l'esecuzione del comando FLUSH TABLES WITH READ LOCK blocca tutte le scritture nelle tabelle, rendendo il database di sola lettura fino a quando non esegui il comando UNLOCK TABLES.

Se acquisisci uno snapshot senza prima svuotare e bloccare le tabelle, c'è il rischio che il database appena clonato contenga dati incoerenti o che sia danneggiato.

Pertanto, per ottenere uno snapshot coerente dei database che utilizzano tabelle MyISAM, consigliamo di eseguire FLUSH TABLES WITH READ LOCK su una replica di lettura e di acquisire uno snapshot della replica in modo che le prestazioni del database principale (master) non siano interessate.

Utilizzo del comando mysqldump

Per creare un file di esportazione coerente con il database di origine, il comando mysqldump blocca tutte le tabelle durante l'operazione di esportazione. Ciò significa che le scritture nel database sono bloccate durante l'esportazione del database.

Ti consigliamo quindi di eseguire il comando mysqldump su una replica di lettura del database principale in modo che il principale non venga bloccato.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, puoi eliminare il Google Cloud progetto che hai creato per questo tutorial.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Passaggi successivi