Perguntas sobre como executar o postgres como Docker Container. 1. Fuso horário, 2. global.stat

Perguntas sobre como executar o postgres como Docker Container. 1. Fuso horário, 2. global.stat

Estou executando o postgres como um Docker Container há algum tempo. Inicialmente, o TZ e o PGTZ não foram configurados, então acho que o padrão era UTC. No meu sistema de desenvolvimento, tentei o seguinte em docker-compose.yml:

  postgres:
    image: postgres:13
    ports: ["5557:5432"]
    restart: unless-stopped
    volumes:
       - ./Index:/var/lib/postgresql/data
    environment:
       TZ: "America/Cayman"
       PGTZ: "America/Cayman"
       POSTGRES_PASSWORD: "postgres"

e isso parece fazer o ajuste ao fuso horário local. Não implantei isso em um sistema ativo porque estou me perguntando se isso vai atrapalhar alguma coisa em relação ao histórico de transações do banco de dados e arquivos de log, etc. A integridade do banco de dados está boa agora e tenho backups bastante antigos. Não tenho certeza se é realmente necessário definir o fuso horário, mas é bom ter todos os contêineres definidos para a zona local em vez de UTC.

A outra questão não está relacionada e é mencionada aqui: AVISO: não foi possível abrir o arquivo de estatísticas "pg_stat_tmp/global.stat": Operação não permitida

Brevemente:

Esse índice do banco de dados é mapeado para uma pasta no host na raiz do pacote Docker, e todo o resto parece funcionar bem no que diz respeito ao banco de dados. Estou usando um Mac, mas se listar a permissão da CLI para a pasta DB, recebo:

-rw-------@  1 sscotti  staff      3 Feb 22 11:01 PG_VERSION
drwx------@  6 sscotti  staff    192 Feb 22 11:54 base
drwx------@ 60 sscotti  staff   1920 Feb 22 16:00 global
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_commit_ts
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_dynshmem
-rw-------@  1 sscotti  staff   4782 Feb 22 11:02 pg_hba.conf
-rw-------@  1 sscotti  staff   1636 Feb 22 11:01 pg_ident.conf
drwx------@  5 sscotti  staff    160 Feb 22 17:46 pg_logical
drwx------@  4 sscotti  staff    128 Feb 22 11:01 pg_multixact
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_notify
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_replslot
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_serial
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_snapshots
drwx------@  2 sscotti  staff     64 Feb 22 16:00 pg_stat
drwx------@  5 sscotti  staff    160 Feb 22 17:50 pg_stat_tmp
drwx------@  3 sscotti  staff     96 Feb 22 11:01 pg_subtrans
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_tblspc
drwx------@  2 sscotti  staff     64 Feb 22 11:01 pg_twophase
drwx------@  4 sscotti  staff    128 Feb 22 11:01 pg_wal
drwx------@  3 sscotti  staff     96 Feb 22 11:01 pg_xact
-rw-------@  1 sscotti  staff     88 Feb 22 11:01 postgresql.auto.conf
-rw-------@  1 sscotti  staff  28073 Feb 22 11:01 postgresql.conf
-rw-------@  1 sscotti  staff     36 Feb 22 16:00 postmaster.opts
-rw-------   1 sscotti  staff     94 Feb 22 16:00 postmaster.pid

pg_stat folder is actually empty.

and pg_stat_temp has:

-rw-------  1 sscotti  staff   1952 Feb 22 17:54 db_0.stat
-rw-------  1 sscotti  staff  20360 Feb 22 17:54 db_13395.stat
-rw-------  1 sscotti  staff   1151 Feb 22 17:54 global.stat

O problema parece ser que os arquivos do banco de dados estão vinculados a uma pasta local no host, e não a um volume Docker. É muito mais conveniente vinculá-lo a uma pasta local facilmente acessível a partir do host, mas acho que há alguns problemas de permissão relacionados a isso. Na verdade, talvez eu queira mudar para um volume, mas o volume ainda precisa ser persistente e fácil de fazer backup em um NAS local ou serviço de nuvem que usamos para backup.

Com o Docker Desktop para MacOS, parece haver um pequeno impacto no desempenho usando pastas vinculadas em vez de volumes, mas no LINUX isso não parece causar problema, embora o aviso de "arquivo de estatísticas" também ocorra lá.

Obrigado.

informação relacionada