A replicação de instância de banco de dados refere-se à sincronização de dados por meio da configuração de um ou mais bancos de dados de backup para o servidor, distribuindo os dados do MySQL em vários sistemas. Este artigo apresenta os métodos de replicação de dados suportados pelo TencentDB for MySQL e as otimizações do kernel TXSQL para sincronização de dados.
Observação:
Primary refere-se à instância de banco de dados principal, e Standby refere-se à instância de banco de dados de backup.
As versões MySQL 5.6, 5.7 e 8.0 suportam três métodos de replicação: assíncrona, semi-síncrona e fortemente síncrona; enquanto a versão 5.5 suporta apenas o método assíncrono.
Os métodos de replicação de dados suportados pelo TencentDB for MySQL
1. Replicação assíncrona
A aplicação inicia uma solicitação de atualização de dados (incluindo operações de insert, update e delete). Após executar a operação de atualização, o nó primário retorna imediatamente a resposta ao aplicativo e, em seguida, replica os dados para o nó secundário.
A replicação assíncrona não exige que o nó primário aguarde a resposta do nó secundário durante a atualização de dados. Portanto, as instâncias de banco de dados com replicação assíncrona geralmente oferecem alto desempenho, e a indisponibilidade do nó secundário não afeta a prestação de serviços externos pelo nó primário. No entanto, como os dados não são sincronizados em tempo real com o nó secundário, há uma baixa probabilidade de inconsistência de dados se o nó primário falhar enquanto o nó secundário estiver com atraso.
A replicação assíncrona do TencentDB for MySQL adota uma arquitetura de um primário e um secundário.
2. Replicação semi-síncrona
A aplicação inicia uma solicitação de atualização de dados (incluindo operações de insert, update e delete). O nó primário replica imediatamente os dados para o nó secundário após executar a operação de atualização. O nó secundário recebe os dados e os grava no relay log (não precisa ser executado) só depois disso retorna a informação de sucesso ao nó primário. O nó primário deve receber a confirmação de sucesso do nó secundário antes de retornar a resposta ao aplicativo.
O nó primário pausa as respostas ao aplicativo apenas em caso de anormalidades na replicação de dados (como indisponibilidade do nó secundário ou falhas na rede de replicação), reduzindo o método de replicação para assíncrono por um período padrão de cerca de 10 segundos no MySQL. Quando a replicação de dados é restabelecida, o sistema retorna ao modo semi-síncrono.
A replicação semi-síncrona do TencentDB for MySQL adota uma arquitetura de um primário e um secundário.
3. Replicação fortemente síncrona
A aplicação inicia uma solicitação de atualização de dados (incluindo operações de insert, update e delete). O nó primário replica imediatamente os dados para o nó secundário após executar a operação de atualização. O nó secundário recebe os dados e os grava no relay log (não precisa ser executado) só depois disso retorna a informação de sucesso ao nó primário. O nó primário deve receber a confirmação de sucesso do nó secundário antes de retornar a resposta ao aplicativo.
Em caso de anomalias na replicação de dados (como indisponibilidade do nó secundário ou falhas na rede de replicação), o modo de replicação não sofre degradação. Para garantir a consistência dos dados, o nó primário pausa as respostas ao aplicativo até que a anomalia termine.
A replicação fortemente síncrona do TencentDB for MySQL adota uma arquitetura de um primário e dois secundários. Apenas um dos nós secundários precisa executar com sucesso para retornar a confirmação, evitando o problema de indisponibilidade de um único nó secundário afetar as operações no nó primário, melhorando assim a disponibilidade do cluster de replicação fortemente síncrona.
Otimização do núcleo TXSQL para sincronização de dados
Existem problemas
Quando o nó primário ou o nó secundário está indisponível, os métodos de replicação assíncrona, semi-síncrona e fortemente síncrona têm a probabilidade de causar inconsistência de dados.
O banco de dados, como capacidade central de armazenamento e serviço de dados do sistema, exige altíssima disponibilidade. Em sistemas de produção, soluções de alta disponibilidade são normalmente necessárias para garantir operação contínua, sendo as tecnologias de sincronização de dados o fundamento das soluções de alta disponibilidade de bancos de dados.
A solução de otimização
A solução de replicação fortemente síncrona é uma tecnologia desenvolvida independentemente pela Tencent, baseada no protocolo MySQL com multithread paralela. Ela garante a correta segurança dos dados ao fornecer confirmação de transação para o aplicativo somente após a completa sincronização dos dados (logs) no banco de dados secundário.
O diagrama esquemático do princípio é o seguinte:
Quando uma solicitação é iniciada na camada de aplicação, o nó primário só confirma o sucesso da solicitação após receber a confirmação de sucesso do nó secundário, garantindo assim a consistência completa dos dados entre os nós primário e secundário.
A solução de sincronização forte supera outras soluções de sincronização mainstream em desempenho, com as seguintes características principais:
A replicação síncrona consistente garante forte consistência de dados entre os nós.
A solução é completamente transparente para o nível de negócios, não sendo necessário realizar trabalho de separação leitura/escrita ou reforço de sincronização.
Torna os threads de sincronização serial em assíncronos e introduz capacidade de pool de threads, melhorando significativamente o desempenho.
Suporta a arquitetura de versão cloud disk.
Suporta controle automático de membros, com nós com falhas sendo removidos automaticamente do cluster.
Suporta a adição automática de nós, sem intervenção manual.
Cada nó contém uma cópia completa dos dados e pode ser alternado a qualquer momento.
Não é necessário dispositivo de armazenamento compartilhado.