꾸준한 개발일기

리눅스:: 데이터베이스에서 원하는 테이블만 백업(pg_dump)&복구하기 본문

Programing/리눅스

리눅스:: 데이터베이스에서 원하는 테이블만 백업(pg_dump)&복구하기

꾸개일 2022. 1. 8. 09:00
반응형

운영서버에서 데이터를 백업하여 개발서버로 복구하였다. 하지만 몇몇 테이블이 오류가 나면서 데이터가 잘 들어오지 못했다. 이를 해결하기 위해 필요한 테이블을 찾아 개별적으로 복구해주기로 했다.

 

1. 데이터 백업

리눅스로 운영 db서버에 접속한다. 

pg_dump -U 사용자명 -d DB명 -t 스키마.테이블명 > /경로/파일명.sql

pg_dump 명령어를 이용하여 백업한다.

 

예시)

pg_dump -U postgres -d postgres -t public.logIn > /home/centos/public_login.sql

 

2. 백업한 파일을 원하는 db서버에 업로드

나는 SFTP를 사용하였다.

 

3. 데이터 복구

psql -h xxx.xxx.xxx.xxx -U 사용자명 -d DB명 -f /경로/파일명.sql

ssh에 psql 명령어를 입력 후 비밀번호를 입력한다.

 

예시)

psql -h xxx.xxx.xxx.xxx -U postgres -d postgres -f /home/public_login.sql

 

SET
SET
SET
SET
SET
 set_config
------------

(1 row)

SET
SET
SET
SET
SET
SET
psql:/home/public_login.sql:58: ERROR:  relation "login" already exists
ALTER TABLE
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COPY 31
psql:/home/public_login.sql:324: ERROR:  multiple primary keys for table "login" are not allowed
psql:/home/public_login.sql:331: ERROR:  relation "login_i01" already exists
psql:/home/public_login.sql:338: ERROR:  relation "login_i02" already exists
psql:/home/public_login.sql:345: ERROR:  relation "login_pk" already exists
psql:/home/public_login.sql:353: ERROR:  constraint "login_group_id_fkey" for relation "login" already exists
psql:/home/public_login.sql:361: ERROR:  constraint "login_orgnzt_id_fkey" for relation "login" already exists
GRANT
GRANT

위처럼 로그가 뜬다. 

기존에 만들어 놓은 테이블, 릴레이션, 기본키가 있어 에러가 발생하지만 데이터가 들어가는 데에는 문제가 발생하지 않으니 무시하여도 좋다. 기존에 만들어 놓지 않았다면 이러한 에러는 발생하지 않는다.

 

4. 데이터 확인

DBeaver를 열어 데이터가 잘 들어왔는지 확인한다.

반응형
Comments