52.54. pg_subscription #

O catálogo pg_subscription armazena informações sobre todas as subscrições de replicação lógica existentes. Para obter mais informações sobre replicação lógica, veja Replicação lógica.

Diferentemente da maioria dos catálogos de sistema, o catálogo pg_subscription é compartilhado por todos os bancos de dados da instância: há apenas uma cópia de pg_subscription por instância, e não uma por banco de dados.

O acesso à coluna subconninfo é revogado para usuários normais, porque pode conter senhas em texto puro.

Tabela 52.54. Colunas de pg_subscription

Coluna Tipo de dados

Descrição

oid oid

Identificador da linha

subdbid oid (referencia pg_database.oid)

OID do banco de dados onde a subscrição reside

subskiplsn pg_lsn

LSN de término da transação cujas alterações devem ser ignoradas, se for um LSN válido; caso contrário 0/0.

subname name

Nome da subscrição

subowner oid (referencia pg_authid.oid)

Dono da subscrição

subenabled bool

Se verdade, a subscrição está ativa, devendo estar replicando

subbinary bool

Se verdade, a subscrição solicitará que o editor envie dados no formato binário

substream char

Controla como lidar com o fluxo das transações em andamento: f = impede a transmissão de transações em andamento. t = escreve as alterações das transações em andamento no disco e as aplica imediatamente após a transação ser efetivada no publicador e recebida pelo subscritor. p = aplica as alterações diretamente usando um processo trabalhador de aplicação paralela, se disponível (o mesmo que t se nenhum processo trabalhador estiver disponível)

subtwophasestate char

Códigos de estado para o modo de duas fases: d = desabilitado, p = habilitação pendente, e = habilitado

subdisableonerr bool

Se verdade, a subscrição será desativada caso um de seus processos trabalhadores detecte um erro.

subpasswordrequired bool

Se verdade, a subscrição exigirá a definição de uma senha para autenticação.

subrunasowner bool

Se verdade, a subscrição será executada com as permissões do dono da subscrição.

subfailover bool

Se verdade, os encaixes de replicação associados (isto é, o encaixe principal e os slots de sincronização da tabela) no banco de dados de origem estão habilitados para serem sincronizados com os bancos de dados em-espera

subconninfo text

Cadeia de caracteres de conexão com o banco de dados publicador (upstream)

subslotname name

Nome do encaixe (slot) de replicação no banco de dados publicador (também usado para o nome de origem da replicação local); nulo representa NONE

subsynccommit text

A configuração de synchronous_commit para os processos trabalhadores da subscrição usarem

subpublications text[]

Matriz de nomes de publicações subscritas. Faz referência às publicações definidas no banco de dados publicador. Para mais informações sobre publicações, veja Publicação.

suborigin text

O valor de origem deve ser none ou any. O padrão é any. Se for none, a subscrição irá solicitar ao publicador que envie apenas alterações que não possuam uma origem. Se for any, o publicador irá enviar as alterações independentemente de sua origem.


Exemplo 52.28. Exemplo do tradutor

Subscrições criadas no banco de dados

Uso do catálogo pg_subscription para mostrar todas as subscrições criadas no banco de dados ana da usuária ana, e uso também do meta-comando \dRs do psql com o mesmo objetivo. Os comandos abaixo foram executados no servidor de destino (subscritor), e não no servidor de origem (publicador).

USUÁRIO postgres
postgres=# GRANT pg_create_subscription TO ana;
GRANT ROLE
USUÁRIA ana
ana=> -- CRIAÇÃO DAS TABELAS SUBSCRITAS
ana=> CREATE TABLE autor (...
ana=> CREATE TABLE editora (...
ana=> CREATE TABLE livro (...
CREATE TABLE
ana=> -- CRIAÇÃO DA SUBSCRIÇÃO
ana=> CREATE SUBSCRIPTION biblioteca
ana-> CONNECTION 'dbname=ana host=192.168.3.5 user=ana password=anapwd'
ana-> PUBLICATION biblioteca;
NOTA:  criado o encaixe de replicação "biblioteca" no publicador
CREATE SUBSCRIPTION
ana=> \dRs

            Lista de subscrições
    Nome    | Dono | Ativado |  Publicação
------------+------+---------+--------------
 biblioteca | ana  | t       | {biblioteca}
(1 linha)

USUÁRIO postgres
postgres=# SELECT
postgres-#     oid, subdbid, subskiplsn,  subname, subowner::regrole,
postgres-#     subenabled, subbinary, substream, subtwophasestate,
postgres-#     subdisableonerr, subpasswordrequired, subrunasowner,
postgres-#     subfailover, subconninfo, subslotname, subsynccommit,
postgres-#     subpublications, suborigin
postgres-# FROM pg_subscription\gx

-[ RECORD 1 ]-------+-----------------------------------------------------
oid                 | 17074
subdbid             | 16422
subskiplsn          | 0/0
subname             | biblioteca
subowner            | ana
subenabled          | t
subbinary           | f
substream           | f
subtwophasestate    | d
subdisableonerr     | f
subpasswordrequired | t
subrunasowner       | f
subfailover         | f
subconninfo         | dbname=ana host=192.168.3.5 user=ana password=anapwd
subslotname         | biblioteca
subsynccommit       | off
subpublications     | {biblioteca}
suborigin           | any


52.54.1. Veja também #

CREATE SUBSCRIPTION, ALTER SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION, pg_publication, pg_publication_tables