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

Como implantar o MariaDB Cluster 10.5 para alta disponibilidade


A implantação do MariaDB Cluster 10.5 tem suporte no ClusterControl desde a versão 1.8.1.

O MariaDB 10.5 está equipado com:

  • Privilégios mais granulares

  • Melhorias no desempenho do InnoDB

  • Suporte completo de GTID para Galera Cluster

  • Mais metadados para replicação e logs binários

  • Mais instruções de sintaxe SQL (instrução RETURNING para INSERT, EXCEPT ALL e INTERSECT ALL, …)

  • Atualizações do esquema de desempenho para corresponder ao MySQL 5.7

  • O mecanismo de armazenamento do S3

Você pode conferir mais em nosso blog anterior

Para obter mais detalhes sobre esta versão específica, confira o que há de novo no MariaDB 10.5? Algumas das mudanças mais significativas da versão 10.4 para 10.5 incluem:

  • Consistência de GTID

  • Inconsistência do cluster/erro de votação

  • operações DDL sem bloqueio (disponível apenas na versão empresarial)

  • Caixa preta (disponível apenas na versão empresarial)

  • Atualizou sua biblioteca Galera wsrep, para a qual 26.4.6 é a versão mais recente

Inicialmente, o XA Transaction Support era esperado para esta versão (não se confunda, pois as transações XA são suportadas pelo MariaDB Server, mas não no Galera Cluster). No entanto, devido a algumas implicações de desempenho, o MariaDB Galera Cluster não oferece suporte a transações XA.

Neste blog, discutiremos como implantar o MariaDB Cluster 10.5 para alta disponibilidade.

Cluster MariaDB para alta disponibilidade

O MariaDB Cluster é essencialmente um Galera Cluster que usa a implementação do MariaDB como a camada de banco de dados para fazer interface com o mecanismo InnoDB ou XtraDB. O MariaDB Galera Cluster é um cluster multimestre virtualmente síncrono para MariaDB. Ele está disponível apenas no Linux e suporta os mecanismos de armazenamento XtraDB/InnoDB (embora haja suporte experimental para MyISAM — veja a variável de sistema wsrep_replicate_myisam). Quando o Galera Cluster é usado, as leituras e gravações do banco de dados podem ser direcionadas para qualquer nó. Qualquer nó individual pode ser perdido sem interrupção nas operações e sem o uso de procedimentos complexos de failover.

Com a natureza do Galera adaptada dentro do MariaDB Cluster, é uma solução de alta disponibilidade com replicação síncrona, failover e ressincronização. Ele traz os benefícios de nenhuma perda de dados, nenhum atraso de escravo, escalabilidade de leitura e gravação e alta disponibilidade em diferentes data centers.

Implantando o MariaDB Cluster 10.5

O MariaDB fornece uma configuração direta e fácil para instalar seu MariaDB Cluster 10.5. O processo manual pode ser tedioso, mas com scripts automatizados fornecidos pelo MariaDB, os repositórios podem ser configurados de acordo com a versão do banco de dados de destino, tipo de sistema operacional e versão do sistema operacional.

Para este exercício, tenho a seguinte configuração do Galera Cluster de 3 nós com os seguintes endereços IP:192.168.40.210, 192.168.40.220, 192.168.40.230.

Configure seu repositório

Como mencionado anteriormente, o MariaDB tem um script chamado mariadb_repo_setup e é fácil de usar. Você pode especificar a versão de destino do banco de dados, o tipo de sistema operacional e a versão do sistema operacional.

Por exemplo, estou instalando usando EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

ou instalá-lo no Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Observe que ao usar o script mariadb_repo_setup, ele requer o pacote apt-transport-https como dependência. Portanto, instale este pacote antes de poder aproveitar o script mariadb_repo_setup.

apt update

apt install apt-transport-https

Agora, execute o comando para seus três nós de acordo com o sistema operacional. Claro, a versão do MariaDB tem que ser 10.5.

Configurar a configuração do MySQL

O arquivo de configuração depende dos recursos do servidor, do tipo de ambiente do servidor e do endereço IP atribuído. Para este blog, você pode usar esta configuração de configuração MariaDB Cluster/PXC pronta para produção que usamos para implantar em nossos bancos de dados Percona XtraDB Cluster/MariaDB Cluster usando ClusterControl. Variáveis ​​notáveis ​​que você precisa ou estão sujeitas a mudanças são as seguintes:

  • innodb_buffer_pool_size — Defina o pool de buffers de 70% - 80% de RAM disponível do seu servidor

  • wsrep_provider — Caminho da biblioteca compilada do Galera. Para Enterprise Linux, o caminho deve ser  /usr/lib64/galera-4/libgalera_smm.so. Enquanto o Debian/Ubuntu está em /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Este é o endereço IP do nó

  • wsrep_sst_method — Você pode alterá-lo, mas recomendamos que você use mariabackup. Os valores possíveis que você pode escolher são rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — O nome do seu cluster MariaDB. Ele deve ser idêntico a todos os seus nós em um único cluster MariaDB.

  • wsrep_cluster_address — Contém os endereços de seus nós dentro do cluster. Ele deve ser um IP, nome de host ou FQDN válido.

  • wsrep_node_name — O nome do seu nó. O nome pode ser usado em wsrep_sst_donor como um doador preferencial. Observe que vários nós em um cluster podem ter o mesmo nome.

