Partilhar via


Como configurar o Banco de Dados do Azure para MySQL - Replicação de saída de dados do 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 origem é sempre o Banco de Dados do Azure para o 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 um Banco de Dados do Azure para a instância do Servidor Flexível 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 Guia de início rápido: criar uma instância do Banco de Dados do Azure para MySQL com o portal do Azure. 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 recém-criada do Banco de Dados do Azure para o Servidor Flexível MySQL.

Configurar o servidor MySQL de origem

As etapas a seguir preparam e configuram o Banco de Dados do Azure para a instância do Servidor Flexível 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.

  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 o Banco de Dados do Azure de origem para a instância do Servidor Flexível MySQL 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 do Azure Database for MySQL Flexible Server. 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 do 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 Banco de Dados do Azure para o Servidor Flexível 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 alcançado 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 para o Banco de Dados do Azure para MySQL - Servidor flexível usando o portal do Azure.

    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.