Clonazione di un database MySQL su Compute Engine

Last reviewed 2019-10-08 UTC

Questo tutorial illustra due modi per clonare 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 esporta il file utilizzando Cloud Storage. Cloud Storage è il servizio di archiviazione di oggetti di Google Cloud. Offre un modo semplice, sicuro, durevole e ad alta disponibilità di archiviazione .

La clonazione è il processo di copia di un database su un altro server. La è indipendente dal database di origine e viene conservata come point-in-time senza dover creare uno snapshot. Puoi utilizzare un database clonato per vari scopi senza inserire un carico sul server di produzione o mettere a rischio l'integrità dei dati di produzione. Alcune di queste finalità includono:

  • Eseguire query di analisi.
  • Test di carico o di integrazione delle tue app.
  • Estrazione dei dati per il completamento dei data warehouse.
  • Esperimenti sui dati in corso.

Ogni metodo di clonazione descritto in questo tutorial offre vantaggi e svantaggi. Il metodo ideale per te dipende dalla tua situazione. Le seguenti evidenzia alcuni problemi chiave.

Problema Metodo 1: snapshot dei dischi Metodo 2: esporta e importa utilizzando Cloud Storage
Spazio su disco aggiuntivo richiesto sulle istanze MySQL Nessuno spazio su disco aggiuntivo richiesto 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 caricamento 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 lenta per database di grandi dimensioni
Può clonare da istanze MySQL esterne a Google Cloud No
complessità Una complessa sequenza di comandi per collegare i dischi clonati Un insieme relativamente semplice di comandi per la clonazione
Può sfruttare i sistemi di backup esistenti Sì, se il sistema di backup utilizza gli snapshot dei dischi 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 Coerenza al punto dello snapshot Coerenza 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 MySQL l'amministrazione dei database.

Obiettivi

  • Scopri come eseguire un database MySQL su Google Cloud.
  • Scopri come creare un database demo su un disco secondario.
  • Scopri come clonare un database MySQL utilizzando Snapshot dei dischi di Compute Engine.
  • Scopri come clonare un database MySQL trasferendo un file di esportazione con di archiviazione ideale in Cloud Storage.
  • Scopri come clonare un database MySQL in Cloud SQL trasferendo un file di esportazione con di archiviazione ideale in Cloud Storage.

Costi

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

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina 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. Abilitare l'API Compute Engine.
  7. Abilitare l'API

Configurazione dell'ambiente

Per completare questo tutorial, devi configurare il tuo ambiente di computing con le seguenti:

  • Un'istanza MySQL su Compute Engine (denominata mysql-prod) da rappresentare sul server del 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 importati in mysql-prod per simulare il database di produzione che si vuole da clonare.
  • Un'istanza MySQL su Compute Engine (denominata mysql-test) per rappresentare il server del database di test. Cloni il tuo 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, devi configurare una VM di Compute Engine che esegue MySQL su Debian Linux.

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

In Compute Engine, l'uso di dischi separati offre rendimento vantaggi dell'IA. Le prestazioni del disco sono determinate dalla capacità di archiviazione totale di tutti i dischi permanenti collegati a un'istanza e per il numero totale di vCPU sull'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 preferita:

    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 Google Cloud, crea un disco secondario da 100 GB e lo collega all'istanza. 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 serve per l'archiviazione di produzione. Questo disco è vuoto, quindi devi partizionare, formattare montarla.

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

    Vai alla pagina Istanze VM

  2. Assicurati che sia presente un segno di spunta verde La dicitura è visualizzata accanto a il nome dell'istanza mysql-prod, per indicare che l'istanza è pronto.

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

  4. Nella finestra del terminale, visualizza un elenco di 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 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. MySQL viene creata sul disco aggiuntivo.

  1. Nella sessione SSH connessa a mysql-prod, 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 pacchetto.

  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 ricevi un avviso che la directory dei dati esiste già, seleziona Ok.

  6. Quando ti viene chiesto di fornire una password root, crea e inserisci 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. Passa alla directory 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 ti viene richiesto, inserisci la password root creata in precedenza.

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

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

    Quando ti viene 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 creerai un'istanza VM MySQL denominata mysql-test come per il database clonato. La configurazione di questa istanza è identico all'istanza di produzione. Tuttavia, non crei un secondo dato disk; puoi collegare il disco dati 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é non hai bisogno di delle prestazioni per questo tutorial.

Installa il server MySQL sull'istanza VM di test

Devi anche scaricare e installare MySQL Community Edition l'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 viene richiesto, seleziona il ruolo MySQL Server & opzione cluster e quindi seleziona mysql-5.7.

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

  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 root, crea e inserisci password. Prendi nota della password o conservala temporaneamente in un luogo sicuro.

Clonare il database utilizzando gli snapshot dei dischi di Compute Engine

Un modo per clonare un database MySQL in esecuzione su Compute Engine è archiviare il database su un disco dati separato e utilizzare snapshot di disco permanente per creare un clone di quel disco.

