pg_basebackup

pg_basebackup — realiza uma cópia de segurança base de uma instância do PostgreSQL

Sinopse

pg_basebackup [opção...]

Descrição

O utilitário pg_basebackup é usado para produzir uma cópia de segurança base de um agrupamento de bancos de dados (instância) do PostgreSQL em execução. A cópia de segurança é feita sem afetar os outros clientes do banco de dados, e pode ser usada tanto para recuperação pontual (veja Seção 25.3), quanto como ponto de partida para um servidor em-espera de envio de registros ou replicação por fluxo (veja Seção 26.2).

O utilitário pg_basebackup pode produzir uma cópia de segurança completa ou incremental do banco de dados. Quando usado para produzir uma cópia de segurança completa, ele cria uma cópia exata dos arquivos do agrupamento de banco de dados. Quando usado para produzir uma cópia de segurança incremental, alguns arquivos que fariam parte de uma cópia de segurança completa podem ser substituídos por versões incrementais dos mesmos arquivos, contendo apenas os blocos que foram modificados desde a cópia de segurança de referência. Uma cópia de segurança incremental não pode ser usada diretamente; em vez disso, primeiro é necessário usar pg_combinebackup para combiná-la com as cópias de segurança anteriores das quais ela depende. Veja Seção 25.3.3 para obter mais informações sobre cópias de segurança incrementais, e Seção 25.3.5 para obter instruções sobre como recuperar uma cópia de segurança.

Em qualquer modo, o utilitário pg_basebackup garante que o servidor entre e saia do modo de cópia de segurança automaticamente. As cópias de segurança são sempre produzidas para todo o agrupamento de bancos de dados; não é possível produzir cópia de segurança de bancos de dados individuais ou de objetos de banco de dados. Para cópias de segurança seletivas, deve ser usada outra ferramenta como o pg_dump.

A cópia de segurança é produzida em uma conexão regular do PostgreSQL que usa o protocolo de replicação. A conexão deve ser feita com um ID de usuário que tenha permissão de REPLICATION (veja Seção 21.2), ou seja, um superusuário, e o arquivo pg_hba.conf deve permitir conexão de replicação. O servidor também deve ser configurado com max_wal_senders definido alto o suficiente para fornecer pelo menos um processo walsender para a cópia de segurança e mais um para fluxo de WAL (se usado).

Pode haver vários utilitários pg_basebackup em execução ao mesmo tempo, mas geralmente é melhor, do ponto de vista de desempenho, produzir apenas uma cópia de segurança e copiar o resultado.

O utilitário pg_basebackup pode produzir uma cópia de segurança base não apenas de um servidor principal, mas também de um servidor em-espera. Para produzir uma cópia de segurança de um servidor em-espera, deve-se configurar o servidor em-espera para que este possa aceitar conexões de replicação (ou seja, definir max_wal_senders e hot_standby e configurar o arquivo pg_hba.conf de forma apropriada). Também será necessário ativar full_page_writes no servidor primário.

Note que há algumas limitações ao produzir uma cópia de segurança de um servidor em-espera:

  • Não é criado o arquivo de histórico de cópia de segurança no agrupamento de bancos de dados cuja cópia de segurança está sendo feita.

  • O utilitário pg_basebackup não pode forçar o servidor em-espera mudar para um novo arquivo de WAL no final da cópia de segurança. Quando se está usando -X none, se a atividade de escrita no servidor primário estiver baixa, o utilitário pg_basebackup pode precisar aguardar muito tempo até que o último arquivo de WAL necessário para a cópia de segurança seja alternado e arquivado. Neste caso, pode ser útil executar pg_switch_wal no servidor primário para acionar uma troca de arquivo de WAL imediata.

  • Se o servidor em-espera for promovido a servidor principal durante a cópia de segurança base, a cópia de segurança base irá falhar.

  • Todos os registros do WAL necessários para a cópia de segurança devem conter gravações de página inteira suficientes, o que exige que seja ativado full_page_writes no servidor primário.

Sempre que o utilitário pg_basebackup estiver realizando uma cópia de segurança base, a visão do servidor pg_stat_progress_basebackup irá relatar o progresso da cópia de segurança. Veja Relatório de progresso da cópia de segurança base para obter detalhes.

Opções

As seguintes opções de linha de comando controlam o local e o formato da saída:

