ตำแหน่งเริ่มต้นฐานข้อมูล PostgreSQL บน Linux


118

ไดเรกทอรีเริ่มต้นที่ PostgreSQL จะเก็บฐานข้อมูลทั้งหมดบน Linux คืออะไร


1
อีกกระทู้หนึ่งที่มีการพูดคุยคำถามเดียวกัน stackoverflow.com/questions/1137060/…
Vishal

คำตอบ:


134

" ไดเร็กทอรีที่ postgresql จะเก็บฐานข้อมูลทั้งหมด " (และการกำหนดค่า) เรียกว่า "ไดเร็กทอรีข้อมูล" และสอดคล้องกับสิ่งที่ PostgreSQL เรียก (สับสนเล็กน้อย) ว่า " คลัสเตอร์ฐานข้อมูล " ซึ่งไม่เกี่ยวข้องกับการประมวลผลแบบกระจาย แต่หมายถึงกลุ่ม ของฐานข้อมูลและวัตถุที่เกี่ยวข้องที่จัดการโดยเซิร์ฟเวอร์ PostgreSQL

ตำแหน่งของไดเร็กทอรีข้อมูลขึ้นอยู่กับการกระจาย หากคุณติดตั้งจากแหล่งที่มาค่าเริ่มต้นคือ/usr/local/pgsql/data:

ในแง่ของระบบไฟล์คลัสเตอร์ฐานข้อมูลจะเป็นไดเร็กทอรีเดียวซึ่งข้อมูลทั้งหมดจะถูกเก็บไว้ เราเรียกสิ่งนี้ว่าไดเร็กทอรีข้อมูลหรือพื้นที่ข้อมูล ขึ้นอยู่กับคุณว่าคุณจะเลือกจัดเก็บข้อมูลของคุณที่ใด ไม่มีค่าเริ่มต้นแม้ว่าตำแหน่งเช่น / usr / local / pgsql / data หรือ / var / lib / pgsql / data จะเป็นที่นิยม ( อ้างอิง )

นอกจากนี้อินสแตนซ์ของเซิร์ฟเวอร์ PostgreSQL ที่ทำงานอยู่นั้นเชื่อมโยงกับคลัสเตอร์เดียว ตำแหน่งของไดเร็กทอรีข้อมูลสามารถส่งผ่านไปยังเซิร์ฟเวอร์ daemon (" postmaster " หรือ " postgres ") ใน-Dตัวเลือกบรรทัดคำสั่งหรือโดยPGDATAตัวแปรสภาพแวดล้อม (โดยปกติจะอยู่ในขอบเขตของผู้ใช้ที่รันอยู่postgres) โดยปกติคุณจะเห็นเซิร์ฟเวอร์ที่ทำงานอยู่โดยมีลักษณะดังนี้:

[root@server1 ~]# ps auxw |  grep postgres | grep -- -D
postgres  1535  0.0  0.1  39768  1584 ?        S    May17   0:23 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

โปรดทราบว่าเป็นไปได้แม้ว่าจะไม่บ่อยนักในการเรียกใช้สองอินสแตนซ์ของเซิร์ฟเวอร์ PostgreSQL เดียวกัน (ไบนารีเดียวกันกระบวนการที่แตกต่างกัน) ที่ให้บริการ "คลัสเตอร์" ที่แตกต่างกัน (ไดเร็กทอรีข้อมูล) แน่นอนว่าแต่ละอินสแตนซ์จะฟังพอร์ต TCP / IP ของตัวเอง


ฉันเห็นไดเร็กทอรีข้อมูลปัจจุบัน แต่เห็นโฟลเดอร์และไฟล์อื่น ๆ อีกมากมาย psql "บันทึก" ฐานข้อมูลในหลายไฟล์หรือมีเพียงหนึ่งเดียวในไดเร็กทอรีข้อมูลนี้ที่เป็นฐานข้อมูล? เพราะฉันคิดอะไรบางอย่างเช่นไฟล์ DB บนเซิร์ฟเวอร์ mysql หรือ sql เช่น ...
CamiloVA

70
/var/lib/postgresql/[version]/data/

อย่างน้อยก็ใน Gentoo Linux และ Ubuntu 14.04 ตามค่าเริ่มต้น

คุณสามารถค้นหาและมองไปที่พระรามpostgresql.conf data_directoryหากมีการแสดงความคิดเห็นไดเร็กทอรีฐานข้อมูลจะเหมือนกับไดเร็กทอรีไฟล์กำหนดค่านี้


