PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Usando a automação para acelerar os testes de lançamento no PostgreSQL

Ter um ambiente de teste é uma obrigação em todas as empresas. Pode ser necessário testar mudanças ou novas versões do aplicativo, ou até mesmo testar seu aplicativo existente com uma nova versão do PostgreSQL. A parte difícil disso é, primeiro, como implantar um ambiente de teste o mais semelhante possível ao de produção e como manter esse ambiente sem recriar tudo do zero.

Neste blog, veremos como implantar um ambiente de teste de diferentes maneiras usando o ClusterControl, que ajudará você a automatizar o processo e evitar tarefas manuais demoradas.

Replicação de cluster para cluster

Desde o ClusterControl 1.7.4, existe um recurso chamado Replicação de cluster para cluster. Ele permite que você tenha uma replicação em execução entre dois clusters autônomos.

Vamos dar uma olhada em como usar esse recurso para um cluster PostgreSQL existente. Para esta tarefa, vamos supor que você tenha o ClusterControl instalado e o Cluster Primário foi implantado usando-o.

Criando uma replicação de cluster para cluster

Para criar uma nova replicação de cluster para cluster a partir da interface do usuário do ClusterControl, vá para ClusterControl -> Select PostgreSQL Cluster -> Cluster Actions -> Create Slave Cluster.

O cluster escravo será criado por streaming de dados do cluster primário atual.


Você deve especificar as credenciais e a porta SSH, um nome para seu cluster escravo e se deseja que o ClusterControl instale o software e as configurações correspondentes para você.


Após configurar as informações de acesso SSH, você deve definir a versão do banco de dados, datadir, porta e credenciais de administrador. Como ele usará a replicação de streaming, certifique-se de usar a mesma versão do banco de dados e as credenciais devem ser as mesmas usadas pelo Cluster Primário.


Nesta etapa, você precisa adicionar o servidor ao novo cluster escravo. Para esta tarefa, você pode inserir o endereço IP ou o nome do host do nó do banco de dados.


Você pode monitorar o status do trabalho no monitor de atividades do ClusterControl. Quando a tarefa estiver concluída, você poderá ver o cluster na tela principal do ClusterControl.


ClusterControl CLI

ClusterControl CLI, também conhecido como s9s, é uma ferramenta de linha de comando introduzida no ClusterControl versão 1.4.1 para interagir, controlar e gerenciar clusters de banco de dados usando o sistema ClusterControl. ClusterControl CLI abre uma nova porta para automação de cluster, onde você pode integrá-lo facilmente com ferramentas de automação de implantação existentes, como Ansible, Puppet, Chef, etc. Você também pode usar esta ferramenta ClusterControl para criar um cluster escravo. Vejamos um exemplo:

$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log

Agora, vamos ver o parâmetro usado com mais detalhes:

  • Cluster:Para listar e manipular clusters.

  • Criar:crie e instale um novo cluster.

  • Cluster-name:O nome do novo Slave Cluster.

  • Tipo de cluster:O tipo de cluster a ser instalado.

  • Versão do provedor:A versão do software.

  • Nós:Lista dos novos nós no Cluster Escravo.

  • Os-user:O nome de usuário para os comandos SSH.

  • Os-key-file:O arquivo de chave a ser usado para conexão SSH.

  • Db-admin:O nome de usuário do administrador do banco de dados.

  • Db-admin-passwd:A senha para o administrador do banco de dados.

  • Remote-cluster-id:ID de cluster mestre para a replicação de cluster para cluster.

  • Log:Aguarde e monitore as mensagens de trabalho.

Gerenciando a replicação de cluster para cluster

Agora que você tem sua replicação de cluster para cluster em execução, há diferentes ações a serem executadas nessa topologia usando o ClusterControl da interface do usuário e da CLI.

Reconstruindo um cluster escravo

Para reconstruir um Cluster Escravo, vá para ClusterControl -> Selecionar Cluster Escravo -> Nós -> Escolha o Nó -> Ações do Nó -> Reconstruir Escravo de Replicação.


