Configuração de réplicas externas

Nesta página, você verá como configurar uma instância do Cloud SQL que é replicada do lado de fora dele. Além disso, verá como rebaixar a instância mestre em uma configuração de réplica externa para reverter a configuração.

Para mais informações sobre a configuração da réplica externa, consulte Requisitos e dicas para configurar a replicação.

Como definir a configuração da réplica externa

Antes de começar

Para iniciar essa tarefa, você precisa ter uma instância do Cloud SQL e uma outra externa do MySQL que atendam aos requisitos de réplicas externas.

Como configurar a instância mestre

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud Platform.

    Acessar a página "Instâncias" do Cloud SQL

  2. Ative o acesso na instância mestre do endereço IP da réplica externa.

    Para informações sobre como ativar o acesso IP, consulte Como configurar o acesso para conexões IP.

  3. Registre o endereço IP da instância mestre para uso posterior.

    Você pode encontrar o endereço IP na página Visão geral da instância.

  4. Clique no ícone do Cloud Shell (Ícone do Cloud Shell) no canto superior direito.

  5. No prompt do Cloud Shell, use o cliente mysql integrado para conectar-se à sua instância mestre:

    gcloud sql connect [MASTER_INSTANCE_NAME] --user=root
    
  6. Insira a senha raiz.

    O prompt do mysql é exibido.

  7. Crie um usuário especial para a replicação:

    CREATE USER '[REPLICATION_USER]'@'%' IDENTIFIED BY '[REPLICATION_PASSWORD]';
    
  8. Conceda privilégios de replicação a esse usuário:

    GRANT REPLICATION SLAVE ON *.* TO '[REPLICATION_USER]'@'%';
    
  9. Exporte o banco de dados da instância mestre para um intervalo do Cloud Storage.

    Siga as instruções de replicação externa em Criar um arquivo de despejo do SQL.

  10. Faça o download do arquivo de exportação do intervalo para a réplica. Basta clicar no arquivo do Console do Cloud Storage pela máquina que hospeda a réplica.

Configuração da réplica externa

Segunda geração

  1. Na máquina que hospeda a réplica, sugira a nova instância MySQL externa com o arquivo de exportação criado pela instância mestre.

    Por exemplo, o seguinte comando carrega o arquivo de exportação chamado mysqldump.sql:

    mysql --user=root --password <  mysqldump.sql
    
  2. Determine o código do servidor desse par réplica/mestre.

    O código do servidor é um valor numérico, por exemplo, "3", que precisa ser exclusivo em toda a configuração da replicação externa. Além disso, é necessário que cada réplica tenha um código do servidor exclusivo.

  3. Adicione as seguintes opções ao arquivo de opção my.cnf da réplica.
    [mysqld]
    server-id=[SERVER_ID]
    gtid_mode=ON
    enforce_gtid_consistency=ON
    log_slave_updates=ON
    replicate-ignore-db=mysql
    binlog-format=ROW
    log_bin=mysql-bin
    expire_logs_days=1
    read_only=ON
    

    Para mais informações sobre opções de replicação do MySQL, consulte Replicação e opções de geração de registros binários

    .
  4. Reinicie o processo mysqld para que o arquivo de configuração seja lido.
  5. Em um cliente mysql na réplica, digite o seguinte comando:
    CHANGE MASTER TO MASTER_HOST='[MASTER_IP_ADDRESS]', MASTER_USER='[REPLICATION_USER]',
    MASTER_PASSWORD='[REPLICATION_PASSWORD]', MASTER_AUTO_POSITION=1;
    
  6. Inicie a replicação na réplica:
    START SLAVE;
    
  7. Confirme o status da replicação:

    SHOW SLAVE STATUS\G;
    

    Caso você veja "Espera pelo envio do evento pelo mestre", a replicação está funcionando.

