Clonar uma base de dados MySQL no Compute Engine

Este tutorial mostra duas formas de clonar uma base de dados MySQL em execução no Compute Engine. Um método usa instantâneos do Persistent Disk. O outro método usa a exportação e a importação nativas do MySQL, transferindo o ficheiro de exportação através do Cloud Storage. O Cloud Storage é o Cloud de Confiance by S3NS serviço de armazenamento de objetos. Oferece uma forma simples, com segurança melhorada, duradoura e altamente disponível de armazenar ficheiros.

A clonagem é o processo de copiar uma base de dados para outro servidor. A cópia é independente da base de dados de origem e é preservada como uma imagem instantânea num determinado momento. Pode usar uma base de dados clonada para vários fins sem sobrecarregar o servidor de produção nem comprometer a integridade dos dados de produção. Alguns destes fins incluem o seguinte:

  • Executar consultas analíticas.
  • Testes de carga ou testes de integração das suas apps.
  • Extrair dados para preencher armazéns de dados.
  • Executar experiências nos dados.

Cada método de clonagem descrito neste tutorial tem vantagens e desvantagens. O método ideal para si depende da sua situação. A tabela seguinte realça alguns problemas importantes.

Problema Método 1: instantâneos de discos Método 2: exporte e importe através do Cloud Storage
Espaço em disco adicional necessário em instâncias do MySQL Não é necessário espaço em disco adicional Espaço adicional necessário para armazenar o ficheiro de exportação durante a criação e a restauração
Carga adicional nas instâncias do MySQL de origem durante a clonagem Nenhuma carga adicional Carga adicional na CPU e na E/S ao criar e carregar o ficheiro de exportação
Duração da clonagem Relativamente rápido para grandes bases de dados Relativamente lento para bases de dados grandes
Pode clonar a partir de instâncias do MySQL externas aoCloud de Confiance Não Sim
Complexidade Uma sequência complexa de comandos para anexar discos clonados Um conjunto de comandos relativamente simples para clonar
Pode tirar partido dos sistemas de cópia de segurança existentes Sim, se o sistema de cópia de segurança usar Cloud de Confiance instantâneos de disco Sim, se o sistema de cópia de segurança exportar ficheiros para o Cloud Storage
Nível de detalhe da clonagem Só pode clonar discos inteiros Só pode clonar a base de dados especificada
Consistência dos dados Consistente no momento do instantâneo Consistente no ponto de exportação
Pode usar o Cloud SQL como origem Não Sim, se for usada a mesma versão
Pode usar o Cloud SQL como destino Não Sim

Este tutorial pressupõe que tem conhecimentos da linha de comandos do Linux e da administração da base de dados MySQL.

Objetivos

  • Saiba como executar uma base de dados do MySQL no Cloud de Confiance.
  • Saiba como criar uma base de dados de demonstração num disco secundário.
  • Saiba como clonar uma base de dados MySQL através de instantâneos de disco do Compute Engine.
  • Saiba como clonar uma base de dados MySQL transferindo um ficheiro de exportação através do Cloud Storage.
  • Saiba como clonar uma base de dados MySQL para o Cloud SQL transferindo um ficheiro de exportação através do Cloud Storage.

Custos

Neste documento, usa os seguintes componentes faturáveis do Cloud de Confiance by S3NS:

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

Antes de começar

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Ative a API Compute Engine.
  4. Ative a API

Configurar o ambiente

Para concluir este tutorial, tem de configurar o seu ambiente de computação com o seguinte:

  • Uma instância do MySQL no Compute Engine (denominada mysql-prod) para representar o servidor da base de dados de produção.
  • Um disco adicional (denominado mysql-prod-data) associado ao seu servidor de produção para armazenar a base de dados de produção.
  • Uma cópia da base de dados Employees importada para o mysql-prod para simular a base de dados de produção que quer clonar.
  • Uma instância do MySQL no Compute Engine (denominada mysql-test) para representar o servidor da base de dados de testes. Clona a sua base de dados neste servidor.

O diagrama seguinte ilustra esta arquitetura.

Diagrama que mostra a configuração para clonar uma base de dados MySQL neste tutorial.

Crie a instância de VM de produção

Para simular um ambiente de produção, configura uma instância de VM do Compute Engine que executa o MySQL no Debian Linux.

A instância de VM para este tutorial usa dois discos: um disco de 50 GB para o SO e as contas de utilizador, e um disco de 100 GB para o armazenamento da base de dados.

