Como configurar o Banco de Dados do Azure para MySQL - Replicação de saída de dados do Servidor Flexível

APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Flexível

Este artigo descreve como configurar a replicação de saída de dados no Banco de Dados do Azure para o servidor flexível MySQL configurando os servidores de origem e de réplica. Este artigo pressupõe que você tenha alguma experiência anterior com servidores e bancos de dados MySQL.

Para replicação de saída de dados, a fonte é sempre o Banco de Dados do Azure para servidor flexível MySQL. A réplica pode ser qualquer servidor MySQL externo em outros provedores de nuvem, no local ou em máquinas virtuais. Analise as limitações e os requisitos da replicação de saída de dados antes de executar as etapas neste artigo.

Nota

Este artigo faz referência ao termo slave, um termo que a Microsoft não usa mais. Quando o termo for removido do software, iremos removê-lo deste artigo.

Crie uma instância de servidor flexível do Banco de Dados do Azure para MySQL para usar como origem.

  1. Crie uma nova instância do Banco de Dados do Azure para o servidor flexível MySQL (por exemplo, sourceserver.mysql.database.Azure.com). Consulte Criar um Banco de Dados do Azure para instância de servidor flexível do MySQL usando o portal do Azure para criação de servidor. Este servidor é o servidor de "origem" para replicação de saída de dados.

  2. Crie contas de usuário duplicadas e privilégios correspondentes.

    1. As contas de usuário não são replicadas do servidor de origem para o servidor de réplica. Suponha que você planeje fornecer aos usuários acesso ao servidor de réplica. Nesse caso, você deve criar manualmente todas as contas e privilégios correspondentes nesta instância de servidor flexível do Banco de Dados do Azure para MySQL recém-criada.

Configurar o servidor MySQL de origem

As etapas a seguir preparam e configuram o Banco de Dados do Azure para a instância de servidor flexível do MySQL atuando como a origem.

  1. Requisitos de rede

    Certifique-se de que suas configurações de rede estejam estabelecidas para que o servidor de origem e de réplica possa se comunicar perfeitamente.
    Se o servidor de origem estiver em acesso público, verifique se as regras de firewall permitem o endereço IP do servidor de réplica. Se o servidor de réplica estiver hospedado no Azure, certifique-se de selecionar a opção de permitir o acesso público de qualquer serviço do Azure a partir da página de rede no portal do Azure. Se o servidor de origem estiver em acesso privado, certifique-se de que o servidor de réplica possa se conectar à origem por meio de emparelhamento Vnet ou uma conexão de gateway VPN VNet-to-VNet.

    Nota

    Para obter mais informações - Visão geral da rede - Banco de Dados do Azure para servidor flexível MySQL.

  2. Ativar o registo binário

    Verifique se o log binário foi habilitado na origem executando o seguinte comando:

    SHOW VARIABLES LIKE 'log_bin';
    

    Se a variável log_bin for retornada com o valor 'ON', o log binário será habilitado no servidor.

  3. Criar uma nova função de replicação e configurar permissão

    Crie uma conta de usuário no servidor de origem configurado com privilégios de replicação. Isso pode ser feito através de comandos SQL ou uma ferramenta como o MySQL Workbench. Considere se você planeja replicar com SSL, pois isso precisará ser especificado ao criar o usuário. Consulte a documentação do MySQL para entender como adicionar contas de usuário no seu servidor de origem.

    Nos comandos a seguir, a nova função de replicação pode acessar a origem de qualquer máquina, não apenas daquela que hospeda a própria origem. Isso é feito especificando "syncuser@'%'" no comando create user. Consulte a documentação do MySQL para saber mais sobre como definir nomes de contas.

    Existem algumas ferramentas que você pode usar para definir nomes de contas. Selecione o que melhor se adapta ao seu ambiente.

Replicação com SSL

Para exigir SSL para todas as conexões de usuário, use o seguinte comando para criar um usuário:

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;

Replicação sem SSL

Se o SSL não for necessário para todas as conexões, use o seguinte comando para criar um usuário:

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';

Despeje e restaure o servidor de origem.

Ignore esta seção se for um servidor de origem recém-criado sem dados existentes para migrar para a réplica. Você pode, neste momento, desbloquear as tabelas:

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

