Compartilhar via


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

Esse artigo descreve como configurar a replicação de dados de saída no Servidor Flexível do Banco de Dados do Azure para 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 dados, a origem é sempre o Azure Database for MySQL Flexible Server. A réplica poderá ser qualquer servidor MySQL externo em outros provedores de nuvem, locais ou máquinas virtuais. Examine as limitações e os requisitos da Replicação de saída de dados antes de executar as etapas deste artigo.

Observação

Este artigo faz referência ao termo escravo, um termo que a Microsoft não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

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

  1. Crie uma nova instância do Servidor Flexível do Banco de Dados MySQL do Azure (por exemplo, sourceserver.mysql.database.Azure.com). Consulte 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 a Replicação de saída de dados.

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

    1. 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 o acesso ao servidor de réplica. Nesse caso, você deve criar manualmente todas as contas e privilégios correspondentes nessa instância recém-criada do Azure Database para MySQL Flexible Server.

Configurar o servidor MySQL de origem

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

  1. Requisitos de rede

    Verifique se as configurações de rede estão estabelecidas para que o servidor de origem e de réplica possam se comunicar sem interrupções.
    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, selecione a opção de permitir o acesso público dos serviços do Azure na página de rede no portal do Azure. Se o servidor de origem estiver em acesso privado, verifique se o servidor de réplica pode se conectar à origem por meio de emparelhamento Vnet ou de uma conexão de gateway de VPN VNet a VNet.

  2. Ativar log binário

    Execute o seguinte comando para verificar se o registro em log binário foi habilitado na origem:

    SHOW VARIABLES LIKE 'log_bin';
    

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

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

    Crie uma conta de usuário no servidor de origem configurado com privilégios de replicação. Isso pode ser feito por meio de comandos SQL ou de uma ferramenta como o Workbench do MySQL. Leve em conta se você planeja replicar com SSL, pois isso precisa ser especificado na criação do usuário. Confira a documentação do MySQL para entender como adicionar contas de usuário ao seu servidor de origem.

    Nos comandos a seguir, a nova função de replicação poderá acessar a origem de qualquer computador, não apenas daquele que hospeda a própria origem. Isso é feito especificando "syncuser@'%'" no comando create user. Consulte a documentação do MySQL para saber mais sobre a configuração de nomes de conta.

    Há algumas ferramentas que podem ser utilizadas para definir os nomes de conta. Selecione aquela que seja mais adequada ao seu ambiente.

Replicação com SSL

Para exigir SSL em 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 exigido 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. Neste ponto, é possível 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 Servidor Flexível do Banco de Dados do Azure para MySQL e execute o despejo do servidor de origem. Você pode usar o mysqldump para despejar os bancos de dados do servidor primário. Para obter mais detalhes, acesse Despejo e restauração. Não é necessário despejar as bibliotecas normal e de teste do MySQL.

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

Após despejar o banco de dados, altere a instância de origem do Azure Database for MySQL Flexible Server para o modo de leitura/gravação.

SET GLOBAL read_only = OFF;
UNLOCK TABLES;
  1. Restaure arquivo de despejo no novo servidor. Restaure o arquivo de despejo para o servidor criado no Azure Database for MySQL Flexible Server. Consulte Dump & Restore para restaurar um arquivo de despejo em uma instância do Azure Database for MySQL Flexible Server. Se o arquivo de despejo é grande, carregue-o em uma máquina virtual do 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.

Observação

Se você deseja evitar configurar o banco de dados como somente leitura ao despejar e restaurar, poderá 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 dados de saída esteja sendo configurada entre o Azure Database for MySQL Flexible Server e um MySQL externo em outros provedores de nuvem ou no local. Nesse caso, você deverá usar o filtro de replicação para filtrar as tabelas personalizadas do Azure no servidor de réplica. Isso pode ser feito definindo Replicate_Wild_Ignore_Table = "mysql.__%" para filtrar as tabelas internas do MySQL Flexible Server do Banco de Dados do Azure. Consulte MySQL :: Manual de referência do MySQL 5.7 :: 13.4.2.2 Instrução CHANGE REPLICATION FILTER para obter mais detalhes sobre como modificar este parâmetro do servidor.

  2. Defina o servidor de réplica conectando-o e abrindo o shell do MySQL no servidor de réplica. No prompt, execute a seguinte operação, que definirá 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: a 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 do log binário da execução show master status

    Observação

    Para usar o SSL para a conexão, inclua o atributo SOURCE_SSL=1 no comando. Para obter mais informações sobre como usar o 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;
    

    Nesse ponto, a instância de réplica começará a replicar todas as alterações feitas no banco de dados do servidor de origem. Você poderá testar essa operação criando uma tabela de exemplo no banco de dados de origem e verificando se foi 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 de replicação.

     show slave status;
    

    Se o estado de Slave_IO_Running e Slave_SQL_Running for yes e o valor de Seconds_Behind_Master for 0, significa que a replicação está funcionando corretamente. O valor de Seconds_Behind_Master indica se há atraso da réplica. A réplica estará processando atualizações se o valor não for 0.

    Se o servidor de réplica estiver hospedado em uma VM do Azure, defina Permitir acesso aos serviços do Azure como ATIVO na origem para permitir que os servidores de origem e de réplica estabeleçam comunicação. É possível alterar essa configuração nas opções de segurança de conexão. Para obter mais informações, visite Gerenciar regras de firewall do 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, poderá obter o master_log_file e master_log_pos do arquivo /backup/metadata.