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.
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.
Crie contas de usuário duplicadas e privilégios correspondentes.
- 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.
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 - Conceitos de conectividade e rede para o Banco de Dados do Azure para MySQL - Servidor flexível.
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.
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.
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.
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;
- 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.
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.
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
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.
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 for0
, 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ão0
for .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.