pg_start_backup
dezso 메모로 체크 포인트를 수행합니다. 이것은 영향을 미치지 만 데이터베이스는 어쨌든 검사 점을 정기적으로 수행하며 작동하려면 기능을 수행해야하므로 분명히 문제가되지 않습니다. 초기 검사 점은 적은 데이터가 누적되었음을 의미합니다. 즉, 검사 점의 항목 pg_start_backup
이 정상보다 영향이 적습니다.
rsync 또는 이와 동등한 pg_basebackup
단계 가 걱정되어야합니다 . 이것으로부터의 읽기 I / O는 순차적이기 때문에 그리 나쁘지는 않지만 여전히 데이터베이스의 I / O 성능을 크게 손상시킬 것입니다. 또한 핫 캐시 된 데이터를 RAM 캐시 밖으로 밀어내는 경향이 있습니다. -필요한 데이터를 다시 읽을 때 캐시 스 래싱을 일으키는 데이터를 사용합니다.
캐시 영향이 아닌 I / O 영향을 사용 nice
하고 ionice
제한 할 수 있습니다 . 그러나 비용이 든다. 백업 시간이 오래 걸리며 백업을 완료하고 실행할 때까지 pg_stop_backup
시스템을 이해합니다. WAL을 누적하여 삭제할 수 없으며 백업 실행이 끝날 때 BIG 체크 포인트에 대한 검사 점 부채가 누적되며 테이블과 인덱스가 누적됩니다. 죽은 행을 정리할 수 없기 때문에 부풀어 오른다. 따라서 특히 이탈 테이블이 매우 높은 경우 백업을 영원히 수행 할 여유가 없습니다.
결국, 당신이 안전하게 사용할 수 있는지 여부를 말하기 어렵다 pg_start_backup
및 pg_stop_backup
사용자 환경에서 핫 백업을 위해. 대부분의 사람들은 할 수 있지만 하드웨어가 할 수있는 것의 가장자리에 가까워지고 타이밍 요구 사항이 빡빡하고 실속의 위험을 감수 할 수 없으며 매우 큰 테이블뿐만 아니라 매우 높은 이탈 테이블이 있으면 문제가 될 수 있습니다 .
불행히도, 당신은 그것을 테스트하고 볼 필요가 거의 있습니다.
가능하면 CHECKPOINT
LVM, SAN 도구, EBS 또는 현재 사용중인 모든 것을 사용하여 데이터베이스가있는 볼륨의 원자 스냅 샷을 작성하는 것이 좋습니다. 이 작업을 수행 할 수 있으면 여가 시간에 스냅 샷을 복사 할 수 있습니다. 이 방법은 PITR / warm standby / hot standby의 기본 백업을 수행하는 데 적합하지 않지만 정적 백업 복사본에는 완벽하게 적합하며 시스템에 미치는 영향이 훨씬 적습니다. 그러나 스냅 샷이 원 자성이고 WAL을 포함한 전체 데이터베이스가 단일 볼륨에있는 경우에만이를 수행 할 수 있습니다.
내가 아직 조사하지 않은 한 가지 가능성은 두 가지 접근법을 결합하는 것입니다. 하나는 가능할 수도 있습니다 ( 테스트되지 않았고 잘못되었을 수도 안전 하지 않습니다. 아직 모르겠습니다).
pg_start_backup
- 모든 테이블 스페이스, 기본 데이터 디렉토리 및 xlog 볼륨의 스냅 샷 트리거
pg_stop_backup
- 에서 최종 아카이브까지 WAL 복사
pg_stop_backup
- 스냅 샷 된 볼륨에서 데이터 복사
기본적으로, 사용자가 여가 시간에 복사 할 수있는 각 볼륨의 특정 시점을 가져 와서 DB가 체크 포인트를 지연시켜야하는 시간을 줄이려고합니다.