Prefacio:
entorno de desarrollo
Servidor: centos 7 (servidor ligero Tencent Cloud)
Base de datos: mysql 5.7
1. ¿Qué es crond?
crond es un proceso daemon utilizado en Linux para realizar periódicamente ciertas tareas o esperar a que se procesen ciertos eventos. Es similar a las tareas programadas en Windows. Después de instalar el sistema operativo, esta herramienta de servicio se instalará de forma predeterminada y se iniciará automáticamente. El proceso crond, el proceso crond verifica regularmente si hay una tarea para ejecutar cada minuto, y si hay una tarea para ejecutar, la tarea se ejecuta automáticamente.
2. Usar pasos
1. crond comandos de uso común
- Detectar si el servicio crond está instalado en el sistema
- descripción del comando de servicio crond
- service crond start //Iniciar el servicio
- service crond stop //Cerrar el servicio
- service crond restart //reinicia el servicio
- service crond reload //Recargar configuración
- service crond status //Ver el estado del servicio crontab
- crontab -e #Editar tarea de temporización crontab
- crontab -l #Consultar tareas crontab
- crontab -r #Eliminar todas las tareas crontab del usuario actual
- systemctl status crond.service #Ver el estado del servicio del sistema crond
1.1 Iniciar el servicio
inicio de crono de servicio
1.2 Añadir tarea
crontab -e
1.3 Comprobar si la tarea se ha añadido correctamente
crontab-l
2. formato de tarea programada crond
En el archivo crontab creado por el usuario, cada línea representa una tarea, y cada campo en cada línea representa una configuración. Su formato se divide en seis campos. Las primeras cinco secciones son secciones de configuración de tiempo, y la sexta sección es el segmento de comando. para ser ejecutado, el formato es el siguiente:
00 | 02 | * | * | * | /atrás.sh |
minuto | hora | día | mes | semana | dominio |
#定时脚本 下面的意思就是 每天的凌晨2点执行一次脚本 (根据自己的需求执行脚本)
00 02 * * * /usr/local/mysql/mysqlzip/back.sh
en:
- minuto: Indica el minuto, que puede ser cualquier número entero del 0 al 59.
- hora: Indica la hora, que puede ser cualquier número entero del 0 al 23.
- día: Indica la fecha, que puede ser cualquier número entero del 1 al 31.
- mes: Indica el mes, que puede ser cualquier número entero del 1 al 12.
- semana: Indica el día de la semana, que puede ser cualquier número entero del 0 al 7, donde 0 o 7 representa el domingo.
- comando: el comando a ejecutar, que puede ser un comando del sistema o un archivo de script escrito por usted mismo.
Nota: La ruta del script debe ser la ruta completa del script (ruta completa: la ruta obtenida a través del comando pwd)
3. Escribir guiones
- Modificación 1: nombre de usuario de la base de datos
- Modificación 2: contraseña de la base de datos
- Modificación 3: nombre de la base de datos
- Modificación 4: ubicación de almacenamiento de archivos de copia de seguridad
- Modificación 5: la dirección del archivo de mysqldump (puede usar whereis mysqldump para consultar la ubicación de mysqldump)
- Modificación 6: más de 7 archivos eliminan los primeros archivos respaldados y cambian de acuerdo con sus necesidades reales; el propósito de agregar es evitar que demasiadas copias de seguridad ocupen demasiado espacio de almacenamiento.
#!/bin/bash
echo '##########################################'
echo '###### The database is automatically backed up at 01:00 am every day ######'
echo '##########################################'
# Setting environment variables
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# $(date +%Y%m%d)
# 数据库用户名
USERNAME=修改1
# 密码
PASSWORD=修改2
# 要备份的数据库
DB=修改3
# Docker容器ID
#DOCKERID=********
# ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。
# Linux服务器上备份文件目录 修改4
DIR=/usr/local/mysql/mysqlzip
echo 'Get system date: ' $DATE
if [ ! -d "$DIR" ]; then
mkdir $DIR
fi
cd $DIR
echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")
# 使用docker进入mysql容器,执行mysqldump备份数据库文件
# docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称
#docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DB | gzip > $DIR/$DB_$DATE.sql.gz
# 备份 直接安装在 linux 系统中的数据库 修改5
/usr/local/mysql/bin/mysqldump -u$USERNAME -p$PASSWORD $DB | gzip > $DIR/$DB_$DATE.sql.gz
# just backup the latest 7 days
#保留最近文件数7,删除其它多余的文件 修改6 (也可以去掉 主要为了防止备份太多占用太多存储)
ReservedNum=7
date=$(date "+%Y%m%d-%H%M%S")
FileNum=$(ls -l $DIR|grep ^- |wc -l)
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt $DIR| head -1)
echo $date "Delete File:"$OldFile
rm -rf $DIR/$OldFile
let "FileNum--"
done
echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")
3.1 Detectar y ejecutar el script sh recién escrito
otorgar permisos, ejecutar
chmod 777 back.sh
Luego prueba ejecutar el script sh
./back.sh
Resumir
Con crontab, no hay necesidad de preocuparse por olvidarse de hacer una copia de seguridad de la base de datos.