[회사] MySQL 스케줄링으로 데이터 업데이트하기

노관옥·2022년 12월 15일
post-thumbnail

문제

어느날 특정 날짜 기준으로 상품의 가격이 변경돼야한다는 요청이 왔는데,

회사 서비스엔 가격 스케줄 기능이 없어요 🤦

저는 급하게 이 기능을 구현해야 하는 상황입니다!

의식의 흐름

1. 기능을 만든다.

개발은 둘째고, 기획을 마무리할 시간이 없다.

2. AWS Event Bridge를 활용한다.

결국엔 개발이 필요하다.

3. 서버의 Cron기능을 활용한다.

이유는 모르겠지만 Laravel 6.x Application단에서 관리하는 스케줄링이 자꾸 고장난다.

12시에 오토스케일링이 걸릴 수도 있다.

4. MySQL Schedule을 건다.

문제가 없을 것 같다.

5. 쿼리를 짜놓고 정각에 MySQL에서 실행시킨다

이것도 처리하는데 상관없다.

6. 직접 손으로 한다.

내 일자리가 위태로워진다.

MySQL 스케줄링으로 결정

저는 딱 한 순간에 한 번의 업데이트만 필요했습니다.

그래서 ChatGPT의 도움을 받았습니다.

ChatGPT의 도움

근데 제 환경에서는 ONCE 키워드에서 빨간 줄이 뜹니다.

ChatGPT의 배신

...?

아무튼 다시 질문해서 답을 찾았습니다.

create event update_my_table_at_once_event
    on schedule at '2022-12-15 19:00:00'
    on completion not preserve 
    do
    begin
        -- specify the task to be executed here
    end;

저 "-- specify the task to be executed here" 안에 제가 구현할 내용을 넣으면 해결됩니다.

적용됐는지 확인하기

만약 위처럼 스케줄을 걸었다면,

show events;

명령어로 현재 걸려있는 이벤트를 확인할 수 있습니다.

주의할 점

만약 서버의 시간이 한국 기준 시간이 아닐 수도 있으니까 확인하면 좋을 것 같아서 저는 확인을 했습니다.

select now();

결말

문제 없이 잘 넘겼다 👍

profile
블로그 이전완 - https://kwanok.me/blog/

0개의 댓글