Tôi đã chạy postgres dưới dạng Docker Container trong một thời gian khá dài. Ban đầu, TZ và PGTZ không được đặt, vì vậy tôi nghĩ nó được đặt mặc định là UTC. Trên hệ thống nhà phát triển của tôi, tôi đã thử cách sau trong docker-compose.yml:
postgres:
hình ảnh: postgres:13
cổng: ["5557:5432"]
khởi động lại: trừ khi dừng
khối lượng:
- ./Index:/var/lib/postgresql/data
môi trường:
TZ: "Mỹ/Cayman"
PGTZ: "Mỹ/Cayman"
POSTGRES_PASSWORD: "postgres"
và điều đó dường như thực hiện việc điều chỉnh múi giờ địa phương. Tôi chưa triển khai điều đó cho một hệ thống trực tiếp vì tôi tự hỏi liệu điều đó có làm xáo trộn bất cứ điều gì liên quan đến lịch sử giao dịch DB và tệp nhật ký, v.v. Tính toàn vẹn của DB hiện vẫn ổn và tôi đã sao lưu theo nhiều cách. Tôi không chắc rằng việc đặt múi giờ thậm chí có thực sự cần thiết hay không, nhưng thật tuyệt khi tất cả các vùng chứa được đặt thành múi giờ cục bộ thay vì UTC.
Vấn đề khác không liên quan và được đề cập ở đây: CẢNH BÁO: không thể mở tệp thống kê "pg_stat_tmp/global.stat": Thao tác không được phép
Tóm tắt:
Chỉ mục cơ sở dữ liệu đó được ánh xạ tới một Thư mục trên máy chủ trong thư mục gốc của Gói Docker và mọi thứ khác dường như hoạt động tốt khi có liên quan đến cơ sở dữ liệu. Tôi đang sử dụng máy Mac, nhưng nếu tôi liệt kê quyền từ CLI cho thư mục DB, tôi sẽ nhận được:
-rw-------@ 1 nhân viên sscotti 3 Ngày 22 tháng 2 11:01 PG_VERSION
drwx------@ 6 nhân viên sscotti 192 ngày 22 tháng 2 11:54 cơ sở
drwx------@ 60 nhân viên sscotti 1920 ngày 22 tháng 2 16:00 toàn cầu
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_commit_ts
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_dynshmem
-rw-------@ 1 nhân viên sscotti 4782 ngày 22 tháng 2 11:02 pg_hba.conf
-rw-------@ 1 nhân viên sscotti 1636 ngày 22 tháng 2 11:01 pg_ident.conf
drwx------@ 5 nhân viên sscotti 160 ngày 22 tháng 2 17:46 pg_logical
drwx------@ 4 nhân viên sscotti 128 ngày 22 tháng 2 11:01 pg_multixact
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_notify
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_replslot
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_serial
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_snapshots
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 16:00 pg_stat
drwx------@ 5 nhân viên sscotti 160 ngày 22 tháng 2 17:50 pg_stat_tmp
drwx------@ 3 nhân viên sscotti 96 ngày 22 tháng 2 11:01 pg_subtrans
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_tblspc
drwx------@ 2 nhân viên sscotti 64 ngày 22 tháng 2 11:01 pg_twophase
drwx------@ 4 nhân viên sscotti 128 ngày 22 tháng 2 11:01 pg_wal
drwx------@ 3 nhân viên sscotti 96 ngày 22 tháng 2 11:01 pg_xact
-rw-------@ 1 nhân viên sscotti 88 ngày 22 tháng 2 11:01 postgresql.auto.conf
-rw-------@ 1 nhân viên sscotti 28073 ngày 22 tháng 2 11:01 postgresql.conf
-rw-------@ 1 nhân viên sscotti 36 ngày 22 tháng 2 16:00 postmaster.opts
-rw------- 1 nhân viên sscotti 94 ngày 22 tháng 2 16:00 postmaster.pid
thư mục pg_stat thực sự trống.
và pg_stat_temp có:
-rw------- 1 nhân viên sscotti 1952 ngày 22 tháng 2 17:54 db_0.stat
-rw------- 1 nhân viên sscotti 20360 ngày 22 tháng 2 17:54 db_13395.stat
-rw------- 1 nhân viên sscotti 1151 ngày 22 tháng 2 17:54 global.stat
Vấn đề dường như là các tệp DB được liên kết với một thư mục cục bộ trên Máy chủ chứ không phải với Khối lượng Docker. Sẽ thuận tiện hơn nhiều khi liên kết nó với một thư mục cục bộ có thể truy cập dễ dàng từ máy chủ, nhưng tôi nghĩ rằng có một số vấn đề về quyền liên quan đến điều đó. Tôi thực sự có thể muốn thay đổi thành một ổ đĩa, nhưng ổ đĩa đó vẫn phải ổn định và dễ dàng được sao lưu vào dịch vụ NAS hoặc Đám mây cục bộ mà chúng tôi sử dụng để sao lưu.
Với Docker Desktop dành cho MacOS, dường như có một chút ảnh hưởng về hiệu suất khi sử dụng các thư mục bị ràng buộc thay vì ổ đĩa, nhưng trên LINUX, điều này dường như không gây ra sự cố, mặc dù cảnh báo "tệp thống kê" cũng xuất hiện ở đó.
Cảm ơn.