No Compute Engine, a utilização de discos separados não oferece vantagens de desempenho. O desempenho do disco é determinado pela capacidade de armazenamento total de todos os discos anexados a uma instância e pelo número total de vCPUs na sua instância de VM. Por conseguinte, a base de dados e o ficheiro de registo podem residir no mesmo disco.

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Defina a sua zona preferida:

    ZONE=us-east1-b
    REGION=us-east1
    gcloud config set compute/zone "${ZONE}"
    
  3. Crie uma instância do 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"
    

    Este comando concede à instância acesso total às Cloud de Confiance APIs, cria um disco secundário de 100 GB e anexa o disco à instância. Ignore o aviso de desempenho do disco porque não precisa de um elevado desempenho para este tutorial.

Configure o disco adicional

O segundo disco associado à instância de produção destina-se a armazenar a sua base de dados de produção. Este disco está em branco, pelo que tem de criar partições, formatá-lo e montá-lo.

  1. Na Cloud de Confiance consola, aceda à página Instâncias de VM.

    Aceda à página de instâncias de VM

  2. Certifique-se de que é apresentada uma marca de verificação verde junto ao nome da sua instância do mysql-prod, o que indica que a instância está pronta.

  3. Clique no botão SSH junto à instância mysql-prod. O navegador abre uma ligação de terminal à instância.

  4. Na janela do terminal, apresente uma lista de discos anexados à sua instância:

    lsblk
    

    O resultado é o seguinte:

    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
    

    O disco com o nome sdb (100 GB) é o seu disco de dados.

  5. Formate o disco sdb e crie uma única partição com um sistema de ficheiros ext4:

    sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard \
        /dev/sdb
    
  6. Crie o diretório de dados do MySQL para ser o ponto de montagem do disco de dados:

    sudo mkdir -p /var/lib/mysql
    
  7. Para montar automaticamente o disco no ponto de montagem que criou, adicione uma entrada ao ficheiro /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. Monte o disco:

    sudo mount -av
    
  9. Remova todos os ficheiros do disco de dados para que possa ser usado pelo MySQL como um diretório de dados:

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

Instale o servidor MySQL

Tem de transferir e instalar o MySQL Community Edition. O diretório de dados do MySQL é criado no disco adicional.

  1. Na sessão SSH ligada a mysql-prod, transfira e instale o pacote de configuração do 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 lhe for pedido, selecione a opção Servidor e cluster do MySQL e, de seguida, selecione mysql-5.7.

  3. Na lista, selecione a opção OK para concluir a configuração do pacote.

  4. Atualize a cache do repositório e instale os pacotes mysql-community:

    sudo apt-get update
    sudo apt-get install -y mysql-community-server mysql-community-client
    
  5. Quando receber um aviso de que o diretório de dados já existe, selecione OK.

  6. Quando lhe for pedido que faculte uma palavra-passe de raiz, crie e introduza uma palavra-passe. Anote a palavra-passe ou guarde-a temporariamente num local seguro.

Transfira e instale a base de dados de exemplo

  1. Na sessão SSH ligada à instância mysql-prod, instale o git:

    sudo apt-get install -y git
    
  2. Clone o repositório do GitHub que contém os scripts da base de dados Employees:

    git clone https://github.com/datacharmer/test_db.git
    
  3. Altere o diretório para o diretório do script da base de dados Employees:

    cd test_db
    
  4. Execute o script de criação da base de dados Employees:

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

    Quando lhe for pedido, introduza a palavra-passe de raiz que criou anteriormente.

  5. Para verificar se a base de dados de exemplo está funcional, pode executar uma consulta que conte o número de linhas na tabela employees:

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

    Quando lhe for pedido, introduza a palavra-passe de acesso root que criou anteriormente.

    O resultado é o seguinte:

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

Crie a instância de VM de teste

Nesta secção, cria uma instância de VM do MySQL denominada mysql-test como destino da base de dados clonada. A configuração desta instância é idêntica à instância de produção. No entanto, não cria um segundo disco de dados. Em vez disso, anexa o disco de dados mais tarde neste tutorial.

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Crie a instância do MySQL de teste:

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

    Pode ignorar o aviso de desempenho do disco porque não precisa de um desempenho elevado para este tutorial.

Instale o servidor MySQL na instância de VM de teste

