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.