2009-08-03 3 views
7

mysql에 대해 매일 회전 된 백업을 생성하는 스크립트가 있지만 postgres와 비슷한 것을 찾을 수 없습니다. 또한 온라인 백업 기능이 있다는 것을 발견했습니다.이 기능은 프로덕션 사이트이므로 편리해야합니다.누구든지 postgres 데이터베이스를 백업하는 좋은 방법을 알고 있습니까?

나를 도와 줄 프로그램이나 스크립트를 아는 사람이 있습니까?

감사합니다.

답변

18

한 가지 방법은 usepg_dump입니다. gzip 또는 다른 방법으로 플랫 SQL 덤프를 생성 할 수 있습니다. 결과를 psql으로 다시 파이프하여 데이터베이스를 다시로드 할 수 있고 일반 텍스트로 내보낼 수도 있기 때문에 가장 쉬운 옵션입니다. 필요한 경우 복원하기 전에 데이터를 살펴 보거나 편집 할 수 있습니다.

다음 방법은 일시적으로 데이터베이스를 종료하거나 (이론적으로는 파일 시스템이 원자 스냅 샷을 지원하는 경우) backup PostgreSQL data 디렉토리입니다.

This 페이지는 PostgreSQL 사이트에서 온라인 백업 및 특정 시점 복구를 수행하는 방법을 설명합니다.이 백업은 구성하기가 가장 어렵지만 최적의 방법이기도합니다. 몇 가지 특수한 SQL (pg_start_backuppg_stop_backup)을 실행하고 데이터베이스 디렉토리의 (파일 시스템 수준의) 복사본을 만들어 기본 백업을 수행한다는 것입니다. 이 시간 동안 데이터베이스가 오프라인 상태가되지 않으며 모든 것이 정상적으로 작동합니다. 그런 다음 데이터베이스는 변경 사항에 대한 WAL (Write Ahead Log)을 생성 한 다음 원하는 위치로 (데이터베이스에 의해 자동으로) 푸시 될 수 있습니다. 복원하려면 기본 백업을 가져 와서 다른 데이터베이스 인스턴스로로드 한 다음 모든 WAL 파일을 재생하면됩니다. 이렇게하면 모든 로그를 재생하지 않아도 특정 시점 복구를 수행 할 수 있습니다.

+0

에 해당 백업

pg_restore -v -d newdb_name db_dump_file.dump 

읽기를 복원합니다. 완벽하게 잘 작동합니다. 그러나 pg_xlog 디렉토리를 포함하여 PostgreSQL이 가지고있는 모든 파일 시스템에 대해 원자 적이어야합니다. –

+0

필자는 보통 pg_dump를 사용하여 백업을 수행하지만, pg_dump를 사용하여 http://sourceforge.net/projects/automysqlbackup/과 같은 순환 백업을 만드는 완벽한 솔루션을 찾고있었습니다. 스크립트가 온라인 백업을 사용했다면 더 좋을 것입니다.하지만 필자가 직접 해보고 Launchpad 또는 어딘가에 올려 놓는 것은 어렵지 않아야한다고 생각합니다. 답변 해 주셔서 감사합니다. –

+1

공개 키/비밀번호 암호화, 순환 및 S3로 업로드하여 안전하게 pg_dump 백업을 수행하는 자동화 된 방법 : http://github.com/astrails/safe –

2

일반적으로 백업을 수행하는 방법은 pg_dump를 사용하는 것입니다.

"mysql과 마찬가지로 postgresql 디렉토리에서 파일을 복사하십시오."-이 파일은 아키텍처, 운영 체제 및 컴파일 옵션에 따라 다름)를 사용할 수 없으므로 사용해야합니다.

pg_dump가 인 것으로 증명 된 경우를 제외하고는 이 부족합니다. 이것이 사용해야하는 사항입니다. pg_dump를 사용할 수없는 상황에 처했을 때 - 스스로 사용할 수없는 이유와 다시 사용할 수있는 이유는 무엇입니까?

일반 SQL 파일 덤프를 선택할 수 있습니다 (-F p) 또는 사용자 정의 형식 (-F c)으로 구성됩니다. SQL 덤프는 수정/변경하기가 더 쉽지만 사용자 지정 형식은 순차적이 아닌 많은 병렬 작업자에서로드 할 수 있기 때문에로드가 더 빠르며 (8.4 버전 이후) 더 강력합니다. 두 MySQL의 그리고 Postrgres의 자동화 된 백업의

3

astrails-safe on github (또는 "gem install astrails-safe --source=http://gems.github.com") 확인하십시오. MySQL을 백업하기 위해 mysqldump를 사용하고 Postgres를 백업하기 위해 pg_dump를 사용합니다. 또한 tar로 일반 파일을 백업하고 GnuPG로 모든 것을 암호화하고 S3 또는 SFTP로 유닉스 서버에 업로드하는 방법을 알고 있습니다.

2

데이터베이스 S를 지정 했으므로 pg_dumpall이 훨씬 유용합니다. 모든 데이터베이스와 사용자를 단 하나가 아닌 SQL 파일로 덤프합니다.

1

난 그냥이 작은 깔끔한 유틸리티 우연히 한 : 그것은 유망 보이는 문서에서

http://code.google.com/p/pg-rman/

,하지만 난 아직 그것을 시도해야합니다. 여기

0

이를 사용할 수있는 스크립트는 내가 백업 내 이전 데이터베이스를 어떻게 복원 할 것입니다

데이터베이스를 백업하려면

pg_dump --format=c olddb_name > db_dump_file.dump 

더 그냥 "이론적으로 작동 할 수 있습니다"하지 않는 원자 스냅 샷을 사용 pg_dumppg_restore

관련 문제