MySQL 크론 작업

Salman Mehmood 2023년6월20일
  1. MySQL 크론 작업
  2. 테이블 백업 만들기
  3. 크론 작업 생성
MySQL 크론 작업

이 문서의 주요 목표는 MySQL로 작성된 쿼리를 예약하고 Cron 작업을 사용하여 일정 시간 후에 실행하는 방법을 보여주는 것입니다.

MySQL 크론 작업

많은 양의 데이터를 처리할 때 특정 작업이 반복될 수 있습니다.

무엇이든 될 수 있으며 작업의 컨텍스트에 따라 다릅니다. 예를 들어 특정 양 이후에 테이블에서 항목을 제거하거나 데이터베이스의 복사본을 로컬 시스템에 저장하여 시간 제한 백업을 만드는 것이 포함됩니다. 가능성은 무한합니다.

다음 표를 고려하십시오.

+------+---------------+-------------+----------------------+------------+
| ID   | Name          | CountryCode | District             | Population |
+------+---------------+-------------+----------------------+------------+
|    1 | Kabul         | AFG         | Kabol                |    1780000 |
|    2 | Qandahar      | AFG         | Qandahar             |     237500 |
|    3 | Herat         | AFG         | Herat                |     186800 |
|    4 | Mazar-e-Sharif| AFG         | Balkh                |     127800 |
|    5 | Amsterdam     | NLD         | Noord-Holland        |     731200 |
|    . | . . . . . . . | . . . . . . | . . . . . . . . . .  |  . . . . . |
|    . | . . . . . . . | . . .  < OUTPUT REDACTED >  . . .  |  . . . . . |
|    . | . . . . . . . | . . . . . . | . . . . . . . . . .  |  . . . . . |
| 4075 | Khan Yunis    | PSE         | Khan Yunis           |     123175 |
| 4076 | Hebron        | PSE         | Hebron               |     119401 |
| 4077 | Jabaliya      | PSE         | North Gaza           |     113901 |
| 4078 | Nablus        | PSE         | Nablus               |     100231 |
| 4079 | Rafah         | PSE         | Rafah                |      92020 |
+------+---------------+-------------+----------------------+------------+

단순화를 위해 전 세계 여러 도시에 대한 데이터를 저장하는 다음 표가 정기적으로 업데이트된다고 가정해 보겠습니다. 테이블이 정기적으로 업데이트되기 전에 로컬 시스템에 테이블 백업이 있어야 하는 상황입니다.

이를 달성하기 위해 cron 작업을 사용하여 테이블을 정기적으로 백업하는 쿼리를 실행할 수 있습니다. cron 작업을 사용하여 이를 달성하는 방법을 살펴보겠습니다.

테이블 백업 만들기

일정 부분으로 이동하기 전에 이 특정 테이블을 백업할 수 있는 쿼리를 만들어 보겠습니다.

다음 쿼리를 고려하십시오.

mysql --user=[user] --password=[pass] --database=world --execute="SELECT * from world.city INTO OUTFILE 'D:\\a.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n'"

다음은 쿼리에서 발생하는 상황에 대한 요약입니다.

  1. mysql - 데이터베이스에 액세스하기 위해 실행할 MySQL 바이너리
  2. --user=[사용자 - 사용자 이름
  3. --password=[pass] - 암호
  4. --database=world - 액세스 및 처리할 데이터베이스 이름, 이 경우 world
  5. --execute="..." - 실행할 쿼리
    5.1. world.city*에서 * 선택 - 데이터베이스 이름 world에 있는 테이블 world에서 모든 항목을 선택합니다.
    5.2. INTO OUTFILE 'PATH\.csv' - 쿼리 결과를 언급된 파일에 씁니다.
    5.3. FIELDS TERMINATED BY ',' - 각 필드를 쉼표로 종료합니다(CSV와 유사한 구조의 경우).
    5.4. ENCLOSED BY '' - 각 필드를 ''로 묶습니다.
    5.5. LINES TERMINATED BY '\n' - 개행 문자로 각 줄을 종료합니다.

선호하는 위치에 이 쿼리를 저장하십시오. 가급적 .sh 형식을 사용하십시오.

이제 쿼리를 만들었으므로 쿼리를 예약된 작업으로 구현하는 단계로 넘어갈 수 있습니다.

크론 작업 생성

예약된 쿼리를 만들기 전에 cron 작업의 일반적인 구문을 살펴보겠습니다.

일반적인 구문은 다음과 같습니다.

a b c d e /path/script result
  1. a, b, c, de는 작업의 시간, 날짜 및 되풀이를 지정합니다.
  2. /path/script는 실행해야 하는 스크립트를 지정합니다.
  3. 결과 작업 완료에 대해 사용자에게 알리는 방법을 지정합니다(선택 사항).

Cron 작업의 시간 형식

cron 작업이 따르는 시간 형식을 살펴보겠습니다.

  1. [a] - 분을 의미하며 범위는 0에서 59 사이입니다.
  2. [b] - 시간을 나타내며 범위는 0에서 23 사이입니다.
  3. [c] - 날짜를 나타내며 범위는 0에서 31 사이입니다.
  4. [d] - 한 달을 의미하며 범위는 0(없음)에서 12(12월) 사이입니다.
  5. [e] - 요일을 나타내며 범위는 0(없음)과 7(일요일) 사이입니다.

Cron 작업 설정

cron 작업을 생성하려면 선호하는 텍스트 편집기로 crontab 구성 파일을 엽니다.

구성 파일을 열려면 터미널에 다음을 작성하십시오.

crontab -e

그리고 거기에 직업을 추가하십시오. 우리의 경우 구문은 다음과 같습니다.

0 7 * * * /tmp/back.sh

위의 cron 작업은 매일 오전 7시에 실행되어 city 테이블의 백업을 생성하고 원하는 위치에 저장합니다.

크론 작업을 추가한 후 파일을 저장하면 완료됩니다!

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn