다음은 Arch Linux에서 기존 PostgreSQL 데이터베이스를 새 위치 (폴더, 파티션)로 이동하는 방법에 대한 설명입니다 (이 절차는 다른 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
) 데이터베이스
- 새로운 EMPTY 디렉토리 생성
- postgresql.conf 파일 편집
- postgres 서버 서비스를 다시 시작하십시오
- 덤프 파일에서 새 데이터베이스로 오래된 데이터로드
명령 요약
진행할 때 어떤 쉘이 있는지 명확히하기 위해 쉘 프롬프트 (호스트 이름 ...)를 남겨두고 있습니다.
[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
예
주석이 달린 코드 및 출력 은 함께 제공되는 블로그 게시물 인 Arch Linux 에서 기존 PostgreSQL 데이터베이스를 이동하는 방법을 참조하십시오.
참고 문헌