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

Pacotes PGLogical 1.1 para PostgreSQL 9.6beta1


Disponibilizamos pacotes pglogical 1.1 para PostgreSQL 9.6beta1 para distribuições baseadas em rpm e deb. Eles estão disponíveis para instalação em nosso repositório padrão de pacotes pglogical.

Você pode perguntar por que lançamos pacotes para a versão beta do Postgres? Bem, uma das razões é que você pode usar o pglogical para replicar seu banco de dados PostgreSQL 9.5 ou 9.4 existente para o 9.6beta1 em tempo real e executar testes nele para ajudar a eliminar quaisquer bugs restantes na versão beta. Aqui está um tutorial rápido sobre como fazer isso.



O primeiro passo é instalar o PostgreSQL 9.6beta1, verifique o anúncio de lançamento para obter informações sobre como fazer isso. O segundo passo é instalar o pglogical conforme explicado na página de instruções de instalação.

Agora, para a configuração real da replicação. É bastante fácil. Comece verificando se o PostgreSQL está configurado para permitir a replicação lógica:
wal_level = 'logical'
max_worker_processes = 10   # one per database needed on provider node
                            # one per node needed on subscriber node
max_replication_slots = 10  # one per node needed on provider node
max_wal_senders = 10        # one per node needed on provider node
shared_preload_libraries = 'pglogical'

Alterar as configurações acima requer a reinicialização do servidor.

Você também deve permitir conexões de replicação de entrada em pg_hba.conf (assim como ao configurar a replicação de streaming físico). A linha em pg_hba.conf deve ser algo assim:
host    replication     postgres        10.0.0.2/32            md5

Consulte a página de documentação do pg_hba para obter mais informações.

Em seguida, instale a extensão pglogical no banco de dados do provedor e crie o nó pglogical lá:
CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'provider1',
    dsn := 'host=providerhost port=5432 dbname=db'
);

Em seguida, faça o mesmo no novo banco de dados 9.6:
CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=subscriberhost port=5432 dbname=db'
);

Observe que as cadeias de conexão devem levar ao banco de dados no qual você está executando esses comandos.

De volta ao banco de dados do provedor, adicione as tabelas que deseja replicar ao default conjunto de replicação. Uma maneira simples de fazer isso é adicionar todas as tabelas no public esquema assim:
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

E, finalmente, novamente no banco de dados do assinante, crie uma assinatura que se conecte ao provedor e comece a replicar.
SELECT pglogical.create_subscription(
    subscription_name := 'subscription1',
    provider_dsn := 'host=providerhost port=5432 dbname=db',
    synchronize_structure := true
);

Aqui a cadeia de conexão deve ser a mesma usada ao criar o nó pglógico do provedor. A synchronize_structure := true significa que o pglogical irácopiar todas as estruturas de tabelas da base de dados do fornecedor para a base de dados do assinante (usando o padrão pg_dump ).

E é isso, agora você tem uma replicação funcional entre seu banco de dados PostgreSQL 9.5 ou 9.4 existente e o novo PostgreSQL 9.6beta1.

Verifique a documentação do pglogical e as páginas do projeto para obter informações adicionais sobre as funções usadas neste post e sobre como fazer mais do que apenas uma simples replicação.