2017-11-13 6 views
0

나는 PostgreSQL을 사용하는 사이트를 가지고 있습니다. 내 사이트에서 제공하는 모든 콘텐츠는 개발 환경에서 생성됩니다 (이는 웹 크롤러 콘텐츠이기 때문에 발생합니다). 프로덕션 환경에서 작성되는 유일한 정보는 사용자에 대한 정보입니다.PostgreSQL 백업을 만드는 가장 좋은 방법

프로덕션 환경에 저장된 데이터를 업데이트하는 좋은 방법을 찾아야합니다. 프로덕션 환경에서 업데이트 된 테이블 만 프로덕션으로 복원 할 수 있으며 PostgreSQL이 프로덕션 환경에서이 레코드를 업데이트하거나 프로덕션 환경에서 사용자 정보를 백업하고 개발시 삽입하고 프로덕션 환경에서 전체 데이터베이스를 복원하는 것이 가장 좋습니다.

+0

dev 환경에서 사용자 데이터를 업데이트해야합니까? –

답변

2

당신은 자극에 그것을 가지고 단지 개발 환경 및 pg_restore에있는 비 사용자 테이블에서 데이터를 내보낼 pg_dump에 사용할 수 있습니다 감사합니다.

-t 스위치를 사용하면 특정 테이블을 선택할 수 있습니다.

pg_dump -d <database_name> -t <table_name> 

https://www.postgresql.org/docs/current/static/app-pgdump.html

2

많은 팁이 주제 herehere을 차선책이 있습니다. 나는 모든 것을보기 전에이 링크들을 살펴 보길 권한다.

각 업데이트 프로세스에서 데이터가 삭제되면 일반 덤프로 충분합니다. 아래처럼 직접 pg_restore의 단계를 피하기 위해 생산에 연결 PSQL하는 pg_dump 출력, 뭔가를 리디렉션 할 수 있습니다 : 당신은 "왜 내 테이블을 드롭 말하는"자신을 물어 수도

#Of course you must drop tables to load it again 
#so it'll be reasonable to make a full backup before this 
pg_dump -Fp -U user -h host_to_dev -T=user your_db | psql -U user -h host_to_production your_db 

?

신선한 테이블의 대량로드 데이터는 이전 데이터를 삭제하고 다시 삽입하는 것보다 빠릅니다. 문서의 견적 :

기존 데이터에 대한 색인 생성은 각 행이로드 될 때 점진적으로 업데이트하는 것보다 빠릅니다.

Ps¹ : 동시에 두 환경에서 연결할 수없는 경우 수동으로 pg_restore을 수행해야합니다.

Ps² : 권장하지 않지만 옵션을 pg_dump에 추가하면 DROP statements이 자동으로 생성됩니다. 예기치 않은 개체가 떨어지는 것을 방지하려면이 옵션을 특별히주의하십시오.