다음 규칙을 사용하여 매일 pg_dump를 호출하도록 cron을 구성했습니다.
# xyz database backups:
00 01 * * * root umask 077 && pg_dump --user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz
기본적으로 작동합니다. 데이터베이스는 상대적으로 빠르게 기하 급수적으로 증가하지만 지수는 그리 크지 않습니다. 현재 gzipped 덤프는 약 160MB를 사용합니다. 데이터베이스가 덤프되면 시스템 크롤링이 시작됩니다. top
명령을 사용하여 본로드 평균 은 약 200, 200, 180
입니다. 기본적으로 서버는 응답이 거의 없습니다.
첫 번째 질문 은 병목 현상의 위치를 확인하는 방법입니다. 과도한 I / O 작업으로 인해 성능이 저하됩니까? 테이블 잠금 문제로 인해 발생합니까? 메모리 문제일까요? pg_dump
명령 의 출력이 명령으로 파이프됩니다 gzip
. 순차적입니까, 즉 전체 덤프가 메모리에 배치 된 후 (스왑 문제입니까?) 압축 또는 동시입니까 (예 : gzip이 가져오고 기다리는 것을 압축)? 다른 요인으로 인해 발생할 수 있습니까?
두 번째 질문 은 시스템의 주요 기능에 대해 덤프 작업을 덜 방해하는 방법입니다. 내가 이해하는 한 데이터베이스 무결성으로 인해 덤프 시간이 너무 오래 걸리지 않습니다. 테이블 쓰기 잠금 등이 있습니다. 문제점을 제한하기 위해 수행 할 수있는 작업 (또는 데이터베이스 증가를 고려하여 지연)
세 번째 질문은 : 이미 고급 데이터베이스 구성에 대해 배울 수있는 시간인가? 데이터베이스 백업이 수행되지 않을 때 시스템이 정상적으로 작동하지만 DB 덤프 문제가 들어오는 문제의 첫 증상일까요?
pg_dump
100 % CPU에 문제가 있었고 gzip에서 발생했습니다.pg_dump --compress=0
Ubuntu 16.04에서 지정 하면 해결되었습니다. 그 이후에도 백업은 매우 빨랐습니다. 컨테이너에서 gzip 압축에주의하십시오. 당신이 기대하는 것을하지 않을 수 있습니다.