-D diretório
--pgdata=diretório

Define o diretório de destino para escrever a saída. O utilitário pg_basebackup irá criar este diretório (e qualquer diretório ancestral ausente) se este não existir. Se já existir, deverá estar vazio.

Quando a cópia de segurança está no formato tar, o diretório de destino pode ser especificado como - (hífen), fazendo com que o arquivo tar seja escrito na stdout.

Esta opção é requerida.

-F formato
--format=formato

Seleciona o formato para a saída. O formato pode ser um dos seguintes:

p
plain

Escreve a saída como arquivos simples, com a mesma disposição do diretório de dados e espaços de tabela do servidor de origem. Quando a instância não tiver espaços de tabelas adicionais, todo o banco de dados será colocado no diretório de destino. Se a instância tiver espaços de tabelas adicionais, o diretório de dados principal será colocado no diretório de destino, mas todos os outros espaços de tabelas serão colocados no mesmo caminho absoluto do servidor de origem. (Veja --tablespace-mapping para mudar este comportamento.)

Este é o formato padrão.

t
tar

Escreve a saída como arquivos tar no diretório de destino. O conteúdo do diretório de dados principal será escrito em um arquivo chamado base.tar, e cada espaço de tabelas será escrito em um arquivo tar separado com o nome do OID desse espaço de tabelas.

Se o diretório de destino for especificado como - (hífen), o conteúdo do tar será escrito na saída padrão, adequado para enviar para (por exemplo) o gzip. Isto só é permitido se a instância não tiver espaços de tabelas adicionais, e não for usado fluxo de WAL.

-i old_manifest_file
--incremental=old_manifest_file

Realiza uma cópia de segurança incremental. O manifesto da cópia de segurança para a cópia de segurança de referência deve ser fornecido e será carregado no servidor, que responderá enviando a cópia de segurança incremental solicitada.

-R
--write-recovery-conf

Cria o arquivo standby.signal e anexa as definições de conexão ao arquivo postgresql.auto.conf no diretório de destino (ou dentro do arquivo base ao usar o formato tar). Isto facilita a configuração de um servidor em-espera usando os resultados da cópia de segurança base.

O arquivo postgresql.auto.conf irá registrar as definições de conexão e, se especificado, o encaixe de replicação que o pg_basebackup está usando, para que a replicação por fluxo (streaming) e a sincronização de encaixes de replicação lógica usem as mesmas definições posteriormente. O nome do banco de dados será registrado somente se tiver sido especificado explicitamente na cadeia de caracteres de conexão ou na variável de ambiente..

-t destino
--target=destino

Indica ao servidor onde colocar a cópia de segurança base. O destino padrão é client, especificando que a cópia de segurança deve ser enviada para a máquina onde pg_basebackup está sendo executado. se o destino for definido como servidor:/algum/caminho, a cópia de segurança será armazenada na máquina onde o servidor está sendo executado, no diretório /algum/caminho. Armazenar uma cópia de segurança no servidor requer privilégios de superusuário ou privilégios da função de banco de dados pg_write_server_files. Se o destino for definido como blackhole (buraco negro), o conteúdo será descartado e não armazenado em nenhum lugar. Isto deve ser usado apenas para fins de teste, porque não haverá uma cópia de segurança real.

Como o fluxo do WAL é implementado pelo pg_basebackup em vez do servidor, esta opção não pode ser usada junto com -Xstream. Como esta é a opção padrão, ao especificá-la também deverá ser especificado -Xfetch ou -Xnone.

-T olddir=newdir
--tablespace-mapping=olddir=newdir

Realoca o espaço de tabelas no diretório olddir para newdir durante a cópia de segurança. Para ser eficaz, olddir deve corresponder exatamente à especificação do caminho do espaço de tabelas, conforme definido no servidor de origem. (Mas não é um erro se não houver um espaço de tabelas em olddir no servidor de origem.) Enquanto isto, newdir é um diretório no sistema de arquivos do hospedeiro receptor. Como no diretório de destino principal, newdir não precisa existir, mas se existir, deverá estar vazio. Tanto olddir quanto newdir devem ser caminhos absolutos. Se um dos caminhos precisar conter o sinal de igual (=), este deverá ser precedido por uma contrabarra. Esta opção pode ser especificada várias vezes para vários espaços de tabela.