Primeira geração

  1. Na máquina que hospeda a réplica, sugira a nova instância MySQL externa com o arquivo de exportação criado pela instância mestre.

    Por exemplo, o seguinte comando carrega o arquivo de exportação chamado mysqldump.sql:

    mysql --user=root --password <  mysqldump.sql
    
  2. Determine o código do servidor desse par réplica/mestre.

    O código do servidor é um valor numérico, por exemplo, "3", que precisa ser exclusivo em toda a configuração da replicação externa. Além disso, é necessário que cada réplica tenha um código do servidor exclusivo.

  3. Defina o código do servidor na réplica de leitura adicionando uma linha semelhante à do seguinte exemplo ao arquivo de opções my.cnf:

    [mysqld]
    server-id=[SERVER_ID]
    

    Para mais informações sobre opções de replicação do MySQL, consulte Replicação e opções de geração de registros binários

    .
  4. Reinicie o processo mysqld para que o arquivo de configuração seja lido.
  5. Abra o arquivo de exportação e localize o comando CHANGE MASTER TO MASTER_LOG_FILE.
  6. Copie e cole essa linha, menos os traços iniciais ("--"), para o cliente mysql.

    Ainda não pressione Enter.

  7. Antes do ponto e vírgula final, insira valores para MASTER_HOST, MASTER_USER e MASTER_PASSWORD.

    A instrução precisa ser semelhante ao seguinte exemplo:

    CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107,
    MASTER_HOST='[MASTER_IP_ADDRESS]', MASTER_USER='[REPLICATION_USER]', MASTER_PASSWORD='[REPLICATION_PASSWORD]';
    
  8. Pressione Enter para executar a instrução.
  9. Inicie a replicação na réplica:

    START SLAVE;
    
  10. Confirme o status da replicação:

    SHOW SLAVE STATUS\G;
    

    Caso você veja "Espera pelo envio do evento pelo mestre", a replicação está funcionando.

Como rebaixar o mestre de uma réplica externa

Quando você tem uma instância do Cloud SQL com uma réplica externa, é possível reverter a configuração, o que faz com que estas alterações ocorram:

  • A réplica externa se torna a nova instância mestre.
  • A instância do Cloud SQL se torna uma réplica de leitura, replicando a partir do servidor que anteriormente era a réplica externa (agora chamado de servidor de banco de dados de origem).

Para reverter a configuração da réplica externa:

  1. Crie uma instância de representação de origem.

    Esta instância representará o servidor de banco de dados de origem para a réplica do Cloud SQL após a conclusão da operação de rebaixamento.

    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{
             "name": "[SOURCE_REPRESENTATION_NAME]",
             "region": "[REGION]",
             "databaseVersion": "[EXTERNAL_SERVER_MYSQL_VERSION]",
             "onPremisesConfiguration": {
             "hostPort": "[EXTERNAL_SERVER_IP]:[EXTERNAL_SERVER_PORT]"
         }' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    Use a região em que você quer que sua réplica do Cloud SQL resida.

  2. Inicie o processo de rebaixamento.

    Como essa chamada de API requer que você forneça informações confidenciais, é necessário usar um arquivo JSON para fornecer seus dados a cURL, em vez de fornecê-los na linha de comando.

    Crie o arquivo de dados:

    {
        "demoteMasterContext": {
             "replicaConfiguration": {
                 "mysqlReplicaConfiguration" {
                 "username": "[MYSQL_REPLICATION_USERNAME]",
                 "password": "[PASSWORD]",
                 "caCertificate": "[EXTERNAL_SERVER_CA]",
                 "clientCertificate": "[CLIENT_CERT]",
                 "clientKey": "[PRIVATE_KEY]"
            }
        },
        "masterInstanceName": [SOURCE_REPRESENTATION_NAME]
    }
    

    Em seguida, chame a API.

    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @[PATH_TO_DATA_FILE] \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/demoteMaster
    

    Para mais informações sobre suas opções para SSL/TLS, consulte Opções de SSL/TLS. Para saber mais informações sobre as propriedades usadas pelo objeto replicaConfiguration, consulte Replicar a partir de um servidor externo.

  3. Aguarde a réplica externa concluir todas as transações pendentes da instância mestre.

    Quando a réplica tiver terminado, o comando SHOW SLAVE STATUS mostrará Seconds Behind Master como 0 e o valor de Executed_Gtid_Set será idêntico entre a réplica externa e o mestre do Cloud SQL.

  4. Use o cliente mysql para interromper a replicação na réplica externa:

    STOP SLAVE
    RESET SLAVE ALL
    
  5. Aguarde até que a instância do Cloud SQL comece a replicar a partir do servidor externo, que agora é o servidor de banco de dados de origem.

    Executar o comando SHOW SLAVE STATUS na instância do Cloud SQL fornece o status de replicação.

  6. Quando a instância do Cloud SQL replicar com êxito a partir do servidor de banco de dados de origem, defina a sinalização read_only nesse servidor como off e atualize seus aplicativos para apontar para o servidor de banco de dados de origem.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud SQL para MySQL