นี่คือคำอธิบายวิธีย้ายฐานข้อมูล PostgreSQL ที่มีอยู่ไปยังตำแหน่งใหม่ (โฟลเดอร์พาร์ติชัน) บน Arch Linux (กระบวนการนี้ควรคล้ายกับการแจกแจง Linux อื่น ๆ )
pg_dumpall
เป็นเครื่องมือสำหรับการเขียน (ทิ้ง) ฐานข้อมูล PostgreSQL ทั้งหมดของคลัสเตอร์เป็นไฟล์สคริปต์ไฟล์เดียว ... ทำได้โดยเรียกpg_dump
ใช้ฐานข้อมูลแต่ละรายการในคลัสเตอร์ ...
ตัวอย่างเช่น:
## To dump all databases:
$ pg_dumpall > /tmp/db.out ## backup all postgres databases to file
$ pg_dumpall -Fc dbname > /tmp/outfile ## backup a database
## To reload database(s) from that file:
$ psql -f /tmp/db.out postgres
TL / DR
คุณต้อง:
pg_dumpall
ฐานข้อมูลส่งออก ( )
- สร้างไดเรกทอรีว่างใหม่
- แก้ไขไฟล์ postgresql.conf
- รีสตาร์ทเซอร์วิสเซิร์ฟเวอร์ postgres
- โหลดข้อมูลเก่าจากไฟล์ดัมพ์ลงในฐานข้อมูลใหม่
สรุปคำสั่ง
ฉันกำลังออกจาก shell prompt (hostname ... ) เพื่ออธิบายว่าฉันอยู่ไหนในขณะที่ดำเนินการต่อ
[victoria@victoria ~]$ postgres --version ## postgres (PostgreSQL) 11.2
[victoria@victoria claws]$ sudo -u postgres -i
[postgres@victoria ~]$ pg_dumpall > /tmp/db.out
[postgres@victoria ~]$ psql
[postgres]# SHOW data_directory; ## /var/lib/postgres/data
[postgres]# exit
[victoria@victoria postgres]$ mkdir /mnt/Vancouver/programming/rdb/postgres/postgresdb
## IMPORTANT: dir must be empty:
[victoria@victoria postgres]$ l postgresdb/ ## total 0
[victoria@victoria postgres]$ sudo chown postgres:root /mnt/Vancouver/programming/rdb/postgres/postgresdb/
[victoria@victoria postgres]$ sudo systemctl status postgresql
...
May 02 19:55:21 victoria systemd[1]: Started PostgreSQL database server.
[postgres@victoria ~]$ initdb --locale en_US.UTF-8 -E UTF8 -D '/mnt/Vancouver/programming/rdb/postgres/postgresdb/data'
[postgres@victoria ~]$ exit
[victoria@victoria postgres]$ sudo vim /var/lib/postgres/data/postgresql.conf
## added line:
data_directory = '/mnt/Vancouver/programming/rdb/postgres/postgresdb/data'
[victoria@victoria postgres]$ sudo -u postgres -i
[postgres@victoria ~]$ psql
[postgres]# SHOW data_directory;
## /var/lib/postgres/data ## << Old dir; need to restart postgresql service
[postgres]# \q
[victoria@victoria postgres]$ sudo systemctl restart postgresql
[victoria@victoria postgres]$ sudo -u postgres -i
[postgres@victoria ~]$ psql
[postgres]# SHOW data_directory;
## /mnt/Vancouver/programming/rdb/postgres/postgresdb/data
[postgres]# \q
[postgres@victoria ~]$ psql -f /tmp/db.out postgres
SET
SET
SET
CREATE ROLE
ALTER ROLE
[ ... SNIP! ... ]
[postgres@victoria ~]$ exit
## Done! :-D
ตัวอย่าง
ดูโพสต์บล็อกประกอบของฉัน, วิธีการย้ายฐานข้อมูล PostgreSQL ที่มีอยู่บน Arch Linux , สำหรับรหัสความคิดเห็นและผลลัพธ์. -
อ้างอิง