Também tem de transferir e instalar o MySQL Community Edition na instância de VM mysql-test.

  1. Na sessão SSH ligada a mysql-test, transfira e instale o pacote de configuração do 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 lhe for pedido, selecione a opção Servidor e cluster do MySQL e, de seguida, selecione mysql-5.7.

  3. Na lista, selecione a opção OK para concluir a configuração do pacote.

  4. Atualize a cache do repositório e instale os pacotes mysql-community:

    sudo apt-get update
    sudo apt-get install -y mysql-community-server mysql-community-client
    
  5. Quando lhe for pedido que faculte uma palavra-passe de raiz, crie e introduza uma palavra-passe. Anote a palavra-passe ou guarde-a temporariamente num local seguro.

Clonar a base de dados através de instantâneos de disco do Compute Engine

Uma forma de clonar uma base de dados MySQL em execução no Compute Engine é armazenar a base de dados num disco de dados separado e usar instantâneos de discos persistentes para criar um clone desse disco.

Os instantâneos do Persistent Disk permitem-lhe obter uma cópia dos dados no disco num determinado momento. O agendamento de instantâneos de disco é uma forma de fazer automaticamente uma cópia de segurança dos seus dados.

Nesta secção do tutorial, faz o seguinte:

  • Tire um instantâneo do disco de dados do servidor de produção.
  • Crie um novo disco a partir da captura de ecrã.
  • Monte o novo disco no servidor de teste.
  • Reinicie o servidor MySQL na instância de teste para que o servidor use o novo disco como um disco de dados.

O diagrama seguinte mostra como uma base de dados é clonada através de instantâneos de disco.

Diagrama que mostra a configuração para clonar uma base de dados MySQL através de instantâneos de disco.

Crie o instantâneo do disco

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Crie um instantâneo do disco de dados na mesma zona que a instância de VM:

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

    Após alguns minutos, a sua foto instantânea é criada.

Anexe a imagem instantânea do disco à instância de teste

Tem de criar um novo disco de dados a partir da imagem instantânea que criou e, em seguida, anexá-lo à instância mysql-test.

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Crie um novo Persistent Disk usando o instantâneo do disco de produção para o respetivo conteúdo:

    gcloud beta compute disks create mysql-test-data \
         --size=100GB \
         --source-snapshot=mysql-prod-data-snapshot \
         --zone="${ZONE}"
    
  3. Anexe o novo disco à sua instância do mysql-test com autorizações de leitura/escrita:

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

Monte o novo disco de dados no Linux

Para usar o disco de dados clonado como o diretório de dados do MySQL, tem de parar a instância do MySQL e montar o disco.

  1. Na sessão SSH ligada a mysql-test, pare o serviço MySQL:

    sudo service mysql stop
    
  2. Na janela do terminal, apresente uma lista de discos anexados à sua instância:

    lsblk
    

    O resultado é o seguinte:

    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
    

    O disco com o nome sdb (100 GB) é o seu disco de dados.

  3. Monte o disco de dados do MySQL no diretório de dados do MySQL:

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

    A montagem deste disco oculta todos os ficheiros de configuração e espaços de tabelas do MySQL, substituindo-os pelo conteúdo do disco.

    Com este comando, o disco é montado temporariamente e não é remontado no arranque do sistema. Se quiser montar o disco no arranque do sistema, crie uma entrada fstab. Para mais informações, consulte a secção Configure o disco adicional anteriormente neste tutorial.

Inicie o MySQL na instância de teste

  1. Na sessão SSH ligada a mysql-test, inicie o serviço MySQL:

    sudo service mysql start
    
  2. Para verificar se a base de dados clonada está funcional, execute uma consulta que conte o número de linhas na tabela employees:

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

    Quando lhe for pedido, introduza a palavra-passe de raiz do servidor da base de dados mysql-prod. A palavra-passe de raiz da instância de produção é necessária porque todo o diretório de dados do MySQL é um clone do diretório de dados da instância mysql-prod, pelo que todas as bases de dados, utilizadores da base de dados e respetivas palavras-passe são copiados.

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

    O número de linhas é o mesmo que na instância do mysql-prod.

Agora que viu como clonar uma base de dados através de instantâneos de discos persistentes, pode experimentar clonar uma base de dados através da exportação e importação. Para concluir o tutorial desta segunda abordagem, tem de desmontar o disco clonado.

Desmonte o disco clonado

Para desmontar o disco clonado que criou através de instantâneos de disco, siga os passos seguintes:

  1. Na sessão SSH ligada à sua instância mysql-test, pare o serviço MySQL:

    sudo service mysql stop
    
  2. Desmonte o disco de dados clonado do diretório de dados do MySQL:

    sudo umount /var/lib/mysql
    
  3. Reinicie o serviço MySQL:

    sudo service mysql start
    