Se um espaço de tabelas for realocado dessa maneira, os vínculos simbólicos dentro do diretório de dados principal serão atualizados para apontar para o novo local. Portanto, o novo diretório de dados estará pronto para ser usado pela nova instância do servidor, com todos os espaços de tabelas nos locais atualizados.

No momento, esta opção funciona apenas com formato de saída simples; será ignorada se for selecionado o formato tar.

--waldir=waldir

Define o diretório para escrever os arquivos de WAL (write-ahead log). Por padrão, os arquivos de WAL são colocados no subdiretório pg_wal do diretório de destino, mas pode ser usada esta opção para colocá-los em outro lugar. waldir deve ser um caminho absoluto. Como o caso do diretório de destino principal, waldir não precisa existir, mas se existir, deverá estar vazio. Esta opção só pode ser especificada quando a cópia de segurança estiver no formato simples.

-X método
--wal-method=método

Inclui os arquivos de WAL (write-ahead log) necessários na cópia de segurança. Isto incluirá todos os registros de transação gerados durante a cópia de segurança. A menos que seja especificado o método none, é possível iniciar o postmaster no diretório de destino sem necessidade de consultar os registros de transação, tornando a saída uma cópia de segurança inteiramente autônoma.

Os seguintes métodos para coletar registros de transação têm suporte:

n
none

Não inclui os registros de transação na cópia de segurança.

f
fetch

Os arquivos de registro de transação são coletados no final da cópia de segurança. Portanto, é necessário que o parâmetro wal_keep_size do servidor de origem seja definido alto o suficiente para que os dados de registro de transação necessários não sejam removidos antes do final da cópia de segurança. Se os dados de registro necessários tiverem sido reciclados antes da hora de transferi-los, a cópia de segurança irá falhar se tornando inutilizável.

Quando é usado o formato tar, os arquivos de registro de transação são incluídos no arquivo base.tar.

s
stream

Transmite os dados de registro de transação enquanto a cópia de segurança está sendo feita. Este método abre uma segunda conexão com o servidor, iniciando o fluxo de registro de transação em paralelo, enquanto executa a cópia de segurança. Portanto, são necessárias duas conexões de replicação, e não apenas uma. Contanto que o cliente possa acompanhar os dados de registro de transação, o uso desse método não requer que sejam salvos registros de transação extras no servidor de origem.

Quando é usado o formato tar, os arquivos de registro de transação são escritos em um arquivo separado chamado pg_wal.tar (se o servidor for de uma versão anterior a 10, o arquivo se chamará pg_xlog.tar).

Este valor é o padrão.

-z
--gzip

Ativa a compressão gzip da saída do arquivo tar, com o nível de compressão padrão. A compressão só está disponível ao usar o formato tar, sendo adicionado automaticamente o sufixo .gz a todos os nomes de arquivo tar.

-Z nível
-Z [{client|server}-]método[:detalhe]
--compress=nível
--compress=[{client|server}-]método[:detalhe]

Requer a compressão da cópia de segurança. Se for incluído client ou server, isto especifica onde a compressão deve ser realizada. A compressão no servidor reduzirá a largura de banda de transferência, mas aumentará o consumo de CPU do servidor. O padrão é client exceto quando é usado --target. Neste caso, a cópia de segurança não está sendo enviado para o cliente, então somente a compressão no servidor faz sentido. Quando é usado -Xstream, que é o padrão, a compressão do lado do servidor não será aplicada ao WAL. Para comprimir o WAL, deve ser usada a compressão do lado do cliente ou especificado -Xfetch.

O método de compressão pode ser definido como gzip, lz4, zstd, none para nenhuma compressão, ou um número inteiro (sem compressão se for 0, ou gzip se for maior que 0). Opcionalmente, pode-se especificar uma cadeia de caracteres com detalhes da compressão. Se a cadeia de caracteres de detalhes for um número inteiro, ela especifica o nível de compressão. Caso contrário, deve ser uma lista de itens separados por vírgulas, cada um com o formato palavra-chave ou palavra-chave=valor. No momento, as palavras-chave com suporte são: level, long e workers. A cadeia de caracteres de detalhes não pode ser usada quando o método de compressão é especificado como um número inteiro simples.

