Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GraphQL
- psql extension
- 자료구조
- 42서울
- 42seoul
- 창업
- 어셈블리
- 부동소수점
- 스타트업
- enable_if
- raycasting
- 동료학습
- 레이캐스팅
- 파이썬
- SFINAE
- 스플릿키보드
- schema first
- mistel키보드
- 쿠버네티스
- Cloud Spanner
- 이노베이션아카데미
- 정렬
- c++
- uuid-ossp
- 도커
- 어셈블리어
- 엣지컴퓨팅
- 프라이빗클라우드
- 텍스트북
- adminbro
Archives
- Today
- Total
written by yechoi
PostgreSQL 백업하기 본문
반응형
humansof42.com 서버를 GCP에서 Vultr로 이주한다. 데이터베이스 마이그레이션을 위한 메모.
마이그레이션 조건
- DB는 하나
- 일부 테이블이 아니라 하나의 DB를 통째로 옮길 것임
- 지금 있는 상태 고대로 옮길 것임
- Linux 커맨드로 진행
백업 방법
- SQL 덤프 ✅
- 파일 시스템 기반 백업
-> 데이터파일을 통째로 압축해서 백업하는 방식
-> 무조건 전체 백업해야하는 건 괜찮지만, 데이터베이스 서버 중단은 하고 싶지 않음 - 아카이브 모드 백업
-> 데이터 베이스에 대한 모든 조작 기록인 미리쓰기 로그(WAL, Write ahead log)가 있음
-> 다른 서버로 이 로그를 보내, 로그의 내용을 실행해 원본 서버와 똑같이 만들기
-> 특정 시점까지만 실행하도록 하여 특정 시점으로 복구 가능
-> 단순한 백업이 필요한 것이라서 복잡도에 비해 불필요함
SQL 덤프
(1) 백업
pg_dump를 실행해 DB_NAME 데이터베이스에 생성된 객체와 데이터들을 SQL 구문 텍스트 형식으로 백업
표준출력되기 때문에 리다이렉션으로 파일로 저장
$ pg_dump DB_NAME > postgres_DB_NAME_bak.sql
* 파일의 크기가 클 경우에는 gzip 등 압축
* pg_dump
는 데이터베이스 한 개에만 적용, 모든 데이터베이스를 한번에 덤프하려면 pg_dumpall
명령어
(2) 복원
pg_dump로 백업 받은 파일은 SQL 형태라, 쿼리 import 형식으로 바로 복원 가능
데이터베이스와 사용자 생성 쿼리는 SQL 백업 파일에는 없으니, 복원 전에 따로 만들어주기
// 오류 발행해도 복원 계속 진행
$ psql DB_NAME < postgres_DB_NAME_bak.sql
// 실패시 모든 작업 취소하기 위한 single-transaction 옵션
$ psql --set ON_ERROR_STOP=1 --single-transaction < postgres_DB_NAME_bak.sql
반응형