PostgreSQL 장애 대응 · 살아 있는 데이터베이스를 읽는다 · 실습
신호를 읽고 무엇부터 손댈지 정한다
목표
데이터베이스 장애에서 가장 비싼 실수는 피해자를 원인으로 착각하는 것입니다.
막혀 있는 세션 넷을 죽여 봐야 다시 막히고, 정작 막고 있는 하나는 그대로 남습니다.
여기서는 실제 모양의 스냅숏을 읽고 무엇부터 손댈지를 정합니다.
재료
/opt/lab/dbsignals/activity.tsv pg_stat_activity 스냅숏 30줄/opt/lab/dbsignals/locks.tsv 누가 누구를 막고 있는가/opt/lab/dbsignals/statements.tsv pg_stat_statements 상위 질의mkdir -p /root/dbsignals && cp /opt/lab/dbsignals/* /root/dbsignals/ && cd /root/dbsignalscolumn -t -s $'\t' activity.tsv | head -5남길 것
01-states.txt 상태별 개수02-waits.txt 무엇을 기다리는가03-root.txt 사슬의 뿌리04-statements.txt 총 시간과 평균 시간05-decide.md 지금 할 것과 나중에 할 것06-prevent.md 다시 안 생기게07-notes.md 왜 그런지단계 7개
- 지금 무엇이 돌고 있나
- 무엇을 기다리는가
- 사슬의 뿌리를 찾는다
- 총 시간과 평균 시간은 다른 문제다
- 지금 할 것과 나중에 할 것
- 다시 안 생기게 한다
- 다음에 읽을 사람에게