Caso não seja especificado nenhum nível de compressão, será utilizado o nível de compressão padrão. Se for especificado apenas o nível sem mencionar um algoritmo, será usada a compressão gzip se o nível for maior que 0, e nenhuma compressão será usada se o nível for igual a 0.

Quando é usado o formato tar juntamente com gzip, lz4 ou zstd, será adicionado automaticamente o sufixo .gz, .lz4 ou .zst, respectivamente, a todos os nomes de arquivo tar. Quando é usado o formato simples, a compressão do lado cliente pode não ser especificada, mas ainda será possível solicitar a compressão do lado do servidor. Se isto for feito, o servidor irá comprimir a cópia de segurança para transmissão e o cliente irá descomprimir e extrair.

Quando esta opção é usada em combinação com -Xstream, o arquivo pg_wal.tar será comprimido usando o gzip se estiver selecionada a compressão gzip do lado do cliente, mas não será comprimido se for selecionado qualquer outro algoritmo de compressão, ou se a compressão do lado do servidor estiver selecionada.

As seguintes opções de linha de comando controlam a geração da cópia de segurança e a chamada do programa:

-c {fast|spread}
--checkpoint={fast|spread}

Define o modo de ponto de verificação como fast (rápido/imediato), ou spread (disperso, o padrão) (veja Seção 25.3.4).

-C
--create-slot

Especifica que o encaixe (slot) de replicação indicado pela opção --slot deve ser criado antes de iniciar a cópia de segurança. É relatado um erro se o encaixe já existir.

-l rótulo
--label=rótulo

Define o rótulo para a cópia de segurança. Se não for especificado nenhum rótulo, será usado o valor padrão pg_basebackup base backup.

-n
--no-clean

Por padrão, quando o utilitário pg_basebackup termina com um erro, ele remove todos os diretórios que possa ter criado antes de descobrir que não pode terminar seu trabalho (por exemplo, o diretório de destino e o diretório de WAL). Esta opção inibe a limpeza e, portanto, serve para depuração.

Note que os diretórios do espaço de tabelas não são limpos de nenhuma maneira.

-N
--no-sync

Por padrão, o utilitário pg_basebackup irá aguardar que todos os arquivos sejam escritos com segurança no disco. Esta opção faz com que o pg_basebackup retorne sem esperar, o que é mais rápido, mas significa que uma falha subsequente do sistema operacional poderá deixar a cópia de segurança base corrompida. Geralmente, esta opção serve para testes, mas não deve ser usada ao criar uma instalação de produção.

-P
--progress

Ativa o relatório de progresso, que produz um relatório de progresso aproximado durante a cópia de segurança. Como o banco de dados pode mudar durante a cópia de segurança, é apenas uma aproximação, podendo não terminar exatamente em 100%. Em particular, quando o registro do WAL é incluído na cópia de segurança, a quantidade total de dados não pode ser estimada com antecedência e, neste caso, o tamanho estimado do destino aumentará assim que ultrapassar a estimativa total sem WAL.

-r taxa
--max-rate=taxa

Define a taxa de transferência máxima na qual os dados são coletados no servidor de origem. Pode servir para limitar o impacto do utilitário pg_basebackup no servidor. Os valores são em kilobytes por segundo. Deve ser usado o sufixo M para indicar megabytes por segundo. O sufixo k também é aceito, mas não tem efeito. Os valores válidos estão entre 32 kilobytes e 1024 megabytes por segundo.

Esta opção sempre afeta a transferência do diretório de dados. A transferência de arquivos de WAL só será afetada se o método de coleta for fetch.

-S nome_do_encaixe
--slot=nome_do_encaixe

Esta opção só pode ser usada em conjunto com -X stream. Faz com que o fluxo do WAL use o encaixe de replicação especificado. Se a cópia de segurança base for usada por um servidor em-espera de replicação por fluxo usando um encaixe de replicação, o servidor em-espera deverá usar o mesmo nome do encaixe de replicação que primary_slot_name. Isto garante que o servidor principal não irá remover nenhum dado do WAL necessário, no período entre o final da cópia de segurança base e o início da replicação por fluxo no novo servidor em-espera.

O encaixe de replicação especificado deve existir, a menos que também seja usada a opção -C.

Se esta opção não for especificada, e o servidor oferecer suporte a encaixes de replicação temporários (versão 10 e posterior), um encaixe de replicação temporário será usado automaticamente para transmissão do WAL.

