Como configurar mestres externos para a primeira geração

Nesta página, descrevemos como configurar um mestre externo para reprodução em réplicas de primeira geração.

Um External master (ou Primary Server) é uma instância do MySQL externa ao Cloud SQL e atua como mestre (primary) de primeira geração. Servidores MySQL em execução no Compute Engine são considerados externos ao Cloud SQL.

Sobre a configuração do mestre externo

A configuração external master do Cloud SQL permite criar uma instância de primeira geração do Cloud SQL que seja replicada de uma instância do mestre externo ao Cloud SQL. A réplica do Cloud SQL não pode ser acessada pelos aplicativos, mas pode ser promovida para se tornar uma instância de primeira geração autônoma ou pode servir como uma cópia atualizada dos dados no mestre.

Essa configuração exige uma instância do Cloud SQL chamada instância do mestre interno, mostrada no Cloud SQL como mestre das réplicas do Cloud SQL. As instâncias do mestre interno e externo constituem a instância do mestre da réplica do Cloud SQL.

Diagrama da configuração do mestre externo

Os dados só são replicados diretamente do mestre externo para as réplicas do Cloud SQL. A instância do mestre interno não está envolvida na replicação de dados. A instância do mestre interno parece uma instância padrão do Cloud SQL, mas você não é cobrado por ela. Não é possível administrar a instância do mestre interno diretamente.

Antes de começar

  • É necessário ter uma instância externa que atenda aos requisitos de uma instância desse tipo.
  • É necessário ter o endereço IP externo e a porta da instância do mestre externo, além das informações de nome de usuário e senha relacionadas ao usuário da replicação nessa instância.
  • Ative a API Cloud SQL Admin.

    Ative a API

Requisitos de configuração do mestre externo

  • A instância do mestre interno e as réplicas do Cloud SQL precisam ser instâncias de primeira geração.
  • A instância do mestre externo e as réplicas do Cloud SQL precisam usar a mesma versão do MySQL (5.5 ou 5.6).
  • A geração de registros binários precisa ser ativada no mestre externo. Saiba mais (em inglês).
  • A opção server-id precisa ser definida como um valor 2 ou maior. Saiba mais (em inglês).
  • Caso esteja em uma instância do Compute Engine, o mestre externo precisará ter um endereço IP público atribuído.
  • O mestre externo precisa ser acessível a endereços IP públicos.
  • O arquivo dump criado do mestre, que será usado para fornecer uma imagem inicial para o mestre interno, precisa estar de acordo com os requisitos dos arquivos dump do Cloud SQL. Saiba mais.
  • Você precisa configurar uma conta de usuário de replicação no mestre externo com o privilégio REPLICATION SLAVE (em inglês).

Como preparar os dados

Para preparar os dados a serem usados em uma configuração do mestre externo, crie um arquivo mysqldump contendo os dados da instância do mestre e faça upload do arquivo dump para o Cloud Storage.

  1. Criar um bucket do Cloud Storage

    Você usará o bucket para armazenar o arquivo dump que será importado para a réplica. Para mais informações, consulte Como criar buckets de armazenamento.

  2. Crie um arquivo mysqldump por meio da instância do mestre, seguindo as instruções de replicação externa em Como criar um arquivo dump SQL.

  3. Faça upload do arquivo para o bucket do Cloud Storage.

    Para mais informações, consulte Como fazer upload de dados para um bucket.

Como criar a configuração do mestre externo

  1. Crie a instância do mestre interno usando a região onde você quer que as réplicas residam, além do endereço IP externo e da porta da instância do mestre externo:

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

    A instância do mestre interno é criada, com o endereço IP e a porta do mestre externo exibidos como o respectivo endereço IP.

  2. Depois que a instância do mestre interno concluir a inicialização, crie uma réplica, fornecendo as informações da conta de usuário da replicação do mestre externo e o local dos dados preparados anteriormente:

        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"replicaConfiguration":
                   {"mysqlReplicaConfiguration":
                     {"username": "[REPLICATION_USER]",
                      "password": "[REPLICATION_USER_PASSWORD]",
                      "dumpFilePath": "[BUCKET_LOCATION]",
                      "caCertificate": "[SOURCE_SERVER_CA]",
                      "clientCertificate": "[CLIENT_CERT]",
                      "clientKey": "[PRIVATE_KEY]"}},
                  "settings": {"tier": "[TIER]","activationPolicy": "ALWAYS"},
                  "databaseVersion": "[EXTERNAL_MASTER_DATABASE_VERSION]",
                  "masterInstanceName": "[INTERNAL_MASTER_INSTANCE_NAME]",
                  "name": "[REPLICA_NAME]", "region": "[REGION_NAME]"}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
        

    No corpo da solicitação, os campos dumpFile, username e password são obrigatórios. O campo dumpFile está no formato gs://bucket-location/filename. Você precisa usar um nível de primeira geração, como D4. Para databaseVersion, forneça a versão do MySQL da instância do mestre: MYSQL_5_5 ou MYSQL_5_6. O campo region precisa ser igual ao do mestre.

    A informação de SSL/TLS é opcional, mas altamente recomendada para fins de segurança.

    Quando a réplica é criada pela primeira vez, ela fica atrás do mestre, mas a replicação a alcançará com o tempo se a réplica estiver escalonada corretamente de acordo com a carga de trabalho.

  3. (Opcional) Repita a etapa anterior para criar outras réplicas.

  4. Se você não configurou sua instância do mestre para usar SSL/TLS, será preciso pelo menos atualizar o usuário de replicação para permitir o acesso apenas das réplicas. Saiba mais.

A seguir

Saiba mais sobre o gerenciamento de réplicas.