Snapshot di dischi permanenti di ottenere una copia point-in-time dei dati su 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 dati del server di produzione.
  • Crea un nuovo disco dallo snapshot.
  • Monta il nuovo disco sul server di test.
  • Riavvia il server MySQL sull'istanza di test in modo che utilizzi un nuovo disco come disco dati.

Il seguente diagramma mostra come un database viene clonato utilizzando snapshot del disco.

Diagramma che mostra la configurazione per la clonazione di un database MySQL utilizzando 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, viene creato lo snapshot.

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 suoi 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 la lettura e la scrittura autorizzazioni:

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

Monta il nuovo disco dati in 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, visualizza un elenco di 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 tuo disco dati.

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

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

    Il montaggio di questo disco nasconde tutti i file di configurazione e gli spazi delle tabelle MySQL, sostituendoli con i contenuti del disco.

    Con questo comando il disco viene montato temporaneamente e non viene rimontato avvio di sistema. Se vuoi montare il disco all'avvio del sistema, crea un fstab . Per ulteriori informazioni, vedi Configura il disco aggiuntivo in precedenza in 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 funzioni, esegui una query che conta il numero di righe nella tabella employees:

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

    Quando richiesto, inserisci la password root del database mysql-prod o server web. La password root dell'istanza di produzione è obbligatoria perché l'intera La directory dei dati MySQL è un clone della directory dei dati dell'mysql-prod Ad esempio, tutti i database, gli utenti del database e le loro password copiato.

    +----------+
    | 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. A completare il tutorial per questo secondo approccio, devi smontare il file disco.

Smonta il disco clonato

Per smontare il disco clonato creato utilizzando gli snapshot del disco, esegui la seguenti passaggi:

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

    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 tramite esportazione e importazione

Un secondo metodo per clonare un database MySQL in esecuzione Compute Engine utilizza l'esportazione MySQL nativa (con mysqldump) e per l'importazione. Con questo approccio, trasferisci il file di esportazione utilizzando di archiviazione ideale in Cloud Storage.

Questa sezione del tutorial utilizza risorse che hai creato nella Clonare il database utilizzando gli snapshot del disco di Compute Engine di questo tutorial. Se non hai completato la sezione, devi farlo prima di continuare.

In questa sezione del tutorial imparerai a:

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

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

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

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

Crea un bucket Cloud Storage

Devi creare un bucket Cloud Storage in cui archiviare i file di esportazione durante il trasferimento dall'istanza mysql-prod all'istanza mysql-test in esecuzione in un'istanza Compute Engine.

  1. Apri Cloud Shell.

    Apri Cloud Shell

  2. Crea un bucket Cloud Storage nella stessa regione della VM di Compute Engine:

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

Esporta il database

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

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

  • Nella sessione SSH connessa all'istanza mysql-prod, esporta Employees, inserendolo in un flusso di dati in un database Cloud Storage nel bucket che hai 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.

    Utilizzi il set di caratteri utf8mb4 nell'esportazione per evitare qualsiasi carattere problemi di codifica.

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

Importa il file esportato

  1. Nella sessione SSH connessa all'istanza mysql-test, trasmetti lo streaming esportato dal tuo bucket Cloud Storage nell'account mysql a riga di comando:

    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.

    Utilizzi il set di caratteri utf8mb4 nell'importazione per evitare di aggiungere caratteri problemi di codifica.

  2. Per verificare che il database clonato funzioni, esegui una query che conta 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 di 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 database si basa su uno di questi elementi, devi escluderlo dalla esportali utilizzando le righe di comando --skip-triggers e --ignore-table [VIEW_NAME] argomenti e quindi di 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 viene creato il database Cloud SQL.

  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 root, crea e inserisci password. Prendi nota della password o conservala temporaneamente in un luogo sicuro.

Esporta 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, esclusi trigger e viste, trasmettendolo in streaming direttamente in un oggetto Cloud Storage nel bucket che hai creato precedenti:

    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 autorizzazioni degli oggetti

È necessario impostare le autorizzazioni corrette su entrambi i bucket Cloud Storage e l'oggetto di esportazione, in modo che l'account di servizio Cloud SQL sia in grado di leggerli. Queste autorizzazioni vengono impostate automaticamente quando utilizzi la console Google Cloud per importa l'oggetto oppure puoi impostarli con 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 al criterio 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 funzioni, esegui una query conta 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. Per farlo devi utilizzando FLUSH TABLES WITH READ LOCK . Al termine dello snapshot, puoi utilizzare UNLOCK TABLES per riavviare le scritture.

Per i database che utilizzano tabelle InnoDB, consigliamo di acquisire lo snapshot senza dover prima eseguire il comando FLUSH TABLES WITH READ LOCK. Questo permette al database di rimanere in esecuzione senza effetti negativi, ma lo snapshot potrebbe essere in uno stato incoerente. Tuttavia, in questo caso, il motore InnoDB puoi ricreare lo stato coerente delle tabelle all'avvio del clone.

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

Se crei uno snapshot senza prima aver fatto il flush e il blocco delle tabelle, il rischio che il database appena clonato contenga dati incoerenti 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 del database primario in modo che quello principale non sia 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 progetto Google Cloud 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