Вопросы о запуске postgres как Docker-контейнера. 1. TimeZone, 2. global.stat

Вопросы о запуске postgres как Docker-контейнера. 1. TimeZone, 2. global.stat

Я уже довольно давно использую postgres как Docker-контейнер. Изначально TZ и PGTZ не были установлены, поэтому я думаю, что по умолчанию использовалось UTC. На моей системе разработки я попробовал следующее в 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"

и это, кажется, делает настройку на локальный часовой пояс. Я не развертывал это в живой системе, потому что мне интересно, не испортит ли это что-нибудь в отношении истории транзакций БД и файлов журналов и т. д. Целостность БД теперь в порядке, и у меня есть резервная копия, охватывающая довольно много времени. Я не уверен, что это действительно необходимо, но довольно приятно иметь все контейнеры, установленные на локальный пояс, а не на UTC.

Другая проблема не связана с этой и упоминается здесь: ВНИМАНИЕ: не удалось открыть файл статистики "pg_stat_tmp/global.stat": Операция не разрешена

Вкратце:

Этот индекс базы данных сопоставлен с папкой на хосте в корне пакета Docker, и все остальное, кажется, работает нормально, если говорить о базе данных. Я использую Mac, но если я перечисляю разрешение из CLI для папки DB, я получаю:

-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

Проблема, похоже, в том, что файлы DB привязаны к локальной папке на хосте, а не к Docker Volume. Гораздо удобнее привязать их к локальной папке, легко доступной с хоста, но я думаю, что с этим связаны некоторые проблемы с разрешениями. На самом деле я мог бы захотеть перейти на том, но том все равно должен быть постоянным и легко резервироваться на локальном NAS или облачном сервисе, которые мы используем для резервного копирования.

В Docker Desktop для MacOS, похоже, наблюдается небольшое снижение производительности при использовании связанных папок вместо томов, но в LINUX это, похоже, не вызывает проблем, хотя предупреждение «statistics file» появляется и там.

Спасибо.

Связанный контент