PostgreSQL 백업 및 복구 방법
- Database
- 2023. 5. 29.
PostgreSQL에서 데이터를 백업하는 방법이 몇 가지 있습니다. 이 글에서는 비교적 직관적인 방법으로 볼 수 있는, 텍스트 파일 덤프를 이용해서 sql문을 저장하고 데이터를 복구하는 방법을 알아보겠습니다. 사용한 OS는 CentOS 7입니다.
PostgreSQL 백업 및 복구 방법
먼저 현재 저장된 데이터를 보면 testdb라는 데이터베이스와 users 테이블에 일부 샘플 데이터가 있습니다. 이 데이터를 지우고 복구하는 테스트를 진행합니다.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
postgres=# select * from users;
id | name | email
----+---------+--------------------
1 | User 1 | user1@example.com
2 | User 2 | user2@example.com
3 | User 3 | user3@example.com
4 | User 4 | user4@example.com
5 | User 5 | user5@example.com
6 | User 6 | user6@example.com
7 | User 7 | user7@example.com
8 | User 8 | user8@example.com
9 | User 9 | user9@example.com
10 | User 10 | user10@example.com
(10 rows)
1. 데이터 백업 경로 생성
데이터 백업은 슈퍼계정인 postgres로 합니다. 쉘에서 postgres 사용자로 전환합니다.
[root@localhost /]# sudo -i -u postgres
-bash-4.2$
백업 데이터를 저장할 디렉토리를 생성합니다. postgres가 권한을 가지고 있는 경로로 해야 하기 때문에 /var/lib/pgsql 밑으로 pgsql_backup을 만들겠습니다.
-bash-4.2$ cd
-bash-4.2$ pwd
/var/lib/pgsql
-bash-4.2$ mkdir pgsql_backup
2. 데이터 백업
데이터 백업은 pg_dump (부분 백업) 또는 pg_dumpall (전체 백업) 명령을 사용합니다.
[특정 데이터베이스만 백업]
pg_dump [백업할 데이터베이스명] > [백업 경로]
[모든 데이터베이스 백업]
pg_dumpall > [백업 경로]
저는 모든 데이터베이스를 백업하는 방법으로 진행하겠습니다. 백업 파일명은 alldb.sql로 정했습니다.
-bash-4.2$ pg_dumpall > /var/lib/pgsql/pgsql_backup/alldb.sql
백업 완료 후 해당 경로에 가보시면 설정한 이름으로 텍스트 파일이 생성된 걸 보실 수 있습니다. sql문으로 구성된 텍스트 파일이기 때문에 내용도 볼 수 있습니다.
3. (옵션) 데이터 삭제
제가 복구 테스트를 위해 데이터를 삭제하는 부분입니다. users 테이블에 있는 값을 delete하고 testdb를 drop 하겠습니다.
postgres=# delete from users;
DELETE 10
postgres=# drop database testdb;
DROP DATABASE
4. 데이터 복구
데이터가 복구되는 원리는 앞서 백업한 sql문을 다시 postgresql에서 실행하는 것입니다.
psql -U postgres -f /var/lib/pgsql/pgsql_backup/alldb.sql
5. 복구 데이터 확인
데이터가 정상적으로 복구되었습니다.
'Database' 카테고리의 다른 글
SQL, AVG 함수 사용법 (평균 계산) (0) | 2023.05.31 |
---|---|
SQL, SUM 함수 사용법 (합계 계산) (0) | 2023.05.30 |
CentOS PostgreSQL 설치 방법 (0) | 2023.05.28 |
MongoDB 백업 및 복원 방법 (0) | 2023.05.28 |
CentOS 7 MongoDB 설치 방법 (YUM) (0) | 2023.05.27 |