--sync-method=método

Quando definido como fsync, que é o padrão, o utilitário pg_basebackup irá abrir e sincronizar recursivamente todos os arquivos no diretório de cópia de segurança. Quando é usado o formato simples (plain), a busca por arquivos seguirá os links simbólicos para o diretório do WAL e para cada espaço de tabelas configurado.

No Linux, pode ser usado o utilitário syncfs para solicitar ao sistema operacional que sincronize todo o sistema de arquivos que contém o diretório de cópia de segurança. Quando é usado o formato simples, o utilitário pg_basebackup também irá sincronizar os sistemas de arquivos que contêm os arquivos do WAL e cada espaço de tabelas. Veja recovery_init_sync_method para obter informações sobre as ressalvas a serem consideradas ao usar o syncfs.

Esta opção não tem efeito quando é usado --no-sync.

-v
--verbose

Ativa o modo verboso. Mostra algumas etapas extras durante o início e o término, além de mostrar o nome exato do arquivo que está sendo processado no momento, se o relatório de progresso também estiver ativo.

--manifest-checksums=algoritmo

Especifica o algoritmo de soma de verificação (checksum) que deve ser aplicado a cada arquivo incluído no manifesto da cópia de segurança No momento, os algoritmos disponíveis são NONE, CRC32C, SHA224, SHA256, SHA384, e SHA512. O valor padrão é CRC32C.

Se for usado NONE, o manifesto da cópia de segurança não conterá nenhuma soma de verificação. Caso contrário, irá conter a soma de verificação de cada arquivo na cópia de segurança usando o algoritmo especificado. Além disso, o manifesto sempre conterá a soma de verificação SHA256 de seu próprio conteúdo. Os algoritmos SHA consomem muito mais CPU do que CRC32C, portanto, selecionar um deles pode aumentar o tempo necessário para concluir a cópia de segurança.

O uso de uma função de hash SHA fornece um resumo criptograficamente seguro de cada arquivo para usuários que desejam verificar se a cópia de segurança não foi adulterada, enquanto o algoritmo CRC32C fornece uma soma de verificação muito mais rápida de calcular; serve para detectar erros devido a alterações acidentais, mas não é resistente a modificações maliciosas. Note que, para ser útil contra um agressor que tenha acesso à cópia de segurança, o manifesto da cópia de segurança precisa ser armazenado com segurança em outro lugar, ou verificado de outra forma, para não ter sido modificado desde que a cópia de segurança foi feita.

Pode ser usado o utilitário pg_verifybackup para verificar a integridade da cópia de segurança em relação ao manifesto da cópia de segurança.

--manifest-force-encode

Força todos os nomes de arquivo no manifesto da cópia de segurança serem codificados em hexadecimal. Se esta opção não for especificada, apenas nomes de arquivos não UTF8 serão codificados em hexadecimal. Esta opção destina-se, principalmente, para testar se as ferramentas que leem o arquivo de manifesto de cópia de segurança lidam adequadamente com este caso.

--no-estimate-size

Impede que o servidor estime a quantidade total de dados da cópia de segurança que serão transmitidos, resultando com que a coluna backup_total da visão pg_stat_progress_basebackup seja sempre NULL.

Sem esta opção, a cópia de segurança começará enumerando o tamanho de todo o banco de dados e, em seguida, voltará e transmitirá o conteúdo real. Isto pode fazer com que a cópia de segurança demore um pouco mais e, em particular, levará mais tempo até que os primeiros dados sejam transmitidos. Esta opção serve para evitar este tempo de estimativa, caso seja muito longo.

Esta opção não é permitida ao usar --progress.

--no-manifest

Desativa a geração do manifesto da cópia de segurança. Se esta opção não for especificada, o servidor irá gerar e enviar um manifesto da cópia de segurança que poderá ser verificado usando o utilitário pg_verifybackup. O manifesto é uma lista de todos os arquivos presentes na cópia de segurança, com exceção de quaisquer arquivos de WAL que possam ser incluídos. Também armazena o tamanho, a hora da última modificação, e uma soma de verificação opcional para cada arquivo.

--no-slot

Impede a criação de um encaixe de replicação temporário para a cópia de segurança.