Clonagem através da exportação e importação

Um segundo método para clonar uma base de dados MySQL em execução no Compute Engine é usar a exportação incorporada do MySQL (com mysqldump) e a importação. Com esta abordagem, transfere o ficheiro de exportação através do Cloud Storage.

Esta secção do tutorial usa recursos que criou na secção Clonar a base de dados com instantâneos de disco do Compute Engine deste tutorial. Se não concluiu essa secção, tem de o fazer antes de continuar.

Nesta secção do tutorial, faz o seguinte:

  • Crie um contentor do Cloud Storage.
  • Exporte a base de dados na instância de produção, escrevendo-a no Cloud Storage.
  • Importe o ficheiro de exportação para a instância de teste, lendo-o a partir do Cloud Storage.

O diagrama seguinte mostra como uma base de dados é clonada através da transferência de uma exportação com o Cloud Storage.

Diagrama que mostra a configuração para clonar uma base de dados MySQL através do Cloud Storage.

Uma vez que os sistemas fora do Cloud de Confiance podem ter acesso ao Cloud Storage, pode usar esta abordagem para clonar bases de dados de instâncias externas do MySQL.

Crie um contentor do Cloud Storage

Tem de criar um contentor do Cloud Storage que armazene os ficheiros de exportação enquanto os transfere da instância mysql-prod para a instância mysql-test.

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Crie um contentor do Cloud Storage na mesma região que as instâncias de VM:

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

Exporte a base de dados

No seu ambiente de produção, pode já fazer cópias de segurança através de mysqldump ficheiros de exportação. Pode usar estas cópias de segurança como base para clonar a sua base de dados.

Neste tutorial, vai criar um novo ficheiro de exportação através do mysqldump, que não afeta nenhuma agenda de cópias de segurança completas ou incrementais existente.

  • Na sessão SSH associada à instância mysql-prod, exporte a base de dados Employees, transmitindo-a para um objeto do Cloud Storage no contentor que criou anteriormente:

    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 lhe for pedido, introduza a palavra-passe de raiz do servidor da base de dados mysql-prod.

    Use o conjunto de carateres utf8mb4 na exportação para evitar problemas de codificação de carateres.

    A opção --add-drop-database é usada para que as declarações DROP DATABASE e CREATE DATABASE sejam incluídas na exportação.

Importe o ficheiro exportado

  1. Na sessão SSH ligada à instância mysql-test, faça stream do ficheiro exportado do seu contentor do Cloud Storage para a aplicação de linha de comandos mysql:

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

    Quando lhe for pedido, introduza a palavra-passe de raiz do servidor da base de dados mysql-test.

    Usar o conjunto de carateres utf8mb4 na importação para evitar problemas de codificação de carateres.

  2. Para verificar se a base de dados clonada está funcional, execute uma consulta que conte o número de linhas na tabela employees:

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

    Quando lhe for pedido, introduza a palavra-passe de raiz do servidor da base de dados mysql-test.

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

    O número de linhas é o mesmo que na instância do mysql-prod.

Usar o Cloud SQL como destino da clonagem

Se a base de dados de destino estiver alojada no Cloud SQL e a base de dados de origem estiver no Compute Engine, o único mecanismo suportado para clonagem é exportar a base de dados para o Cloud Storage e, em seguida, importar a base de dados para o Cloud SQL.

Conforme explicado na documentação do Cloud SQL, o Cloud SQL só pode importar o ficheiro exportado quando não contém desencadeadores, procedimentos armazenados, vistas nem funções.

Se a sua base de dados depender de algum destes elementos, tem de os excluir da exportação através dos argumentos da linha de comandos --skip-triggers e --ignore-table [VIEW_NAME] e, em seguida, recriá-los manualmente após a importação.

Crie uma instância do Cloud SQL para MySQL

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Crie uma instância do Cloud SQL para MySQL com a mesma versão da base de dados que a sua instância do mysql-prod:

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

    Após alguns minutos, a base de dados do Cloud SQL é criada.

  3. Reponha a palavra-passe do utilizador root para um valor conhecido:

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

    Quando lhe for pedido que faculte uma palavra-passe de raiz, crie e introduza uma palavra-passe. Anote a palavra-passe ou guarde-a temporariamente num local seguro.

Exporte a base de dados