21
มันจะขึ้นอยู่กับการกระจายพวกเขาทั้งหมดทำแตกต่างกันเล็กน้อย หากคุณสามารถเชื่อมต่อกับระบบได้การใช้ "SHOW data_directory" น่าจะเป็นวิธีที่ง่ายที่สุด
Magnus Hagander

@MagnusHagander มันคือคำตอบคุณไม่ได้ให้ความคิดเห็นนี้เป็นคำตอบ มันทำงานได้ดีสำหรับฉัน
Vishal

ใน Gnome ฉันเห็นเหมือนกันที่นี่/var/lib/8.1/postgresql
Junior Mayhé

สำหรับฉันมัน '
/var/lib/postgresql/9.3/main

9
สำหรับ Centos 7, postgres 9.3 path/var/lib/pgsql/9.3
rana_stack


15

ค่าเริ่มต้นใน Debian 8.1 และ PostgreSQL 9.4 หลังการติดตั้งด้วยapt-getตัวจัดการแพ็คเกจ

ps auxw |  grep postgres | grep -- -D
postgres 17340  0.0  0.5 226700 21756 ?        S    09:50   0:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf

/var/lib/postgresql/9.4/mainจึงเห็นได้ชัดว่า


11

บน Centos 6.5 / PostgreSQL 9.3:

เปลี่ยนค่าของสิ่งที่สถานที่ที่คุณต้องการในแฟ้มสคริปต์เริ่มต้น"PGDATA=/var/lib/pgsql/data"/etc/init.d/postgresql

อย่าลืม chmod 700 และchown postgres:postgresไปยังตำแหน่งใหม่และคุณเจ้านาย


2

คำสั่งpg_lsclusters(อย่างน้อยภายใต้ Linux / Ubuntu) สามารถใช้เพื่อแสดงรายการคลัสเตอร์ที่มีอยู่และด้วยไดเร็กทอรีข้อมูล:

Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5433 down   postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
10  main    5432 down   postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log

1

ฉันคิดว่าวิธีที่ดีที่สุดคือการสอบถามpg_settingมุมมอง:

 select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';

เอาท์พุท:

      name      |        setting         |            short_desc
----------------+------------------------+-----------------------------------
 data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)

1

แบบสอบถามด้านล่างจะช่วยในการค้นหาไฟล์การกำหนดค่า postgres

postgres=# SHOW config_file;
             config_file
-------------------------------------
 /var/lib/pgsql/data/postgresql.conf
(1 row)

[root@node1 usr]# cd /var/lib/pgsql/data/
[root@node1 data]# ls -lrth
total 48K
-rw------- 1 postgres postgres    4 Nov 25 13:58 PG_VERSION
drwx------ 2 postgres postgres    6 Nov 25 13:58 pg_twophase
drwx------ 2 postgres postgres    6 Nov 25 13:58 pg_tblspc
drwx------ 2 postgres postgres    6 Nov 25 13:58 pg_snapshots
drwx------ 2 postgres postgres    6 Nov 25 13:58 pg_serial
drwx------ 4 postgres postgres   36 Nov 25 13:58 pg_multixact
-rw------- 1 postgres postgres  20K Nov 25 13:58 postgresql.conf
-rw------- 1 postgres postgres 1.6K Nov 25 13:58 pg_ident.conf
-rw------- 1 postgres postgres 4.2K Nov 25 13:58 pg_hba.conf
drwx------ 3 postgres postgres   60 Nov 25 13:58 pg_xlog
drwx------ 2 postgres postgres   18 Nov 25 13:58 pg_subtrans
drwx------ 2 postgres postgres   18 Nov 25 13:58 pg_clog
drwx------ 5 postgres postgres   41 Nov 25 13:58 base
-rw------- 1 postgres postgres   92 Nov 25 14:00 postmaster.pid
drwx------ 2 postgres postgres   18 Nov 25 14:00 pg_notify
-rw------- 1 postgres postgres   57 Nov 25 14:00 postmaster.opts
drwx------ 2 postgres postgres   32 Nov 25 14:00 pg_log
drwx------ 2 postgres postgres 4.0K Nov 25 14:00 global
drwx------ 2 postgres postgres   25 Nov 25 14:20 pg_stat_tmp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.