홈페이지 : http://www.openphp.com , http://www.openpython.com
안녕 하세요? 조성준 입니다.
PostgreSQL 8에 신기술인 PITR에 대해 설명 합니다.역시나 독학으로 인해 틀린내용이 있을수 있으니 틀린부분이 있으면
댓글 부탁 드립니다.
PITR : Point In Time Recovery
PostgreSQL 8의 성능개선에 최고로 일고한 신기능으로 PostgreSQL 7.1의 WAL기능에 대해서 먼저 집고 넘어 가는것이
이해가 빠를 것입니다.
- WAL <-> PITR -
Write-Ahead Logging.
간단히 애기하면 실질적인 데이타의 변조(update,delete,...)가 일어나는 정보에 대해 로깅즉 로그를 남기는 기능입니다.
트랜잭션 로깅기능으로 만약에 데이타 변조가 일어나는 순간 하드디스크에 모두 직접적으로 반영을 하게 된다면?
하드디스크는 열이 많이 날것이다. 아무리 Wide Ultra SCSI에 15,000RPM을 쓴다 하더라도, 한번에 수천 수만 코드를 고치고
그 순간에 누군다 select 쿼리를 날리고 날리 부르스를 추는 행동이 엄청나게 왔다 갔다 한다면 HDD의 물리적인 처리속도의
한계가 있기때문에 아무리 좋은 서버라도 반응 속도는 상당히 느리게 됩니다.
그래서 Database Server들은 일정시간동안은 메모리의 버퍼에 잠시 담아두었다가 일정 시간이후에 실제적인
디스크에 Sync(fsyn())하게 됩니다.
하지만 엄청나게 인/아웃이 많은 Transaction이 일어나고 데이타가 메모리에 머무르는 중인데.
이시대 최고의 크래커. 청소해주시는 분께서 오늘은 바닥에 왁스칠하는날.!! 근데 서버들이 켜있네.
"이총각들이 전원은 다끄고 컴퓨터는 다 올려 놓으라고 몇번을 말해"!!! 잠시후 퓨후흐흐....... (전원 꺼지는 소리,표현이참)
그동안 수천만건의 갱신 데이타들은 메모리속에서 RAM( Radom Access Memory)휘발성 메모리에서 장렬히
전기와 함께 사라진다.! 다음날 와서보면 .... 개발자,담당자,관리자는.... -.~;
이때 WAL은 어느시점까지는 정보에 대해 로깅 즉. 실 데이타는 어차피 디스크에 저장되어 있고,
실제 디스크에 쓰기전에 메모리 상주하는 데이타에 대한 로그정보 뭐 간단히 날라온 쿼리들을 따로 저장해 놓았다고 생각 하면 됩니다.
뭔 WAL동작중이고 이게 Log Write중에 전원이 나가면 어쩔수는 없게 된다.
하지만.!But.그러나.! PITR은 WAL부터 TranSaction Log에 대해 복구시점을 Point.! 꼭 찍어 놓는 감독관 같은 역활을 한다.
만약에 WAL의 로그가 전원Down으로 인해 데이타 손실이되더라고 복구시점은 택해 최대한 피해를 줄여주면서 원상복원이 어느정도 가능하다는것이다.
디비의 성능을 최대한 하기위해서는 CPU(Cache),RAM등이 메우 중요하지만 그것은 연산처리등의 요건이며,
실제적인 물리적 저장공간인 Storage가 상당한 Re-Write에 대한 처리 속도가 디비성능을 자지우지한다고 생각해도 무관하다.
하지만 현존의 Storage는 Memory처럼 빠르지는 않기에 현재로써는 메모리 상주형 디비나 디비 메모리 캐쉬등으로
성능 향상을 꾀하는 경우가 많다. (메모리 상주형 디비가 상당히 많은 포탈과 각종 서비스에 이용중이다.)
PITR이 WAL과 합쳐지면 상당한 성능향상과 안정성을 확보했기에. 열악한(UPS나 실시간 백업 서버가) 환경에서
어느정도 막아주는것에 대해 기다려온 기능이 아닐까쉽다.
잡답! :
IDC에 넣으면 전원 다운이 없을꺼라는 예상은 하지 않기를 바란다. 국내 모 N**(H**) IDC에서 전원이 몇십분간 다운되는
초! 엽기적 사건도 있었기에.. 사실 IDC의 상면가가 싸면 UPS를 쬐깐한거라도 하나두는것이 맘이 편할수있다.
또한 Power Supply역시 안전을 위한다면 리던던트로 1개이상을 장착하는게 좋다.
IDC의 고품질 전원공급이 항상 좋은것도 아니고, Server용 Power Supply가 불량이 적은게 아니다.
생각보다 몇개월 않되서 나가는 경우도 많고, 과전류로 자동 다운되거나 하는 경우도 많은 편이다. 유의하고 조심.!!
백업만이 살길이지만. 실시간 백업이 아닌이상.!!!! ~~ |