Para executar o SST, o usuário e a senha para as seguintes seções [mysqldump], [xtrabackup] e [mysqld] podem ser alterados se você desejar. Para este exercício, vamos simplificar, e você pode deixar os valores como estão.

Agora, copie o arquivo de configuração e coloque-o em /etc/my.cnf. Faça isso em todos os seus três nós Galera.

Instalando os pacotes necessários

Instale os pacotes para todos os três nós Galera. Siga o comando abaixo com base no seu ambiente de SO de destino.

Para RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Para Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Quando a instalação estiver concluída, interrompa o processo MariaDB e inicialize o cluster como um único nó. Isso deve inicializar seu Cluster Galera. Neste estágio, estou executando-o no nó 192.168.40.210.

$ /usr/bin/galera_new_cluster

Criar usuário SST/IST

Crie o usuário de backup, que deve ser usado para SST ou IST. Execute apenas as seguintes instruções SQL abaixo no primeiro nó em que você iniciou o cluster. Neste estágio, eu o executei no nó 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

Neste ponto, já estamos configurados e prontos para conectar os nós restantes.

Iniciar o servidor MariaDB

Agora já configuramos o primeiro nó. Estamos prontos para conectar os nós restantes. Simplesmente, basta iniciar o serviço MariaDB. Basta executar o comando abaixo:

systemctl start mariadb

Execute o comando para os nós restantes, um de cada vez. Neste ponto, todos os nós estão em sincronia.

Adicionando esteróides ao seu cluster MariaDB 10.5 para alta disponibilidade

Provavelmente, implantar o MariaDB Cluster 10.5 para alta disponibilidade pode não ser suficiente para suas necessidades em uma configuração de produção. Adicionar mais esteróides, como instalar o HAProxy junto com o Keepalived para sua redundância, trará mais alta disponibilidade para seu ambiente de banco de dados.

Configurar o HAProxy e o Keepalived para obter a topologia e o ambiente desejados pode adicionar mais problemas. No entanto, você pode automatizar isso com ClusterControl. Usando o ClusterControl, você pode implantar seu MariaDB Cluster 10.5 e adicionar mais soluções para balanceamento de carga, como ProxySQL, MaxScale ou garbd. Você pode adicionar Keepalived ao seu cluster para adicionar redundância e soluções de failover automático em caso de desastre.

Você pode baixar uma avaliação gratuita do ClusterControl que permitirá implantar essas soluções de alta disponibilidade e gerenciar todas as operações do banco de dados a partir de um único painel. Veremos como implantar seu cluster MariaDB 10.5 com ClusterControl.

Implantando o MariaDB 10.5 Cluster com ClusterControl

Depois de instalar o ClusterControl, clique no ícone no canto superior direito e você verá o assistente de implantação como abaixo.

Você pode configurá-lo facilmente. Basta seguir a série de etapas com base no fluxo da interface do usuário.

Implantar HAProxy para gerenciamento de balanceamento de carga

Neste ponto, suponho que você tenha seu MariaDB Cluster 10.5 configurado. Agora, vamos implantar o HAProxy:

Como alternativa, você pode ir para Gerenciar → Load Balancer → HAProxy.

Em seguida, selecione ou digite o endereço onde o HAProxy será instalado e selecione seus nós Galera que serão monitorados pelo HAProxy. Veja o exemplo abaixo:

Adicione pelo menos duas implantações de HAProxy para adicionar mais disponibilidade. Sempre que um de seus HAProxy ficar inativo, seu aplicativo será roteado para o outro nó que ainda está disponível ou online. Isso é muito importante, especialmente ao lidar com atualizações de banco de dados ou sistema, além de eventos catastróficos ou de desastre.

Implantar Keepalived

Você usará o mesmo processo acima para implantar o Keepalived, conforme mostrado abaixo:

Se você notou, tenho duas instâncias HAProxy para as quais instalarei o Keepalived , que deve estar presente em todos os nós em que o HAProxy estiver em execução.

Finalizando seu MariaDB Cluster 10.5 com alta disponibilidade

Agora que temos tudo configurado, você deve ter um ambiente parecido com este:

Encerrando

Esta configuração para seu cluster MariaDB 10.5 oferece os benefícios de obter alta disponibilidade com vários noves. O HAProxy fornece mais recursos de balanceamento de carga com sua separação de leitura e gravação, e o Keepalived garante que, caso um de seus HAProxy morra, ele fará failover para o próximo nó disponível. Seu aplicativo se conectará apenas ao endereço IP virtual (que segue o VRRP) e não exigirá configuração ou configuração extra.

Para adicionar ainda mais flexibilidade e separação de leitura/gravação ao reproduzir apenas em uma porta, você pode substituir HAProxy por ProxySQL. Alcançar uma configuração perfeita para alta disponibilidade pode ser difícil, e cada um tem suas desvantagens. No entanto, o que mais importa é que o tempo de inatividade é baixo ou nenhum.

Para obter mais dicas sobre como criar uma configuração do MariaDB altamente disponível, confira este artigo sobre como implantar a replicação do MariaDB.

Se você deseja se manter atualizado sobre as tendências e práticas recomendadas de banco de dados, assine nossa newsletter e siga-nos no Twitter e LinkedIn.