ฉันใช้ postgres เป็น Docker Container มาระยะหนึ่งแล้ว ในตอนแรก TZ และ PGTZ ไม่ได้ตั้งค่าไว้ ดังนั้นฉันคิดว่าค่าเริ่มต้นเป็น UTC ในระบบ dev ของฉัน ฉันลองทำสิ่งต่อไปนี้ใน docker-compose.yml:
โพสต์เกรส:
ภาพ: postgres:13
พอร์ต: ["5557:5432"]
รีสตาร์ท: เว้นแต่จะหยุด
ปริมาณ:
- ./ดัชนี:/var/lib/postgresql/data
สิ่งแวดล้อม:
TZ: "อเมริกา/เคย์แมน"
PGTZ: "อเมริกา/เคย์แมน"
POSTGRES_PASSWORD: "โพสต์เกรส"
และดูเหมือนว่าจะเป็นการปรับเปลี่ยนเขตเวลาท้องถิ่น ฉันไม่ได้ปรับใช้กับระบบจริงเพราะฉันสงสัยว่ามันจะทำให้อะไรยุ่งเหยิงเกี่ยวกับประวัติการทำธุรกรรมของ DB และไฟล์บันทึก ฯลฯ ความสมบูรณ์ของ DB นั้นดีอยู่แล้ว และฉันมีการสำรองข้อมูลกลับไปค่อนข้างมาก ฉันไม่แน่ใจว่าจำเป็นต้องตั้งค่าเขตเวลาจริง ๆ หรือไม่ แต่ก็เป็นเรื่องดีที่มีคอนเทนเนอร์ทั้งหมดตั้งค่าเป็นโซนท้องถิ่นแทนที่จะเป็น UTC
ปัญหาอื่นไม่เกี่ยวข้องและกล่าวถึงที่นี่: คำเตือน: ไม่สามารถเปิดไฟล์สถิติ "pg_stat_tmp/global.stat": ไม่อนุญาตให้ดำเนินการ
สั้น ๆ :
ดัชนีฐานข้อมูลนั้นถูกแมปกับโฟลเดอร์บนโฮสต์ในรูทของแพ็คเกจ Docker และดูเหมือนว่าทุกอย่างจะทำงานได้ดีตราบใดที่เกี่ยวข้องกับฐานข้อมูล ฉันใช้ Mac แต่ถ้าฉันแสดงการอนุญาตจาก CLI สำหรับโฟลเดอร์ DB ฉันจะได้รับ:
-rw-------@ 1 พนักงาน sscotti 3 ก.พ. 22 11:01 น. PG_VERSION
drwx------@ 6 พนักงาน sscotti 192 ก.พ. 22 11:54 ฐาน
drwx------@ 60 เจ้าหน้าที่ sscotti 1920 22 ก.พ. 16:00 น. ทั่วโลก
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_commit_ts
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_dynshmem
-rw-------@ 1 พนักงาน sscotti 4782 22 ก.พ. 11:02 น. pg_hba.conf
-rw-------@ 1 พนักงาน sscotti 1636 22 ก.พ. 11:01 pg_ident.conf
drwx------@ 5 พนักงาน sscotti 160 22 ก.พ. 17:46 น. pg_logical
drwx------@ 4 พนักงาน sscotti 128 ก.พ. 22 11:01 pg_multixact
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_notify
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_replslot
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_serial
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_snapshots
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 16:00 น. pg_stat
drwx------@ 5 พนักงาน sscotti 160 22 ก.พ. 17:50 น. pg_stat_tmp
drwx------@ 3 พนักงาน sscotti 96 22 ก.พ. 11:01 pg_subtrans
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_tblspc
drwx------@ 2 พนักงาน sscotti 64 22 ก.พ. 11:01 pg_twophase
drwx------@ 4 พนักงาน sscotti 128 ก.พ. 22 11:01 pg_wal
drwx------@ 3 พนักงาน sscotti 96 22 ก.พ. 11:01 pg_xact
-rw-------@ 1 พนักงาน sscotti 88 22 ก.พ. 11:01 postgresql.auto.conf
-rw-------@ 1 พนักงาน sscotti 28073 22 ก.พ. 11:01 postgresql.conf
-rw-------@ 1 พนักงาน sscotti 36 ก.พ. 22 16:00 น. postmaster.opts
-rw------- 1 พนักงาน sscotti 94 22 ก.พ. 16:00 น. postmaster.pid
โฟลเดอร์ pg_stat ว่างเปล่าจริงๆ
และ pg_stat_temp มี:
-rw ------- 1 พนักงาน sscotti 1952 22 ก.พ. 17:54 db_0.stat
-rw------- 1 พนักงาน sscotti 20360 22 ก.พ. 17:54 db_13395.stat
-rw------- 1 พนักงาน sscotti 1151 22 ก.พ. 17:54 น. global.stat
ปัญหาน่าจะเป็นที่ไฟล์ DB ถูกผูกไว้กับโฟลเดอร์ในเครื่องบนโฮสต์แทนที่จะเป็น Docker Volume มันสะดวกกว่ามากที่จะผูกมันไว้กับโฟลเดอร์ในเครื่องที่เข้าถึงได้ง่ายจากโฮสต์ แต่ฉันคิดว่ามีปัญหาเกี่ยวกับการอนุญาตบางอย่างที่เกี่ยวข้อง จริง ๆ แล้วฉันอาจต้องการเปลี่ยนเป็นโวลุ่ม แต่โวลุ่มยังคงต้องคงอยู่และสำรองข้อมูลอย่างง่ายดายไปยัง NAS หรือบริการคลาวด์ในพื้นที่ที่เราใช้สำหรับการสำรองข้อมูล
ด้วย Docker Desktop สำหรับ MacOS ดูเหมือนจะมีประสิทธิภาพเล็กน้อยเมื่อใช้โฟลเดอร์ที่ถูกผูกไว้แทนที่จะเป็นไดรฟ์ข้อมูล แต่บน LINUX ดูเหมือนจะไม่ก่อให้เกิดปัญหา แม้ว่าจะมีคำเตือน "ไฟล์สถิติ" เกิดขึ้นที่นั่นด้วย
ขอบคุณ.