Trabajo cron de MySQL

Salman Mehmood 20 junio 2023
  1. Trabajo cron de MySQL
  2. Hacer una copia de seguridad de la tabla
  3. Crear el trabajo cron
Trabajo cron de MySQL

El objetivo principal de este artículo es demostrar cómo programar una consulta escrita en MySQL y ejecutarla después de un tiempo fijo usando Cron Jobs.

Trabajo cron de MySQL

Cuando se manejan grandes cantidades de datos, una determinada tarea puede repetirse.

Puede ser cualquier cosa y depende del contexto de la tarea; los ejemplos incluyen eliminar entradas de una tabla después de una cierta cantidad o hacer copias de seguridad programadas guardando la copia de la base de datos en la máquina local; las posibilidades son ilimitadas.

Considere la siguiente tabla:

+------+---------------+-------------+----------------------+------------+
| 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 |
+------+---------------+-------------+----------------------+------------+

En aras de la simplicidad, supongamos que la siguiente tabla, que almacena datos sobre varias ciudades del mundo, se actualiza regularmente; la situación exige que haya una copia de seguridad de la tabla en la máquina local antes de que la tabla se actualice con regularidad.

Para lograr eso, podemos usar trabajos cron para ejecutar una consulta, lo que hace que la copia de seguridad de la tabla sea regular. Veamos cómo podemos lograr eso usando trabajos cron.

Hacer una copia de seguridad de la tabla

Antes de saltar a la parte del programa, creemos la consulta que nos permitirá hacer una copia de seguridad de esta tabla específica.

Considere la siguiente consulta:

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'"

Aquí hay un resumen de lo que está sucediendo en la consulta:

  1. mysql - MySQL binario a ejecutar para acceder a la base de datos
  2. --usuario=[usuario - Nombre de usuario
  3. --contraseña=[contraseña] - Contraseña
  4. --database=world - Nombre de la base de datos para acceder y procesar, world en este caso
  5. --execute="..." - La consulta a ejecutar
    5.1. Select * from world.city* - Selecciona todas las entradas de la tabla world presente en el nombre de la base de datos world.
    5.2. INTO OUTFILE 'PATH\.csv' - Escribe el resultado de la consulta en el archivo mencionado.
    5.3. CAMPOS TERMINADOS POR ',': termine cada campo con una coma (para una estructura similar a CSV)
    5.4. ENCLOSED BY '' - Encierra cada campo con ''
    5.5. LÍNEAS TERMINADAS POR '\n' - Termina cada línea con un carácter de nueva línea

Guarde esta consulta en algún lugar de su ubicación preferida, preferiblemente con el formato .sh.

Ahora que hemos creado la consulta, podemos pasar a implementar la consulta como una tarea programada.

Crear el trabajo cron

Antes de crear la consulta programada, veamos la sintaxis general de un trabajo cron.

La sintaxis general se encuentra a continuación.

a b c d e /path/script result
  1. a, b, c, d y e especifican la hora, la fecha y la recurrencia del trabajo.
  2. /ruta/secuencia de comandos especifica la secuencia de comandos que debe ejecutarse
  3. resultado especifica cómo se notifica al usuario sobre la finalización del trabajo (Opcional)

Formato de hora de los trabajos cron

Echemos un vistazo al formato de hora que siguen los trabajos cron.

  1. [a] - Representa un minuto, puede oscilar entre 0 y 59
  2. [b] - Representa una hora, puede oscilar entre 0 y 23
  3. [c] - Representa el día, puede oscilar entre 0 y 31
  4. [d] - Representa un mes, puede oscilar entre 0 (ninguno) y 12 (diciembre)
  5. [e] - Representa el día de la semana, puede variar entre 0 (Ninguno) y 7 (Domingo)

Configurar el trabajo cron

Para crear un trabajo cron, abra el archivo de configuración crontab con su editor de texto preferido.

Para abrir el archivo de configuración, escribe lo siguiente en tu terminal:

crontab -e

Y agregue su trabajo allí; en nuestro caso, la sintaxis sería la siguiente:

0 7 * * * /tmp/back.sh

El trabajo cron anterior se ejecutará todos los días a las 7 a. m., creando una copia de seguridad de la tabla de la ciudad y guardándola en la ubicación deseada.

Después de agregar el trabajo cron, guarde el archivo y ¡listo!

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