Para exportar a base de dados num formato adequado para importação para o Cloud SQL, tem de excluir todas as vistas na base de dados.

  1. Na sessão SSH ligada à instância mysql-prod, defina uma variável de ambiente que contenha um conjunto de argumentos da linha de comandos para o comando mysqldump, de modo que ignore as visualizações na base de dados 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 lhe for pedido, introduza a palavra-passe de raiz do servidor da base de dados mysql-prod.

  2. Veja o conteúdo das variáveis para verificar se foram definidas corretamente:

    echo "${IGNORE_TABLES_ARGS}"
    
    --ignore-table employees.current_dept_emp
    --ignore-table employees.dept_emp_latest_date
    
  3. Exporte a base de dados Employees, excluindo acionadores e vistas, e faça o streaming diretamente para um objeto do Cloud Storage no contentor que criou anteriormente:

    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 lhe for pedido, introduza a palavra-passe de raiz do servidor da base de dados mysql-prod.

Atualize as autorizações de objetos

As autorizações corretas têm de ser definidas no contentor do Cloud Storage e no objeto de exportação para que a conta de serviço do Cloud SQL os possa ler. Estas autorizações são definidas automaticamente quando usa a Cloud de Confiance consola para importar o objeto ou podem ser definidas através de comandos gcloud.

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Defina uma variável de ambiente que contenha o endereço da conta de serviço da sua instância do Cloud SQL:

    CLOUDSQL_SA="$(gcloud sql instances describe mysql-cloudsql --format='get(serviceAccountEmailAddress)')"
    
  3. Adicione a conta de serviço à política de gestão de identidade e de acesso (IAM) do contentor como leitor e escritor:

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

Importe a base de dados exportada

  1. Abra o Cloud Shell.

    Abra o Cloud Shell

  2. Importe o ficheiro exportado para a sua instância do Cloud SQL:

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

    Quando lhe for pedido, introduza y.

  3. Para verificar se a base de dados clonada está funcional, execute uma consulta que conte o número de linhas na tabela employees:

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

    Quando lhe for pedido, introduza a palavra-passe de raiz do servidor de base de dados mysql-cloudsql.

    O resultado é o seguinte:

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

    O número de linhas é o mesmo que na instância do mysql-prod.

Informações adicionais para sistemas de produção

As seguintes categorias oferecem práticas recomendadas adicionais para os seus sistemas de produção.

Usar instantâneos de discos

Para cópias de segurança físicas (como instantâneos de disco), a documentação do MySQL recomenda que pause as gravações na base de dados antes de tirar um instantâneo. Para o fazer, use o comando FLUSH TABLES WITH READ LOCK. Quando a captura instantânea estiver concluída, pode usar UNLOCK TABLES para reiniciar as gravações.

Para bases de dados que usam tabelas InnoDB, recomendamos que tire a captura de ecrã diretamente sem executar primeiro o comando FLUSH TABLES WITH READ LOCK. Isto permite que a base de dados continue a ser executada sem efeitos negativos, mas a imagem instantânea pode estar num estado inconsistente. No entanto, se isto ocorrer, o motor InnoDB pode reconstruir as tabelas para um estado consistente quando o clone é iniciado.

Para bases de dados que usam tabelas MyISAM, a execução do comando FLUSH TABLES WITH READ LOCK bloqueia todas as escritas nas tabelas, tornando a sua base de dados apenas de leitura até executar o comando UNLOCK TABLES.

Se tirar uma captura de ecrã sem primeiro limpar e bloquear as tabelas, existe o risco de a base de dados recém-clonada conter dados inconsistentes ou ficar danificada.

Por conseguinte, para obter uma imagem consistente das bases de dados que usam tabelas MyISAM, recomendamos que execute FLUSH TABLES WITH READ LOCK numa réplica de leitura e tire uma imagem dessa réplica para que o desempenho da base de dados principal (mestre) não seja afetado.

Usar o comando mysqldump

Para criar um ficheiro de exportação consistente com a base de dados de origem, o comando mysqldump bloqueia todas as tabelas durante a operação de exportação. Isto significa que as gravações na base de dados são bloqueadas enquanto a base de dados está a ser exportada.

Por conseguinte, recomendamos que execute o comando mysqldump numa réplica de leitura da base de dados principal para que a principal não seja bloqueada.

Limpar

Para evitar incorrer em custos na sua Cloud de Confiance conta pelos recursos usados neste tutorial, pode eliminar o Cloud de Confiance projeto que criou para este tutorial.

  1. In the Cloud de Confiance 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.

O que se segue?