vacuum 작업이든 insert 작업이든 update 작업이든 disk full 상황이 발생했을 때, PostgreSQL 은 recovery 작업을 수행한다. pg_xlog 가 data file 과 동일한 디스크에 있었다면, pg_xlog 도 사용할 수 없어서 PostgreSQL 은 종료한다. (restart 실패) pg_xlog 가 data file 과 다른 디스크에 있었다면, pg_xlog 를 사용할 수 있으므로 PostgreSQL 은 정상 동작한다. (restart 성공) disk full 이 발생하면 sub-process 가 restart 하기 때문에 server restart 와 동일한 현상이 발생한다. (postmaster 는 restart 하지 않음) |
1. t1 에 데이터가 2,000,000 건 들어가 있고, 디스크 용량은 21MB 가 남아 있는 상황
2. vacuum full 을 수행하면, client 는 에러가 발생하고, server 는 restart 되면서 recovery 를 수행
3. server 가 recovery 수행중이라서 접속 안됨
4. pg_xlog 에도 용량이 부족해서 server 가 종료됨
5. 공간 확보를 위해 일부 pg_xlog 삭제 후, server start 가능
6 초기화 한 후, 데이터 2,000,000 건 insert 수행
7. 계속해서 데이터 insert 수행하면, client 는 에러가 발생하고, server는 restart 되면서 recovery 를 수행되고, pg_xlog 에도 용량이 부족해서 server 가 종료됨
8. create-insert 명령 사용시, disk full 감지하고 server 는 정상 동작. 아마도 해당 table data file 을 통채로 삭제가 가능하기 때문인듯
9. update 명령도 insert 와 동일한 현상 발생
댓글 없음:
댓글 쓰기