Dưới đây là mô tả về cách di chuyển cơ sở dữ liệu PostgreSQL hiện tại sang vị trí mới (thư mục, phân vùng), trên Arch Linux (quy trình này phải tương tự đối với các bản phân phối Linux khác).
pg_dumpall
là một tiện ích để viết ra (kết xuất) tất cả các cơ sở dữ liệu PostgreSQL của một cụm thành một tệp tập lệnh. ... Nó thực hiện điều này bằng cách gọi pg_dump
cho từng cơ sở dữ liệu trong cụm. ...
Ví dụ:
## 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
Bạn cần phải:
pg_dumpall
cơ sở dữ liệu xuất ( )
- tạo thư mục EMPTY mới
- chỉnh sửa tập tin postgresql.conf
- khởi động lại dịch vụ máy chủ postgres
- tải dữ liệu cũ từ tệp kết xuất vào cơ sở dữ liệu mới
Tóm tắt các lệnh
Tôi sẽ để lại lời nhắc shell của mình (tên máy chủ ...) để làm rõ tôi đang ở trong trình bao nào.
[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
Thí dụ
Xem bài đăng trên blog kèm theo của tôi, Cách di chuyển cơ sở dữ liệu PostgreSQL hiện có trên Arch Linux , để biết mã nhận xét và đầu ra .---
Tài liệu tham khảo