
私はかなり長い間、Docker コンテナとして postgres を実行してきました。最初は、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"
これにより、ローカル タイムゾーンの調整が行われるようです。DB トランザクション履歴やログ ファイルなどに問題が発生するのではないかと心配しているため、これをライブ システムに展開していません。DB の整合性は現在良好で、かなり前のバックアップも取得しています。タイムゾーンを設定する必要があるかどうかはわかりませんが、すべてのコンテナーを UTC ではなくローカル ゾーンに設定すると便利です。
もう 1 つの問題は無関係ですが、ここでも少し触れられています。 警告: 統計ファイル「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 ボリュームではなく、ホスト上のローカル フォルダーにバインドされていることのようです。ホストから簡単にアクセスできるローカル フォルダーにバインドする方がはるかに便利ですが、それに関連するアクセス許可の問題があると思います。実際にはボリュームに変更したいかもしれませんが、ボリュームは永続的で、バックアップに使用するローカル NAS またはクラウド サービスに簡単にバックアップできる必要があります。
MacOS 用の Docker Desktop では、ボリュームではなくバインドされたフォルダーを使用するとパフォーマンスが若干低下するようです。ただし、LINUX では問題は発生しないようです。ただし、「統計ファイル」の警告も発生します。
ありがとう。