Configurar Galera Cluster MariaDB no Ubuntu 20.04

O Galera Cluster MariaDB melhora a disponibilidade e facilita a escalabilidade do seu banco de dados. Neste tutorial, ensinamos como instalar o cluster Galera no Ubuntu 20.04.

Galera Cluster MariaDB: Pré-requisitos

Para instalar um cluster MariaDB Galera no Ubuntu 20.04, você deve atentar-se aos seguintes requisitos:

  • Múltiplos servidores: São necessários pelo menos três servidores ou máquinas virtuais para configurar um cluster Galera no MariaDB. Todos os servidores devem estar na mesma rede.
  • Permissões de root: É necessário que você tenha acesso root ou, pelo menos, permissões administrativas nos servidores.

Instruções passo a passo: Configurar Galera Cluster MariaDB no Ubuntu 20.04

O Galera Cluster MariaDB é uma solução prática de banco de dados que oferece alta disponibilidade, integridade dos dados e escalabilidade para aplicações exigentes. Neste tutorial passo a passo, detalhamos o processo de configuração do Galera Cluster MariaDB no Ubuntu 20.04. Antes de começar, certifique-se de que você possui pelo menos três servidores ou máquinas virtuais disponíveis para configurar o cluster.

Passo 1: Atualizar pacotes

Primeiro, você deve atualizar seu sistema Ubuntu para a versão mais recente. Isso é essencial para garantir que você tenha pacotes e atualizações de segurança atualizados.

Abra um terminal e execute o seguinte comando para atualizar as fontes de pacotes:

sudo apt update
shell

Instale todas as atualizações disponíveis:

sudo apt upgrade -y
shell

É recomendável que você também remova pacotes obsoletos ou não utilizados para limpar os servidores:

sudo apt autoremove -y
shell

Passo 2: Instalar o MariaDB nos servidores

Agora, instale o MariaDB em cada um de seus servidores. Desde a versão 10.1, os pacotes do Galera também estão incluídos junto com o servidor MariaDB.

sudo apt install mariadb-server
shell

Após a instalação, você pode iniciar o serviço MariaDB:

sudo systemctl start mariadb
shell

Use o seguinte comando para garantir que o MariaDB seja iniciado automaticamente a cada reinicialização do sistema:

sudo systemctl enable mariadb
shell

Verifique se o MariaDB está em execução:

sudo systemctl status mariadb
shell

Você também deve fazer algumas configurações básicas de segurança e configurar o banco de dados. Para isso, inicie o assistente de configuração:

sudo mysql_secure_installation
shell

O assistente irá guiá-lo pelos passos, como definir uma senha de root, remover usuários anônimos e remover o banco de dados de teste.

Enter current password for root (enter for none):
 Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
shell

O script pergunta primeiro pela senha atual do root (current password for root). Se você instalou agora o MariaDB no Ubuntu 20.04, pressione a tecla [Enter] e, em seguida, defina uma nova senha.

Passo 3: Configurar nós do Galera Cluster MariaDB

Crie um arquivo cnf no diretório /etc/mysql/conf.d em cada nó para definir as configurações específicas do Galera.

nano /etc/mysql/conf.d/galera.cnf
shell

O arquivo deve incluir configurações gerais do banco de dados, como o formato de log binário e a engine de armazenamento padrão. Além disso, ele deve conter configurações para o cluster Galera, incluindo o nome do cluster e o endereço do cluster.

Adicione as seguintes linhas para o primeiro nó:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
 
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
 
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node_1-ip-address,node_2-ip-address,node_3-ip-address"
 
# Galera Synchronization Configuration
wsrep_sst_method=rsync
 
# Galera Node Configuration
wsrep_node_address="node_1-ip-address"
wsrep_node_name="node_1"
shell
  • Configurações gerais do banco de dados: Incluem parâmetros como binlog_format=ROW, que define o formato dos logs binários, e default-storage-engine=innodb, que define a engine de armazenamento padrão.
  • Configuração do provedor Galera: O parâmetro wsrep_on=ON ativa a replicação Galera, e wsrep_provider=/usr/lib/galera/libgalera_smm.so define o caminho para a biblioteca Galera.
  • Configuração do cluster Galera: Inclui o nome do cluster (wsrep_cluster_name) e o endereço do cluster (wsrep_cluster_address), que contêm os endereços IP ou nomes dos nós no cluster.
  • Sincronização Galera: Define o método de transferência de estado (State Snapshot Transfer – SST), por exemplo, wsrep_sst_method=rsync.
  • Configuração do nó Galera: Define o endereço IP ou nome do host do nó atual (wsrep_node_address) e o nome do nó (wsrep_node_name).

Após salvar este arquivo, crie outro para o segundo nó:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
 
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
 
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node_1-ip-address,node_2-ip-address,node_3-ip-address"
 
# Galera Synchronization Configuration
wsrep_sst_method=rsync
 
# Galera Node Configuration
wsrep_node_address="node_2-ip-address"
wsrep_node_name="node_2"
shell

Agora, siga com o último nó:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
 
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
 
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node_1-ip-address,node_2-ip-address,node_3-ip-address"
 
# Galera Synchronization Configuration
wsrep_sst_method=rsync
 
# Galera Node Configuration
wsrep_node_address="node_3-ip-address"
wsrep_node_name="node_3"
shell

Passo 4: Alterar configurações de firewall nos servidores

Como os nós se comunicam entre si por meio de portas específicas, você deve ajustar as configurações do firewall.

Abra as seguintes portas no seu firewall:

  • Porta 3306: Essa é a porta padrão para o MariaDB. Ela é usada para comunicação e consultas do banco de dados.
  • Portas do Galera: Além da porta padrão 3306, o Galera usa outras portas para comunicação interna entre os nós. O intervalo padrão para portas do Galera geralmente é 4567, 4568 e 4444 para o State Snapshot Transfer (SST).

Você pode definir as configurações do firewall no seu servidor Ubuntu com o seguinte comando:

sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udp
shell

Passo 5: Iniciar o Galera Cluster MariaDB

Interrompa o serviço MariaDB, se ele já estiver em execução:

sudo systemctl stop mariadb
shell

Este comando inicia o servidor MariaDB e inicializa um novo cluster Galera no primeiro nó:

sudo galera_new_cluster
shell

Verifique o número de nós no cluster:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
shell

Você deve ver a seguinte saída:

+---------------------------+-------------+
| Variable_name        | Value       |
+--------------------------+--------------+
| wsrep_cluster_size | 1              |
+--------------------------+--------------+
shell

O primeiro nó foi iniciado com sucesso.

Ative o segundo nó:

systemctl start mariadb
shell

Verifique se o número de nós aumentou:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
shell

No console, você verá:

+---------------------------+-------------+
| Variable_name        | Value       |
+--------------------------+--------------+
| wsrep_cluster_size | 2              |
+--------------------------+--------------+
shell

Agora, inicie o terceiro nó:

systemctl start mariadb
shell

Verifique se o nó está funcionando corretamente:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
shell

Agora, deve haver três nós no cluster:

+---------------------------+-------------+
| Variable_name        | Value       |
+--------------------------+--------------+
| wsrep_cluster_size | 3              |
+--------------------------+--------------+
shell

Passo 6: Testar replicação

Certifique-se de que você pode se conectar a cada nó no cluster. Use o cliente MariaDB para fazer login como usuário root ou como outro usuário com permissões adequadas.

mysql -u root -p
shell

Crie um novo banco de dados de teste em um dos nós do cluster:

CREATE DATABASE test_db;
sql

Faça login nos demais nós e verifique se o banco de dados de teste está presente nestes:

SHOW DATABASES;
sql

O banco de dados de teste deve aparecer na lista de bancos de dados:

+-------------------------------+
| Database                      |
+-------------------------------+
| information_schema            |
| mysql                         |
| performance_schema            |
| test_db                       |
| sys                           |
+-------------------------------+
sql

Adicione uma nova tabela de teste no banco de dados de teste:

USE test_db;
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);
sql

Insira alguns dados de teste na coluna name da tabela de teste:

INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');
sql

Verifique nos outros nós se a tabela de teste e os dados inseridos foram replicados:

USE test_db;
SELECT * FROM test_table;
sql

A saída deve mostrar a lista de pessoas com os respectivos nomes e IDs:

+----+-----------+
| id | name      |
+----+-----------+
| 1  | Alice     |
| 2  | Bob       |
| 3  | Charlie   |
+----+-----------+
sql

Modifique um registro na tabela de teste:

UPDATE test_table SET name = 'David' WHERE name = 'Alice';
sql

Tente excluir um registro:

DELETE FROM test_table WHERE name = 'Bob';
sql

Verifique nos outros nós se as atualizações e exclusões foram replicadas:

SELECT * FROM test_table;
sql

As alterações devem ser realizadas com sucesso em cada nó:

+----+-----------+
| id | name      |
+----+-----------+
| 1  | David     |
| 3  | Charlie   |
+----+-----------+
sql
Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top