
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.