ClusterControl executará as seguintes etapas:

  • Parar o PostgreSQL Server

  • Remover conteúdo de seu datadir

  • Transmitir um backup do mestre para o escravo usando pg_basebackup

  • Iniciar o Slave

Você também pode reconstruir um cluster escravo usando o seguinte comando do servidor ClusterControl:

$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log

Os parâmetros são:

  • Replicação:Para monitorar e controlar a replicação de dados.

  • Estágio:Palco/Reconstruir um Escravo de Replicação.

  • Mestre:O mestre de replicação no cluster mestre.

  • Escravo:O escravo de replicação no cluster escravo.

  • ID do cluster:o ID do cluster escravo.

  • Remote-cluster-id:o ID do cluster mestre.

  • Log:Aguarde e monitore as mensagens de trabalho.

Criar cluster a partir do backup

Outra maneira de criar um ambiente de teste é criando um novo cluster a partir de um backup de seu cluster primário. Para isso, vá para ClusterControl -> Selecione seu cluster PostgreSQL -> Backup. Lá, escolha o backup a ser restaurado na lista.


Agora, você pode restaurar esse backup em seu banco de dados atual, em um nó separado, ou criar um novo cluster a partir desse backup.


A opção “Create Cluster From Backup” criará um novo Cluster PostgreSQL a partir do backup selecionado.


Você precisa adicionar as credenciais do SO e do banco de dados e as informações para implantar o novo cluster. Quando esse trabalho for concluído, você verá o novo cluster na interface do usuário do ClusterControl.


Restaurar backup no host autônomo

Na mesma seção Backup, você pode escolher a opção “Restaurar e verificar em host autônomo” para restaurar um backup em um nó separado.


Aqui você pode especificar se deseja que o ClusterControl instale o software no novo nó e desative o firewall ou o AppArmor/SELinux (dependendo do sistema operacional). Você pode manter o nó em execução ou o ClusterControl pode encerrar o serviço de banco de dados até a próxima tarefa de restauração. Quando terminar, você verá o backup restaurado/verificado na lista de backups marcado com um visto.


Se você não quiser fazer essa tarefa manualmente, poderá agendar esse processo usando o recurso Verificar backup para repetir esse trabalho periodicamente em um trabalho de backup.

Verificação automática de backup do ClusterControl

No ClusterControl -> Selecione seu PostgreSQL Cluster -> Backup -> Criar Backup.


O recurso de verificação automática de backup está disponível para os backups agendados. Ao agendar um backup, além de selecionar as opções comuns como método ou armazenamento, você também precisa especificar agendamento/frequência.

Usando o ClusterControl, você pode escolher diferentes métodos de backup, dependendo da tecnologia do banco de dados, e, na mesma seção, pode escolher o servidor do qual deseja fazer o backup, onde deseja armazenar o backup , e se você deseja fazer upload do backup para a nuvem (AWS, Azure ou Google Cloud). Você também pode compactar e criptografar seu backup e especificar o período de retenção.


Para usar o recurso Verificar backup, você precisa de um host dedicado (ou VM) que não faça parte do cluster. O ClusterControl instalará o software e restaurará o backup neste host sempre que o trabalho for executado.

Após a restauração, você pode ver o ícone de verificação na seção ClusterControl Backup, o mesmo que você terá fazendo a verificação no modo manual do ClusterControl, com a diferença de que você não precisa se preocupar sobre a tarefa de restauração. ClusterControl irá restaurar o backup sempre automaticamente.

Conclusão

Implantar um ambiente de teste sempre que você precisar pode ser uma tarefa demorada e é difícil mantê-lo atualizado. O resultado disso é que às vezes as empresas não testam novos lançamentos ou o teste não está correto, por exemplo, usando um ambiente diferente do ambiente de produção.

Como você pode ver, o ClusterControl permite implantar o mesmo ambiente que você está usando na produção com apenas alguns cliques, ou até mesmo automatizar o processo para evitar qualquer tarefa manual.