몇년만에 글을 쓰는지 모르겠다.
도커 컨테이너를 사용하여 스크래핑과 사이트 두개의 컨테이너를 올리는데, 스크래핑 컨테이너가 중간에 잘못 종료되는경우 DB에 문제가 생긴다. 이건 생각보다 꽤 큰 문제점이다.
이 문제는 DB스위칭을 하기 때문이며, DB 스위칭을 테이블 이름 변경으로 스위칭 하기 때문이다.
현재 아래와 같이 2개의 테이블이 있다.
원래 이 DB는 아래와 같은 코드로 스위칭된다.
# 1. bg_product_data 에서 크롤링 완료 (유저가 접속하는것은 실제로 product_data 이다.)
# 2. product_data를 dummy_product_data로 이름변경 (dummy에는 옛날 데이터가 있다.)
# 3. bg_product_data를 product_data로 이름변경 (product_data에는 최신 데이터가 있다.)
# 4. dummy_product_data를 bg_product_data로 이름변경 (옛날 데이터가 있는 dummy가 bg로 변경된다. 어차피 또 스크래핑 하면, 데이터는 싹 다 날라간다.)
# 5. bg_product_data 에서 크롤링 완료... 이하반복
originalToDummy = "ALTER TABLE product_data RENAME dummy_product_data;"
bgToOriginal = "ALTER TABLE bg_product_data RENAME product_data;"
dummyToBg = "ALTER TABLE dummy_product_data RENAME bg_product_data;"
근데 중간에 잘못되어 저 3개의 RENAME 작업이 모두 하나의 트랜잭션으로써 완료되지 않으면 위와같이 bg_product_data, product_data 두개로 남아야 되는데 그게 안되고 dummy_product_data, bg_product_data 이런식으로 남게 되는 것이다. 이러면 크롤링할 데이터를 넣고 DB 이름변경으로 스위칭하는데 문제가 생긴다.
아무튼, 괜히 문제없는 크롤링 코드를 건드리려고 했다가 DB를 보고 문제를 바로 파악해서 다행이다.
'SCC 9기' 카테고리의 다른 글
[SCC 9기] - Project 회고록 : 8주간의 스파르타 코딩클럽 후기 (0) | 2020.09.08 |
---|---|
[SCC 9기] - Project TIL : 서버 단 작업 (0) | 2020.09.07 |
[SCC 9기] - Project 회고록 : 8주간의 스파르타 코딩클럽 후기 (0) | 2020.09.03 |
[SCC 9기] - Project TIL : DB 스위칭 (0) | 2020.08.31 |
[SCC 9기] - Project TIL : DB 중복제거와 짧은 데이터 제거 (0) | 2020.08.31 |