Siga as etapas abaixo se o servidor de origem tiver dados existentes para migrar para a réplica.

  1. Determine quais bancos de dados e tabelas você deseja replicar no Banco de Dados do Azure para o servidor flexível MySQL e execute o despejo do servidor de origem. Você pode usar mysqldump para despejar bancos de dados do seu servidor primário. Para obter mais detalhes, visite Dump & Restore. É desnecessário despejar a biblioteca MySQL e a biblioteca de teste.

  2. Defina o servidor de origem para o modo de leitura/gravação.

Depois de despejar o banco de dados, altere a instância flexível do servidor flexível do Banco de Dados do Azure para MySQL de origem para o modo de leitura/gravação.

SET GLOBAL read_only = OFF;
UNLOCK TABLES;
  1. Restaure o arquivo de despejo para o novo servidor. Restaure o arquivo de despejo para o servidor criado no Banco de Dados do Azure para o servidor flexível MySQL. Consulte Dump & Restore para restaurar um arquivo de despejo para uma instância de servidor flexível do Banco de Dados do Azure para MySQL. Se o arquivo de despejo for grande, carregue-o em uma máquina virtual no Azure na mesma região do servidor de réplica. Restaure-o para a instância de servidor flexível do Banco de Dados do Azure para MySQL a partir da máquina virtual.

Nota

Se você quiser evitar definir o banco de dados como somente leitura quando despejar e restaurar, você pode usar mydumper/myloader.

Configure o servidor de réplica para iniciar a replicação de saída de dados.

  1. Filtragem

    Suponha que a replicação de saída de dados esteja sendo configurada entre o servidor flexível do Banco de Dados do Azure para MySQL e um MySQL externo em outros provedores de nuvem ou localmente. Nesse caso, você deve usar o filtro de replicação para filtrar tabelas personalizadas do Azure no servidor de réplica. Isso pode ser conseguido definindo Replicate_Wild_Ignore_Table = "mysql.__%" para filtrar o Banco de Dados do Azure para tabelas internas mysql do servidor flexível MySQL. Consulte MySQL :: Manual de Referência do MySQL 5.7 :: 13.4.2.2 CHANGE REPLICATION FILTER Statement para obter mais detalhes sobre como modificar este parâmetro de servidor.

  2. Defina o servidor de réplica conectando-se a ele e abrindo o shell do MySQL no servidor de réplica. No prompt, execute a seguinte operação, que define várias configurações de replicação do MySQL ao mesmo tempo:

    CHANGE THE REPLICATION SOURCE TO
    SOURCE_HOST='<master_host>',
    SOURCE_USER='<master_user>',
    SOURCE_PASSWORD='<master_password>',
    SOURCE_LOG_FILE='<master_log_file>',
    SOURCE_LOG_POS=<master_log_pos>
    
    • master_host: nome do host do servidor de origem (exemplo – 'source.mysql.database.Azure.com')
    • master_user: nome de usuário para o servidor de origem (exemplo - 'syncuser'@'%')
    • master_password: Senha para o servidor de origem
    • master_log_file: Nome do arquivo de log binário da execução Show Master Status
    • master_log_pos: posição de log binário da execução show master status

    Nota

    Para usar SSL para a conexão, adicione o atributo SOURCE_SSL=1 ao comando. Para obter mais informações sobre como usar SSL em um contexto de replicação, visite - https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html

  3. Ative o servidor de réplica usando o seguinte comando.

    START REPLICA;
    

    Neste ponto, a instância de réplica começa a replicar todas as alterações feitas no banco de dados do servidor de origem. Você pode testar isso criando uma tabela de exemplo em seu banco de dados de origem e verificando se ela é replicada com êxito.

  4. Verifique o status da replicação.

    Chame o comando show slave status\G no servidor de réplica para exibir o status da replicação.

     show slave status;
    

    Se o estado de Slave_IO_Running e Slave_SQL_Running estiver yes e o valor de Seconds_Behind_Master for 0, a replicação está funcionando bem. Seconds_Behind_Master indica o quão tarde a réplica está. A réplica está processando atualizações se o valor não 0for .

    Se o servidor de réplica estiver hospedado em uma VM do Azure, defina Permitir acesso aos serviços do Azure como ATIVADO na origem para permitir que os servidores de origem e de réplica se comuniquem. Essa configuração pode ser alterada a partir das opções de segurança de conexão. Para obter mais informações, visite Gerenciar regras de firewall usando o portal.

    Se você usou mydumper/myloader para despejar o banco de dados, você poderia obter o master_log_file e master_log_pos do arquivo /backup/metadata.

Próximo passo