Code

postgresql 서버에서 백업해서 로컬에 복원하기

하말 ⍺ 2024. 12. 16. 16:34
반응형
#### 서버에서 ####

# 백업
pg_dump -U [username] -h [host] -p [port] -F c -b -v -f /path/to/backup_file.dump [database_name]

-U [username]: PostgreSQL 사용자명.

-h [host]: 데이터베이스 호스트 (예: localhost).

-p [port]: 포트 번호 (기본값: 5432).

-F c: 백업 파일을 사용자 정의 형식으로 저장.

-b: 데이터베이스 바이너리 데이터 포함.

-v: 자세한 출력 표시.

-f: 백업 파일 경로.

[database_name]: 백업할 데이터베이스 이름.

#### 로컬에서 ####

# 백업 가져오기
scp <username>@<ip혹은 주소>:/home/username/exp_camp_backup.dump /로컬컴퓨터폴더지정


# psql 접속
psql -U postgres # 경우에따라 postgres로 접속이 안되는 경우가 있다. 나의경우엔 mac 유저네임만 접속이 가능했다.
psql postgres # psql 일반적인 실행방법

# db 생성
\du # 유저 확인
CREATE USER your_user WITH PASSWORD 'your_password'; #유저네임을 기존과 같게하는게 편하다
GRANT ALL PRIVILEGES ON DATABASE your_database TO your_user; #새유저에게 권한주기
CREATE DATABASE <db이름> OWNER <유저네임>; #마찬가지로 db이름을 백업과 같은걸로 하는게 좋다
\q # 종료



# 복원
pg_restore -U <your_user> -d <your_database> --clean --if-exists /path/to/your_backup.dump
# --clean: 기존 테이블을 삭제 후 복원.
# --if-exists: 존재하지 않는 테이블 삭제 시 오류 방지.



#### 문제가 있을 경우 #####
# 쓰기권한 확인
ls -ld /usr/local/var/postgres
# drwxr-xr-x  2 root  admin  4096 Dec 12 19:30 /usr/local/var/postgres 출력

# 소유권 변경
sudo chown -R $(whoami) /usr/local/var/postgres
# drwxr-xr-x  2 $(whoami)  admin  4096 Dec 12 19:30 /usr/local/var/postgres

# postgresql 서버재시작
pg_ctl -D /usr/local/var/postgres start

# 여전히 접속이 안되면 초기화
initdb /usr/local/var/postgres
###################

 

# db 권한 확인
\l

# table 확인
\dt

# db 삭제
DROP DATABASE IF EXISTS exp_camp;

# db 소유자 변경 (복원 후 데이터베이스 소유자가 원하는 계정과 다를 경우, 소유자를 변경합니다)
ALTER DATABASE <db네임> OWNER TO <새소유자>;

'Code' 카테고리의 다른 글

git 사용하기.  (0) 2024.12.16
ios 시뮬레이터 업데이트  (0) 2023.09.20