본문 바로가기
개발 잡담

DBMS? JPA? 그래도 쿼리는 알아야 한다.

by 휴일이 2023. 12. 11.

 

첫 실수를 했다.

 

DB 테이블에서 기존 유저 PK(UUID) 를 새로운 유저 PK(LONG) 로 변경하고

연결 된 FK 도 전부 바꿔야하는 임무를 맡았다.

나는 그 동안 쿼리를 직접 치기보다는 JPA나 DBMS 를 이용했기 때문에 당연히 쿼리가 아닌 DBMS 로 테이블을 만졌다.

-> 여기에서 사고가 났다.

 

아무 생각 없이 FK 컬럼을 지우고 새 컬럼을 추가한 뒤 FK 설정을 하려고 봤더니

(자세히는 말하기 좀 그러니까 대충 말하면) 유저 데이터와 해당 테이블 데이터의 수가 달라 FK 연결이 불가한 사태가 일어났다.

그렇다. 이 테이블은 이제 유저 테이블과 관계가 사라져버린 것이다....

 

 

 

직접 쿼리를 쳤다면 롤백을 해서 되돌릴 수 있었을 텐데, DBMS 를 이용했기 때문에 이미 커밋돼버렸고...

심지어 간단한 작업이라고 생각해(쾅쾅ㅜ0ㅜ)

RDS 서버에 직접 박아넣은 거라 되돌리기가 불가능했다..^-^/)

- 지금 생각하면 나는 허접인데... 당.연.히 덤프따와서 로컬에서 작업 후 다시 집어넣었어야 하는 건데... 하...

 

 

실수를 알아차리고 나니 가슴이 철렁하고 손에 땀이 철철 났다...

머릿속에 주마등이 스치고 "몇 개 안 되는 데이터긴 한데..." 순간 말 안하고 넘어가면 안 될까 생각이 들었다.

근데 뭐,,, 한 2분 정도 고민하고 바로 팀장님한테 말씀드렸다....

우물쭈물하면서 이러저러하다가 컬럼을 삭제했는데...주절주절....죄송해요..어떡하죠...

 

다행히 옛날 백업 데이터가 있어 그걸로 복구해주셨다.

 

그런데 복구하고보니 중간에 몇 개의 데이터가 빠져있더라.

데이터 빠졌다고 MySQL 로그 보고 복구하는 법 알려주셨는데, 사실 그 데이터들은 내가 빼먹은 건 아니거든?

근데 그냥 가만히 있었음...ㅎ 내가 해야지 뭐 당연히... ㅎ

 

 

팀장님이 보내주신 로그 복구법을 한 30분 동안 보고 있었는데

분명 RDS 로그는 RDS 에 따로 쌓이지 EC2 서버에 쌓이진 않는다고 알고 있었는데...이거 로그로 어케 하는거지...긁적

찾아보다가 RDS에 스냅샷, 백업 기능이 있다는 것을 알고 팀장님 확인을 받은 후 그것들을 이용해서 백업을...(중략)

 

 

어쨌든 새로운(?) 옛날(?) 데이터는 쿼리로 UPDATE 하기로 했당.

 

RDS 테이블 데이터들을 로컬로 가져온다음

 

요런 느낌으로다가 select 해서 확인 후

 

 

요런 느낌으로다가 손쉽게 UPDATE 했다.

그리고 기존 FK 컬럼 삭제하고 새로 설정하고 RDS 에 다시 수정하고,,

 

 

 

정~~~말 초보적인 쿼리도 못 쳐서 (사실 안 쳐서),

그리고 무식하게 서버에서 바로 테이블을 수정하려고 하다가 벌어진 신입 개발자의 우당탕탕 실수 이야기..

 

느낀 점

- 앞으로는 DBMS 보다는 직접 쿼리를 치는 것으로... (공부 마니 하자)

- 그리고 커밋도 신중하게

- 테이블을 수정하는 큰 작업은 반드시 로컬에 가져와서 하자...

 

 

머리가 뒤숭숭하다 아마 졸려서 그렇기 때문이다.

글도 검토도 안 했다. 나중에 보면 뒤죽박죽일지두...

이제 사이드 프로젝트 하러 가야지~~~

오늘의 일기 끗 ㅎ

728x90