Banco de dados
A seguir são descritos os bancos de dados suportados pela aplicação.
Dois cenários serão testados: - 1) cluster em alta disponibilidade (mínimo 3 nós) - 2) cluster de replicação Primário/Secundário (mínimo 3 nós)
Versões suportadas
MySQL: 8.0 / 8.4 ou MariaDB: 10.6/ 10.11 (recomendado) / 11.4
Oracle Database: 11g, 18, 21, 23 (somente versão enterprise)
PostgreSQL: 13/14/15/16/17
Serão utilizados exemplos com MariaDB e Postgres para a criação das réplicas dos bancos de dados.
Criação de réplica do banco de dados
Tanto MariaDB quanto Postgres possuem a possiblidade de criar réplicas do banco.
As réplicas devem ser do tipo Ativo-Ativo, de maneira que todas alterações no Primário reflitam no banco Secundário, que estará em Stand-By caso o Primário venha a falhar.
Réplica Assíncrona
Nessa arquitetura, todas modificações realizadas no primário serão refletidas nas réplicas.
Quando houver uma falha no primário, uma das réplicas deve assumir como primário.
graph LR
Primário --> Réplica1
Primário --> Réplica2
Primário --> Réplica3
Réplica Síncrona
Na réplica síncrona, todas modificações realizadas em um banco de dados são replicadas para outros servidores.
Sendo assim, teremos uma réplica do mesmo banco de dados em todos os servidores.
Caso haja alguma inconsistência de dados em algum dos servidores, ele será excluído do cluster.
graph LR
Aplicação --> Primário1
Primário1 --> Primário2
Primário1 <--> Primário2
Primário1 --> Primário3
Primário1 <--> Primário3
Primário2 --> Primário3
Primário2 <--> Primário3
MariaDB
Possiblidade de criar clusters utilizando o Galera MariaDB. Além disso, possui um gerenciador gráfico.
Postgres
A replicação de bancos Postgres pode ser feita utilizando o postgresql_cluster v2.0 ou algum dessa lista.
Será utilizado o Patroni, o qual é um conjunto de scripts em python que automatizam o gerenciamento de falhas em clusters.
Além disse, um exemplo de replicação nativa será documentado.
Replicação nativa
Consulte a documentação postgres-replica para fazer a réplica do postgres nativamente.
Replicação com Patroni
Patroni é um template desenvolvido para garantir alta disponibilidade de um cluster postgres.
Confira patroni a documentação.