Por padrão, se for selecionado o fluxo dos registros de transação, mas não for fornecido nenhum nome de encaixe com a opção -S, será criado um encaixe de replicação temporário (se tiver suporte no servidor de origem).

O objetivo principal dessa opção é permitir produzir uma cópia de segurança base quando o servidor não tiver encaixes de replicação livres. Usar um encaixe de replicação é quase sempre o preferido, porque evita que o WAL necessário seja removido pelo servidor durante a cópia de segurança.

--no-verify-checksums

Desativa a verificação de somas de verificação, se estiverem ativas no servidor de onde a cópia de segurança base é obtida.

Por padrão, as somas de verificação são verificadas, e as falhas de soma de verificação resultarão em um status de saída diferente de zero. Entretanto, a cópia de segurança base não será removida neste caso, como se a opção --no-clean tivesse sido usada. As falhas de verificação da soma de verificação também são relatadas na visão pg_stat_database.

As seguintes opções de linha de comando controlam a conexão com o servidor de origem:

-d cadeia_de_caracteres_de_conexão
--dbname=cadeia_de_caracteres_de_conexão

Especifica os parâmetros usados para conectar ao servidor como uma cadeia de caracteres de conexão; os parâmetros da cadeia de caracteres de conexão têm precedência sobre quaisquer opções de linha de comando conflitantes.

Esta opção se chama --dbname para manter a consistência com outras aplicações cliente, mas como o utilitário pg_basebackup não se conecta a nenhum banco de dados específico no agrupamento, qualquer nome de banco de dados incluído na cadeia de caracteres de conexão será ignorado pelo servidor. Entretanto, um nome de banco de dados fornecido dessa forma substitui o nome de banco de dados padrão (replication) para fins de consulta da senha da conexão de replicação em ~/.pgpass. Da mesma forma, os intermediários (middlewares) ou procuradores (proxies) usados ​​na conexão com o PostgreSQL podem utilizar o nome para fins como roteamento de conexão. O nome do banco de dados também pode ser usado pela sincronização de encaixes de replicação lógica.

-h hospedeiro
--host=hospedeiro

Especifica o nome do hospedeiro da máquina na qual o servidor está sendo executado. Se começar com uma barra, será usado como o diretório para o soquete de domínio Unix. O padrão é obtido da variável de ambiente PGHOST, se definida, caso contrário, é tentada uma conexão de soquete de domínio Unix.

-p porta
--port=porta

Especifica a porta TCP, ou extensão de arquivo de soquete de domínio Unix local, na qual o servidor está aguardando conexões. O padrão é usar a variável de ambiente PGPORT, se estiver definida, ou o padrão compilado.

-s intervalo
--status-interval=intervalo

Especifica o número de segundos entre os pacotes de status enviados de volta ao servidor de origem. Valores menores permitem monitoramento mais preciso do andamento da cópia de segurança do servidor. O valor zero desativa completamente as atualizações periódicas de status, embora uma atualização ainda seja enviada quando solicitada pelo servidor, para evitar desconexões baseadas em tempo esgotado (timeout). O valor padrão é de 10 segundos.

-U nome_do_usuário
--username=nome_do_usuário

Nome de usuário para se conectar como.

-w
--no-password

Nunca emite uma solicitação de senha. Se o servidor exigir autenticação por senha, e uma senha não estiver disponível por outros meios, como o arquivo .pgpass, a tentativa de conexão irá falhar. Esta opção pode ser útil em tarefas em lote e scripts nos quais nenhum usuário está presente para inserir uma senha.

-W
--password

Força o pg_basebackup solicitar a senha antes de conectar ao banco de dados.

Esta opção nunca é essencial, porque o pg_basebackup solicita automaticamente a senha se o servidor exigir autenticação por senha. No entanto, o pg_basebackup irá desperdiçar uma tentativa de conexão ao descobrir que o servidor pede uma senha. Em alguns casos vale a pena digitar -W para evitar a tentativa extra de conexão.

Também estão disponíveis outras opções:

-V
--version

Mostra a versão do pg_basebackup, e termina.

-?
--help

Mostra ajuda sobre os argumentos de linha de comando do utilitário pg_basebackup, e termina.

Variáveis de ambiente

Este utilitário, como a maioria dos outros utilitários do PostgreSQL, usa as variáveis de ambiente com suporte pela libpq (veja Variáveis ​​de ambiente).

