MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

O que há de novo no MySQL Galera Cluster 4.0

O MySQL Galera Cluster 4.0 é o novo garoto no bloco de banco de dados com novos recursos muito interessantes. Atualmente está disponível apenas como parte do MariaDB 10.4, mas no futuro funcionará também com o MySQL 5.6, 5.7 e 8.0. Nesta postagem do blog, gostaríamos de analisar alguns dos novos recursos que acompanham o Galera Cluster 4.0.

Replicação de streaming de cluster do Galera

O novo recurso mais importante desta versão é a replicação de streaming. Até agora, o processo de certificação do Cluster Galera funcionava de forma que todas as transações tinham que ser certificadas depois de concluídas.

Este processo não foi ideal em vários cenários...

  1. Hotspots em tabelas, linhas que são atualizadas com muita frequência em vários nós - centenas de transações rápidas executadas em vários nós, modificando o mesmo conjunto de linhas resultam em travamentos frequentes e reversão de transações
  2. Transações de longa duração - se uma transação demorar muito para ser concluída, isso aumenta seriamente as chances de que alguma outra transação, entretanto, em outro nó, possa modificar algumas das linhas que também foram atualizadas pela transação longa. Isso resultou em um impasse durante a certificação e uma das transações teve que ser revertida.
  3. Grandes transações - se uma transação modifica um número significativo de linhas, é provável que outra transação, ao mesmo tempo, em um nó diferente, modifique uma das linhas já modificadas pela grande transação. Isso resulta em um impasse durante a certificação e uma das transações precisa ser revertida. Além disso, grandes transações levarão mais tempo para serem processadas, enviadas para todos os nós do cluster e certificadas. Essa não é uma situação ideal, pois adiciona atraso aos commits e diminui a velocidade de todo o cluster.

Felizmente, a replicação de streaming pode resolver esses problemas. A principal diferença é que a certificação acontece em blocos onde não há necessidade de esperar a conclusão de toda a transação. Como resultado, mesmo que uma transação seja grande ou longa, a maioria (ou todas, dependendo das configurações que discutiremos em um momento) das linhas são bloqueadas em todos os nós, impedindo que outras consultas as modifiquem.

Opções de replicação de streaming de cluster do MySQL Galera

Existem duas opções de configuração para replicação de streaming:

wsrep_trx_fragment_size 

Isso informa o tamanho que um fragmento deve ter (por padrão, é definido como 0, o que significa que a replicação de streaming está desabilitada)

wsrep_trx_fragment_unit 

Isso informa o que o fragmento realmente é. Por padrão, são bytes, mas também podem ser 'instruções' ou 'linhas'.

Essas variáveis ​​podem (e devem) ser definidas em um nível de sessão, possibilitando ao usuário decidir qual consulta específica deve ser replicada usando a replicação de streaming. Definir unit para ‘statements’ e size para 1 permite, por exemplo, usar a replicação de streaming apenas para uma única consulta que, por exemplo, atualiza um hotspot.

Você pode configurar o Galera 4.0 para certificar cada linha que você modificou e capturar os bloqueios em todos os nós ao fazê-lo. Isso torna a replicação de streaming excelente para resolver problemas com deadlocks frequentes que, antes do Galera 4.0, eram possíveis de resolver apenas redirecionando todas as gravações para um único nó.

Tabelas WSREP

O Galera 4.0 apresenta várias tabelas, que ajudarão a monitorar o estado do cluster:

  • wsrep_cluster
  • wsrep_cluster_members
  • wsrep_streaming_log

Todos eles estão localizados no esquema ‘mysql’. wsrep_cluster fornecerá informações sobre o estado do cluster. wsrep_cluster_members fornecerá informações sobre os nós que fazem parte do cluster. wsrep_streaming_log ajuda a rastrear o estado da replicação de streaming.

Próximos recursos do cluster do Galera

Codership, a empresa por trás do Galera, ainda não terminou. Conseguimos obter uma prévia do roteiro do CEO, Seppo Jaakola, que foi apresentado no Percona Live no início deste ano. Aparentemente, veremos recursos como suporte a transações XA e criptografia gcache. Esta é realmente uma boa notícia.

O suporte para transações XA será possível graças à replicação de streaming. Em resumo, as transações XA são as transações distribuídas que podem ser executadas em vários nós. Eles utilizam a confirmação de duas fases, que exige primeiro adquirir todos os bloqueios necessários para executar a transação em todos os nós e, depois de concluído, confirmar as alterações. Nas versões anteriores o Galera não tinha meios de bloquear recursos em nós remotos, com a replicação de streaming isso mudou.

Gcache é um arquivo que armazena writesets. Seu conteúdo é enviado para nós de junção que solicita uma transferência de dados. Se todos os dados estiverem armazenados no gcache, o joiner receberá apenas as transações ausentes no processo chamado Incremental State Transfer (IST). Se o gcache não contiver todos os dados necessários, a State Snapshot Transfer (SST) será necessária e todo o conjunto de dados terá que ser transferido para o nó de junção.

O Gcache contém informações sobre alterações recentes, portanto, é ótimo ver seu conteúdo criptografado para maior segurança. Com melhores padrões de segurança sendo introduzidos por meio de mais e mais regulamentações, é crucial que o software se torne melhor em alcançar a conformidade.

Conclusão


Estamos definitivamente ansiosos para ver como o Galera Cluster 4.0 funcionará em bancos de dados que o MariaDB. Poder implantar o MySQL 5.7 ou 8.0 com Galera Cluster será muito bom. Afinal, o Galera é uma das soluções de replicação síncrona mais amplamente testadas disponíveis no mercado.