2019년 6월 4일 화요일

PostgreSQL Disk full 발생시 장애 현상

※ 요약

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 와 동일한 현상 발생

댓글 없음:

댓글 쓰기

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...