A variável de ambiente PG_COLOR especifica se devem ser usadas cores nas mensagens de diagnóstico. Os valores possíveis são always, auto e never.

Notas

No início da cópia de segurança, precisa ser executado um ponto de verificação no servidor de origem. Isto pode levar algum tempo (especialmente se não for usada a opção --checkpoint=fast), durante o qual o utilitário pg_basebackup parecerá estar ocioso.

A cópia de segurança incluirá todos os arquivos no diretório de dados e espaços de tabelas, incluindo os arquivos de configuração e quaisquer arquivos adicionais colocados no diretório por terceiros, exceto alguns arquivos temporários gerenciados pelo PostgreSQL e arquivos do sistema operacional. Mas apenas são copiados os arquivos e diretórios regulares, exceto que são preservados os vínculos simbólicos usados para espaços de tabelas. Os vínculos simbólicos apontando para certos diretórios conhecidos do PostgreSQL são copiados como diretórios vazios. Outros vínculos simbólicos e arquivos de dispositivos especiais são ignorados. Veja Seção 54.4 para obter detalhes precisos.

No formato simples, os espaços de tabelas serão copiados para o mesmo caminho que possuem no servidor de origem, a menos que seja usada a opção --tablespace-mapping. Sem esta opção, a execução de uma cópia de segurança base de formato simples no mesmo hospedeiro que o servidor não funcionará, se estiverem em uso espaços de tabelas, porque a cópia de segurança teria que ser escrita nos mesmos locais de diretório que os espaços de tabelas originais.

Quando é usado o formato tar, é responsabilidade do usuário descomprimir cada arquivo tar antes de iniciar o servidor PostgreSQL que usa os dados. Se houver espaços de tabelas adicionais, os arquivos tar para os mesmos precisam ser descomprimidos nos locais corretos. Neste caso, os vínculos simbólicos para estes espaços de tabelas serão criados pelo servidor segundo o conteúdo do arquivo tablespace_map, que está incluído no arquivo base.tar.

O utilitário pg_basebackup funciona com servidores da mesma versão, ou de uma versão principal mais antiga, até a 9.1. Entretanto, o modo de fluxo de WAL (-X stream) só funciona com a versão do servidor 9.3 e posteriores, e o formato tar (--format=tar) só funciona com a versão do servidor 9.5 e posteriores, e a cópia de segurança incremental (--incremental) só funciona com a versão 17 e posteriores do servidor.

O utilitário pg_basebackup irá preservar as permissões de grupo para os arquivos de dados, se na instância de origem as permissões de grupo estiverem ativas.

Exemplos

Para produzir uma cópia de segurança base do servidor em mydbserver, e armazená-la no diretório local /usr/local/pgsql/data:

$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data

Para produzir uma cópia de segurança base do servidor local com um arquivo tar comprimido para cada espaço de tabela, e armazená-la no diretório backup, mostrando o relatório de andamento durante a execução:

$ mkdir backup
$ pg_basebackup -D backup -Ft -z -P
71518/71518 kB (100%), 1/1 tablespace
$ ls backup/
backup_manifest  base.tar.gz  pg_wal.tar.gz
$ tar tzvf backup/pg_wal.tar.gz
-rw------- postgres/postgres 16777216 2026-04-03 08:18 ...

Para produzir uma cópia de segurança base do servidor banco de dados local com um único espaço de tabelas, e comprimi-la com bzip2:

$ rm backup/*
$ pg_basebackup -D - -Ft -X fetch | bzip2 > backup/backup.tar.bz2
$ ls backup/
backup.tar.bz2
$ tar xjvf backup/backup.tar.bz2
backup_label
tablespace_map
pg_stat_tmp/
...
backup_manifest

(Este comando irá falhar se houver vários espaços de tabelas no servidor de banco de dados.)

Para produzir uma cópia de segurança de um banco de dados local onde o espaço de tabelas em /opt/ts é realocado para ./backup/ts:

$ pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts

Para produzir uma cópia de segurança do servidor local, armazenada no diretório backup, comprimida com gzip no nível 9, com um arquivo tar para cada espaço de tabelas:

$ pg_basebackup -D backup -Ft --compress=gzip:9

Veja também

pg_dump, pg_receivewal, pg_verifybackup, Relatório de progresso da cópia de segurança base