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:
mysql
- MySQL binario a ejecutar para acceder a la base de datos--usuario=[usuario
- Nombre de usuario--contraseña=[contraseña]
- Contraseña--database=world
- Nombre de la base de datos para acceder y procesar,world
en este caso--execute="..."
- La consulta a ejecutar
5.1.Select * from world.city*
- Selecciona todas las entradas de la tablaworld
presente en el nombre de la base de datosworld
.
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
a
,b
,c
,d
ye
especifican la hora, la fecha y la recurrencia del trabajo./ruta/secuencia de comandos
especifica la secuencia de comandos que debe ejecutarseresultado
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.
[a]
- Representa un minuto, puede oscilar entre 0 y 59[b]
- Representa una hora, puede oscilar entre 0 y 23[c]
- Representa el día, puede oscilar entre 0 y 31[d]
- Representa un mes, puede oscilar entre 0 (ninguno) y 12 (diciembre)[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!
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